web-dev-qa-db-ja.com

.tar.bz2または.tar.xzファイルを解凍できないのはなぜですか?

OpenBSDのソースからビルドしようとすると、ファイルの解凍で問題が発生しました。最初はファイルが破損しているだけだと思っていましたが、その後、さまざまなプログラムやさまざまなダウンロード方法(curl -O、FTP、WindowsにダウンロードしてWinSCP経由で転送)、さらには同じプログラムの異なるファイル(.xz.bz2.lz)私は何か間違ったことをしているに違いないと信じるようになりました。使用時に発生するエラー

tar xzvf file

です

gzip: stdin: unrecognized file format
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.

それは、さまざまなプログラム、さまざまなダウンロード方法、さらにはさまざまなファイルで発生しており、これは私を夢中にさせています。

現在解凍できないファイルの例:gnutls-3.4.3.tar.xzおよびgmp-6.0.0a.tar.bz2 Windows経由でダウンロードされ、WinSCPバイナリモード経由で転送されます。

ls -L出力:

-rw-r--r--   1 root  wheel  6546268 Jul 12 09:18 gnutls-3.4.3.tar.xz
-rw-r--r--   1 root  wheel  2319400 Jul 24  2015 gmp-6.0.0a.tar.bz2

od -x出力:

od -x gnutls-3.4.3.tar.xz | head -10
0000000     37fd    587a    005a    0400    d6e6    46b4    0002    0121
0000020     0016    0000    2f74    a3e5    00e8    f06d    5d02    3300
0000040     8b9b    1912    a356    72d2    a129    5502    49fb    f64d
0000060     c492    64da    be73    7fde    4d79    9170    c055    27b9
0000100     8fc9    6caa    3f02    b551    e014    fd24    a2ad    c57d
0000120     ce49    59f3    da73    0ee9    0319    b7ea    c55c    5e2e
0000140     8fd8    7af6    4f97    b1a8    1ac9    d553    a703    1f1d
0000160     b226    682e    3e00    d2bc    a0f8    4b57    13d0    f887
0000200     7f84    c83f    94cd    154b    1dfe    37cd    25db    13d9
0000220     cdcd    5861    6558    acc3    0103    21ed    e8d9    979d

私のtarはJをオプションとして認識していないようです:

tar xJvf gmp-5.1.3.tar.xz
tar: unknown option J

そして、2番目のコマンドからのエラー出力:

tar xjvf gmp-6.0.0a.tar.bz2
tar: could not exec bzip2: No such file or directory
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.

より有用なエラー出力:

tar xvf gnutls-3.4.3.tar.xz
tar: Cannot identify format. Searching...
tar: Cpio file name length 36039 is out of range
tar: Invalid header, starting valid header search.
tar: Cpio file name length 63118 is out of range
tar: Cpio file name length 38744 is out of range
<suppressed similar errors>
tar: Cpio file name in header is corrupted
tar: Cpio file name length 46161 is out of range
tar: Cpio file name length 32085 is out of range
<suppressed similar errors>
tar: Cpio file name in header is corrupted
<more suppressed similar errors>
tar: End of archive volume 1 reached
7
Freedo

zオプションは、targunzip(またはその内部の同等のもの)を使用してアーカイブを解凍するように指示し、gzipで圧縮されたアーカイブにのみ適切です。 .tar.gz拡張。

他の圧縮形式を使用してアーカイブを解凍するには、

tar xvf file

あなたのtarが自分で物事を理解できるほど賢いかどうかを確認します。そうでない場合は、使用する解凍ツールに指示するか、アーカイブを解凍してパイプで送ることができます。

  • .tar.bz2の場合:tar xjvf fileまたはbunzip2 -c file | tar xvf -
  • .tar.xzの場合:tar xJvf fileまたはxzcat file | tar xvf -
  • .tar.lzの場合:tar xjf file --lzipまたはlunzip -c file | tar xvf -

使用しているファイル:

tar xJvf gnutls-3.4.3.tar.xz
tar xjvf gmp-6.0.0a.tar.bz2

またはどうやらOpenBSDでtar

xzcat gnutls-3.4.3.tar.xz | tar xvf -
bunzip2 -c gmp-6.0.0a.tar.bz2 | tar xvf -

xzおよびbunzip2がインストールされていることを確認する必要があります。 bunzip2bzip2と一緒にパッケージ化できます。

12
Stephen Kitt