Linux Alpineで「tar:無効なマジック」エラーを解決する方法


22

Alpine Linuxにsqliteをインストールしています。ダウンロードしましsqlite-autoconf-3130000.tar.gztarが、開けませんでした。この答えを試しましが、うまくいきません。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

実行しようとしたコマンド(およびその引数)で回答を更新してください。
-DarkHeart

1
ダウンロードは正常に完了しましたか?もしそうならls -l sqlite-autoconf-3090100.tar.gz、ファイルのサイズが2284128バイトであることを教えてください。
スティーブンキット

また、現在はgzip形式のファイルですか?いくつかのブラウザはオンザフライで解凍します。つまり、sqlite-autoconf-3090100.tar.gzという名前が付けられている場合がありますが、実際には内容はsqlite-autoconf-3090100.tarである可能性があります。wgetが同様に賢いことをするかどうかはわかりませんがz、tarからフラグを残すことで簡単にテストできます。
ヘネス

回答:


21

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


3
Dockerfileでtarコマンドを実行し、tarのインストールがうまくいったときに、同じ問題に遭遇しました。コンテナ内のシェルでコマンドを実行すると機能するため、混乱を招きます。ただし、最初にtarをインストールせずにDockerfileでRUNコマンドを実行する場合はそうではありません。:|
チーズホイール

7

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

curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfDockerfileで実行中にこれに遭遇しました。

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


0

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

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

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

0

同じ問題を見つけて解決しましたが、同じ問題に直面しているのかどうかわかりません。

エラーの原因となったコード:

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 ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.