2010-07-25 14 views
16

Nach dem Ausführen von make distcheck bekomme ich die Nachricht, dass ich das Paket erfolgreich erstellt habe und bereit für die Verteilung ist. Wenn ich die tar.gz mit tar -zxvf hello-0.2.tar.gz entpacken, extrahiert es erfolgreich seinen gesamten Inhalt. Jedoch, wenn ich versuche, sie in verschiedenen Maschinen zu extrahieren, bekomme ich:Autotools - tar Dies sieht nicht wie ein tar-Archiv aus

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

Die komische Sache ist, dass es vorher arbeitete.

Auf der Maschine, die ich versuche, das Paket zu bauen, habe ich meine automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23 aktualisiert und immer noch das gleiche Problem.

Irgendwelche Ideen, was könnte das Problem sein?

+8

Funktioniert dies: 'gzip -d hello-0.2.tar.gz' gefolgt von:' tar -xf hello-0.2.tar' – SiggyF

+1

@SyggyF: Es funktioniert tatsächlich. Irgendwelche Ideen, warum dieser Weg funktioniert und nicht der andere? – denim69

Antwort

14

Das Problem ist nicht auf der Build-Maschine; Das Problem liegt auf den Zielmaschinen.

Nicht alle Versionen von tar erkennen automatisch die Dekomprimierung für eine komprimierte Datei tar. Vorausgesetzt, dass gunzip gefolgt von tar funktioniert, dann ist die tar auf Ihrer Zielmaschine eine solche. Die Versionen von tar auf den Mainstream-Unix-Systemen (AIX, HP-UX, Solaris) erkennen komprimierte TAR-Dateien nicht automatisch. Diejenigen unter Linux und MacOS X tun dies.

Beachten Sie, dass Sie verwenden können:

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

zu vermeiden, dass die Zwischen unkomprimierten Datei.

+0

1. Ist der Bindestrich am Ende nur ein Tippfehler oder tut er etwas? 2. Bei dieser Methode bekomme ich den Fehler 'tar: Archiv ist komprimiert. Verwenden Sie die Option -z '' tar: Fehler ist nicht wiederherstellbar: Jetzt beenden'. Wenn ich '-z' hinzufüge, gibt es mir' tar: -z: Kann nicht öffnen: Keine solche Datei oder dieses Verzeichnis'. – lindhe

+0

(1) Der Bindestrich am Ende gibt an, dass die Eingabedatei die Standardeingabe ('-f -') ist. (2) Sie haben möglicherweise eine doppelt komprimierte Datei, obwohl es etwas unwahrscheinlich ist. Sie könnten 'gunzip hallo-0.2.tar.gz' ausprobieren und dann' file hello-0.2.tar' verwenden, um zu sehen, welchen Dateityp es für Sie hält. Welche Version von 'tar' benutzt du, die erkennt, dass das Archiv komprimiert ist, es aber nicht dekomprimiert? Wenn Sie 'tar -xzf -' verwenden, könnten Sie OK sein. Wenn Sie 'tar -xf -z' verwenden, sagen Sie' tar', dass die zu extrahierende Datei '-z' ist. –

4

Eigentlich könnte dies geschehen, wenn der Server, von dem Sie herunterladen, eine weitere Runde von GZip anwendet und der Client, den Sie zum Herunterladen der Datei verwendet haben, den HTTP-Header nicht liest/speichert und die HTTP-Nutzdaten so speichert, wie sie auf dem Draht waren. Die Datei scheint nur die Erweiterung .tar.gz zu haben. Nachdem Sie die gunzip einmal ausführen, erhält die Datei die Erweiterung .tar nur, aber immer noch dieses Mal läuft das tar-Kommando tar xf hello-0.2.tar erkennt das GZip-Format und implizit führt die Datei durch gunzip noch einmal vor dem Extrahieren.

Sie können dies überprüfen, indem Sie head hello-02.tar.gz und head hello-02.tar ausführen. GZip ist ein sehr binäres Format, während tar ziemlich menschlich lesbar ist. Wenn die .tar-Datei "zu binär" angezeigt wird, liegt eine doppelt codierte Datei vor.

+1

Genau mein Problem. Danke vielmals :) – franzlorenzon