Jak rozwiązać błąd „tar: invalid magic” w systemie Linux Alpine

22

Instaluję sqlite na Alpine Linux. Pobieram, sqlite-autoconf-3130000.tar.gzale tarnie mogę go otworzyć. Próbowałem tej odpowiedzi, ale nie działa. tardaje ten komunikat:

tar: invalid magic
tar: short read

Napisałem te polecenia.

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz
światło dzienne
źródło
Czy możesz zaktualizować swoją odpowiedź poleceniem (i jego argumentami), które próbujesz uruchomić.
DarkHeart,
1
Czy pobieranie zakończyło się pomyślnie? Jeśli tak, ls -l sqlite-autoconf-3090100.tar.gzpowinien powiedzieć, że plik ma rozmiar 2284128 bajtów.
Stephen Kitt,
Ponadto, czy jest to obecnie plik w formacie gzip? Niektóre przeglądarki wykonują dekompresję w locie, co oznacza, że ​​nadal może nazywać się sqlite-autoconf-3090100.tar.gz, ale zawartość może być w rzeczywistości sqlite-autoconf-3090100.tar. Nie mam pojęcia, czy wget robi równie inteligentne rzeczy, ale można to łatwo przetestować, pozostawiając zflagę ze smoły.
Hennes,

Odpowiedzi:

21

Spróbuj zainstalować pakiet tar (apk dodaj tar). Tar Busybox (domyślnie) nie obsługuje wszystkich funkcji.

Jakub Jirutka
źródło
3
Ten sam problem napotkałem, gdy uruchomiłem polecenie tar w pliku Docker i instalacja tar działała dla mnie. Jest to trochę mylące, ponieważ jeśli uruchomisz polecenie w powłoce w kontenerze, zadziała. Ale nie, jeśli jest to polecenie RUN w Dockerfile bez uprzedniej instalacji tar. : |
3cheesewheel,
7

Nie musi to oznaczać, że alpejska wersja tarjest niezgodna, jak zauważył Francesco, że naprawdę powinieneś sprawdzić sumy kontrolne plików.

curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfNatknąłem się na to podczas robienia w moim Dockerfile.

Okazuje się, że zapomniałem, że curlbędzie podążał za przekierowaniami tylko wtedy, gdy na to zezwolisz -L, a więc nigdy nie dotarł do rzeczywistego pliku, dosłownie pobierał html informujący, że było przekierowanie. Dodanie -Lpozwoliło mi zapisać plik bez nadmuchiwania mojego kontenera nowym tar(poza dodanym przez „wzdęcie” curl).

dragon788
źródło
0

tar: niepoprawna magia oznacza, że ​​plik jest uszkodzony.

Sprawdź sumę md5, jeśli pasuje ... oto co otrzymałem:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz
Francesco Colista
źródło
0

Mam ten sam problem i rozwiązałem go, ale nie jestem pewien, czy masz do czynienia z tym samym problemem.

Kod powodujący błąd :

wget www.example.com/file.tar.gz
tar -zxvf file.tar.gz

Kod, który to rozwiązał :

wget https://www.example.com/file.tar.gz
tar -zxvf file.tar.gz

Zauważ, że zapomniałem „https: //”, w którym plik został pobrany, ale tar dał mi ten sam błąd. Jeśli plik nie zostanie znaleziony, upewnij się, że używasz

kompilacja dokera - no-cache ...

Ryan Augustine
źródło