web-dev-qa-db-ja.com

Linux Alpineで「tar:invalid magic」エラーを解決する方法

Alpine Linuxにsqliteをインストールしています。ダウンロードsqlite-autoconf-3130000.tar.gztarが開けませんでした。私はこれを試しました answer が動作しません。 tarは次のメッセージを表示します:

tar: invalid magic
tar: short read

これらのコマンドを書きました。

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz
27
daylight

Tarパッケージをインストールしてみてください(apk add tar)。 Busybox tar(デフォルト)はすべての機能をサポートしているわけではありません。

22
Jakub Jirutka

Francescoがファイルチェックサムを実際にチェックする必要があると指摘したため、これは必ずしもtarのアルパインバージョンに互換性がないことを意味しません。

Dockerfileでcurl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfを実行しているときに、これに遭遇しました。

私が忘れていたのは、curl-Lで許可した場合にのみリダイレクトをたどることでした。そのため、実際のファイルに到達することはなく、文字通りHTMLをダウンロードしてそこに通知していました。リダイレクトでした。 -Lを追加すると、新しいtarcurlによって追加された「膨張」を超えて)でコンテナを肥大化することなくファイルを保存できました。

9
dragon788

tar:invalid magicは、ファイルが破損していることを意味します。

一致する場合はmd5sumを確認してください...これは私が得たものです:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz
0

dockerでAlpineを使用する場合、COPYはビルド時に解凍されるため、コンテナファイル(ADD)ではDockerfileではなくADDを使用することを表明してください。層

アルパインのデフォルトtar しないヒントを与える

tar (child): sqlite-autoconf-3090100.tar.gz: Cannot read: Is a directory
tar (child): At beginning of tape, quitting now
tar (child): Error is not recoverable: exiting now
0
childno͡.de

同じ問題が発生して解決しましたが、同じ問題が発生していることはわかりません。

そのコード原因となるエラー

wget www.example.com/file.tar.gz
tar -zxvf file.tar.gz

解決済みそれをコーディングする:

wget https://www.example.com/file.tar.gz
tar -zxvf file.tar.gz

「https://」を忘れてしまったことに注意してください。ファイルはダウンロードされましたが、tarで同じエラーが発生しました。ファイルが見つからない場合は、必ず使用してください

docker build -no-cache ...

0
Ryan Augustine