17

実行するmake distcheckと、パッケージが正常にビルドされ、配布の準備ができたというメッセージが表示されます。を解凍するtar.gztar -zxvf hello-0.2.tar.gz、すべてのコンテンツが正常に抽出されます。ただし、別のマシンでそれらを抽出しようとすると、次のようになります。

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

奇妙なことは、以前は機能していたことです。

パッケージをビルドしようとしているマシンで、更新しましたがautomake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23、それでも同じ問題が発生します。

何が問題になる可能性がありますか?

4

2 に答える 2

17

問題はビルド マシンではありません。問題はターゲット マシンにあります。

のすべてのバージョンが、圧縮ファイルtarに適用する解凍を自動的に認識するわけではありません。続いて動作することtarを考えると、ターゲットマシン上の はそのようなものです。主流の Unix システム (AIX、HP-UX、Solaris) 上の のバージョンは、圧縮された tar ファイルを自動的に認識しません。Linux と MacOS X の場合はそうです。gunziptartartar

以下を使用できることに注意してください。

gzip -dc hello-0.2.tar.gz | tar -xf -

中間の非圧縮ファイルを作成しないようにします。

于 2012-01-10T07:40:49.613 に答える
5

実際、これは、ダウンロード元のサーバーが GZip の別のラウンドを適用し、ファイルのダウンロードに使用したクライアントが HTTPContent-Encodingヘッダーを読み取ったり尊重したりせず、HTTP ペイロードをそのままネットワークに保存した場合に発生する可能性があります。

ファイルには拡張子しかないように見えます.tar.gzが、実際には.tar.gz.gz. を実行した後gunzip、ファイルは拡張子.tarのみを取得しますが、今回はtarコマンドを実行するtar xf hello-0.2.tarとGZip形式が認識され、解凍する前にもう一度gunzipを介して暗黙的にファイルが実行されます。

head hello-02.tar.gzこれは、およびを実行して確認できますhead hello-02.tar。GZip は非常にバイナリ形式ですが、tar は人間が読める形式です。.tar ファイルが「バイナリすぎる」ように見える場合は、二重にエンコードされたファイルが手元にあります。

于 2013-01-15T23:54:42.053 に答える