In quali circostanze funziona gunzip e tar xf ma tar xzf fallisce?


9

Per illustrare il punto: ho scaricato la libreria LEDA dal sito Web dell'azienda . L'uso di tar -xzf su di esso fallisce:

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.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

Tuttavia, gunzip seguito da tar -xf funziona bene:

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

Qualcuno può dirmi perché questo potrebbe essere? - Vorrei che il tarcomando standard funzionasse continuamente.


Quale sistema operativo? IIRC ci sono Unix con un tarche non implementa -z
Bananguin il

@ user1129682 Dal sito dell'azienda, sembra che abbia solo opzioni per Linux e Win ...
MattDMo

Se il tuo tar non supporta z, usa invece una pipe: gunzip < archive.tar.gz | tar -xdovrebbe funzionare ovunque.
frostschutz,

Se la copia di tarnon supporta gunzip di decompressione, è possibile effettuare le seguenti operazioni, invece: gunzip -c $file | tar -x. È comune racchiuderlo in una funzione shell.

1
Ho appena scaricato quell'archivio e in effetti tar xzfdà un errore su Debian GNU / Linux (che ovviamente usa gnutar). Dispari.
derobert,

Risposte:


12

Quello che sembra essere successo è che hanno compresso due volte l'archivio.

Se corri filesul tuo file gunzip, troverai ancora un archivio gzip. E se lo rinomini per avere di nuovo .gz, puoi sparare di nuovo.

Sembra che recentemente gnu tar aggiungerà automaticamente l' -zopzione, a condizione che l'input sia un file. Quindi, è per questo che funziona senza l' -zopzione dopo che avresti già eseguito gunzipuna volta, tar lo ha aggiunto automaticamente.

Questo comportamento è documentato, dalla pagina delle informazioni:

"La lettura dell'archivio compresso è ancora più semplice: non è necessario specificare ulteriori opzioni poiché GNU` tar 'riconosce automaticamente il suo formato. [...] L'algoritmo di riconoscimento del formato si basa su "firme", una sequenza di byte speciali nella inizio del file, specifico per determinati formati di compressione. "

Viene dal §8.1.1 "Creazione e lettura di archivi compressi".


Molto ben individuato! Confermato con tutte le combinazioni di gunzip e tar.
Michael Schubert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.