Warum kann ich keine .tar.bz2- oder .tar.xz-Dateien entpacken?

7

Ich habe ein Problem beim Entpacken von Dateien, wenn ich versuche, auf meinem OpenBSD aus dem Quellcode zu erstellen. Zuerst dachte ich, es seien nur beschädigte Dateien, aber nachdem es vielen verschiedenen Programmen und verschiedenen Download-Methoden ( curl -O, FTP, Download unter Windows und Übertragung über) passiert ist WinSCP) und sogar verschiedene Dateien des gleichen Programms ( .xz, .bz2, .lz) ich kam zu glauben , ich muss etwas falsch machen. Der Fehler, den ich bei der Verwendung bekomme

tar xzvf file

ist

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

Es passiert mit verschiedenen Programmen, mit verschiedenen Download-Methoden und sogar verschiedenen Dateien, und das macht mich verrückt.

Beispiele für Dateien, die ich derzeit nicht entpacken kann: gnutls-3.4.3.tar.xzund gmp-6.0.0a.tar.bz2über Windows heruntergeladen und über den WinSCP-Binärmodus übertragen.

ls -L Ausgabe:

-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 Ausgabe:

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

Mein Teer scheint nicht einmal Jals Option zu erkennen:

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

Und Fehlerausgabe vom zweiten Befehl:

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.

Nützlichere Fehlerausgabe:

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
Freedo
quelle
Schlagen Sie vor, ein Beispiel für eine heruntergeladene Datei anzugeben. Remote-URL, Ausgabe von "ls -l Dateiname", Ausgabe von "od -x Dateiname | Kopf -10".
Steve
Ich mache das als root, ich glaube nicht, dass es ein Berechtigungsproblem ist ... trotzdem werde ich tun, was du gesagt hast
Freedo

Antworten:

12

Die zOption weist taran, ein Archiv mithilfe gunzip(oder seiner internen Entsprechung) zu dekomprimieren , und ist nur für gzipkomprimierte Archive geeignet , normalerweise mit einer .tar.gzErweiterung.

Sie können versuchen, Archive mit anderen Komprimierungsformaten zu dekomprimieren

tar xvf file

um zu sehen, ob Sie tarklug genug sind, um die Dinge selbst herauszufinden. Wenn dies nicht der Fall ist, können Sie entweder angeben, welches Dekomprimierungswerkzeug verwendet werden soll, oder das Archiv dekomprimieren und weiterleiten:

  • für .tar.bz2: tar xjvf fileoderbunzip2 -c file | tar xvf -
  • für .tar.xz: tar xJvf fileoderxzcat file | tar xvf -
  • für .tar.lz: tar xjf file --lzipoderlunzip -c file | tar xvf -

Mit den Dateien, die Sie verwenden:

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

oder anscheinend mit OpenBSD tar:

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

Sie müssen sicherstellen, dass Sie haben xzund bunzip2installiert haben; bunzip2kann verpackt werden mit bzip2.

Stephen Kitt
quelle
bunzip2 ist fehlgeschlagen, anscheinend habe ich es nicht installiert und konnte es nicht auf einem Paketspiegel von OpenBSD finden. Ich konnte gnutls auspacken, danke!
Freedo
Woher weiß ich, ob ich mit FTP oder Curl -O herunterladen soll? Kann dies eine Datei beschädigen? Und brauche ich die X-Berechtigung zum Entpacken von Dateien (ich habe festgestellt, dass niemand die Berechtigung hatte, sie auch auszuführen)?
Freedo
Es könnte verpackt sein als bzip2... Gern geschehen!
Stephen Kitt
Es ist unwahrscheinlich, dass Sie eine Datei mit FTP oder beschädigen curl. (Das einzige echte Problem ist der ASCII-Modus mit FTP.) Es gibt keine Berechtigung zum Entpacken von Dateien. Sie müssen lediglich in der Lage sein, das Archiv zu lesen und in den Ordner zu schreiben, in den Sie entpacken.
Stephen Kitt