So extrahieren Sie eine .tar.gz-Datei mit md5.sum unter Solaris 10 korrekt

So extrahieren Sie eine .tar.gz-Datei mit md5.sum unter Solaris 10 korrekt

Ich versuche, eine gcc-4.9.0.tar.gz-Datei zu extrahieren, die ich von einer der GCC-Mirror-Sites heruntergeladen habe. Um die MD5-Signatur zu überprüfen, bevor ich sie mit Gunzip entpacke, habe ich

digest -a md5 -v gcc-4.9.0.tar.gz

was gab

md5 (gcc-4.9.0.tar.gz) = fe8786641134178ecfeee2dc7644a0d8

Dies stimmt mit der md5.sum im Verzeichnis überein, das aus der Quelle heruntergeladen wurde.

Dann habe ich

gzip -dc gcc-4.9.0.tar.gz | tar xvf -

Die Extraktion begann, endete aber bald mit einem

 tar: directory checksum error

Ich habe auch versucht, Gunzip und Untar separat wie folgt zu verwenden:

 gunzip gcc-4.9.0.tar.gz

Dann

tar -xvf gcc-4.9.0.tar

aber es endete auch mit einem Prüfsummenfehler.

Bitte, wie kann ich das lösen?

Antwort1

Es scheint, dass das Tar-Archiv defekt oder nicht standardkonform ist.

Beachten Sie, dass ich das Archiv als BZ2-Image abgerufen habe und keine Probleme bei der Verwendung hatte bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -.

Das entpackte Archiv hat die MD5-Prüfsumme: 6b8f599053a52e7c2076485d1ad3e747.

Ich hole jetzt die GZ-Datei, mal sehen, was ich bekomme …

OK, hier ist die MD5-Prüfsumme von gcc-4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8, die dieselbe ist, die Sie sehen.

Beachten Sie, dass Ihr Problem normalerweise auftritt, wenn das Archiv von erstellt wurde gtar, in seltenen Fällen jedoch zu einem führt directory checksum error.

Wenn Sie besser verstehen möchten, was vor sich geht, empfehle ich Ihnen, das tartestmitgelieferte Programm zu verwenden star.

Holen Sie sich die neuesten Informationen schilytoolsvon:

http://sourceforge.net/projects/schilytools/files/

Kompilieren und führen Sie dann das Programm aus tartest/OBJ/*/tartest < gcc-4.9.0.tar.

Ich habe dies getan und festgestellt, dass der Grund darin liegt, dass das Archiv in einem Tar-Header einen GNU-anbieterspezifischen „Dateityp“ „L“ verwendet.

WICHTIG: Wenn GNU tar halbwegs standardkonform oder zumindest halbwegs fehlerfrei wäre, wäre dieses Problem nicht aufgetreten, da der fragliche Dateiname perfekt in das Namensschema POSIX.1-1988 100+255 passte. Dies ist also ein weiterer Hinweis darauf, warum man die Verwendung von GNU tar ganz vermeiden sollte.

Ich empfehle die Verwendung star.

Jedes einzelne Feature starwird vollständig durch eine Eigenschaftsbeschreibungsstruktur gesteuert. Wenn Sie ein Archivformat angeben, starwird niemals Archivinhalt erstellt, der sich auf ein anderes Archivformat bezieht.

Rufen Sie beispielsweise an:

star -c -f out.tar -Hustar somedir

starverwendet ein 100 % kompatibles POSIX.1-1988-Archivformat und schreibt im Falle einer Datei, die nicht in dieses Archivformat passt, stareine Warnung, anstatt die Datei mit nicht standardmäßigen Methoden zu archivieren.

Übrigens: Hier ist der Änderungssatz, in dem Sun die Unterstützung für diese anbieterspezifische Funktion hinzugefügt hat:

changeset:   11995:caff1bd711f5 
user:        Rich Burridge <[email protected]> 
date:        Thu Mar 25 13:21:39 2010 -0700 

description: 
        6202362 Solaris tar can't unpack files created with GNU tar 

modified: 
   usr/src/cmd/tar/tar.c 

Antwort2

Sie müssen gtar verwenden, es ist normalerweise mit dem Paket SUNWgtar vorinstalliert:

gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0

Natives, ungepatchtes Solaris-Tar kann Probleme mit Dateien haben, die mit GNU-Tar erstellt wurden. Siehe die Antwort von @schily, warum.

verwandte Informationen