Kiedy biegnę:
tar -zxvf john-1.7.0.2.tar.gz
Rozumiem:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Powinien rozpocząć rozpakowywanie.
Niektórzy mówili mi, żebym nie używał, z
ale pojawia się ten sam błąd.
To plik, który pobrałem w ten sposób:
wget http://openwall.com/john/f/john-1.7.0.2.tar.gz
john-1.7.0.2.tar.gz: HTML document, ASCII text, with very long lines
Odpowiedzi:
Diagnozowanie pobranego pliku niewłaściwego typu
Jak mówi steeldriver , oznacza to, że plik tak naprawdę nie jest plikiem spakowanym gzipem - lub jakimkolwiek innym plikiem spakowanym gzipem - pomimo tego, że ma taką nazwę.
Podczas pobierania pliku
wget
często pojawiają się oznaki, że otrzymałeś inny rodzaj pliku niż to, czego szukałeś:W tym przypadku głównymi znakami są:
301 Moved Permanently
Wiadomość, przekierowanie do adresu z oznaczeniami/
. Spowoduje to załadowanie domyślnej strony dla jakiegoś katalogu na serwerze, który zwykleindex.html
i prawie zawsze jest plikiem HTML.Length: unspecified [text/html]
, informując, że otrzymujesz zwykły tekst (text
) i że ma on być interpretowany jakohtml
. To naprawdę coś więcej niż znak - możesz być całkiem pewien, że nie otrzymałeś na podstawie tego prawdziwego pliku spakowanego gzipem.Możesz także skorzystać z
file
narzędzia, które sprawdza plik i informuje, jaki to plik:I oczywiście można sprawdzić samemu plik za pomocą narzędzi takich jak
head
,less
orazview
:Gdyby to był naprawdę plik binarny, dostałbyś całą masę bezsensownych śmieci, ponieważ jakikolwiek pager lub przeglądarka bezowocnie próbuje interpretować coś jako zwykły tekst, który tak naprawdę nie jest. Na przykład w poprawnym pliku:
(Skopiowałem dopiero początek.)
Uzyskiwanie właściwego pliku
To mówi, jak dowiedzieć się, co poszło nie tak w tych sytuacjach (aw tym przypadku w szczególności). Ale jak znaleźć i pobrać właściwy plik?
Zależy to od sytuacji. Jednak dobrym początkiem jest:
Przejdź do oficjalnej strony oprogramowania i sprawdź, czy zawierają linki do pobrania. Nawet jeśli tak otrzymałeś link, którego pierwotnie używasz, jeśli minie trochę czasu, może się okazać, że link się zmienił.
Na przykład w tym konkretnym przypadku bieżąca wersja to 1.8.0 zamiast 1.7.0.2 (i podana w
j
podkatalogu zamiastf
), a stara wersja nie jest już dostępna pod tym samym adresem URL.Przejdź do strony, na którą zostałeś przekierowany podczas pobierania pliku. W tym przypadku jest to: http://www.openwall.com/john/
Lub możesz nawet zbadać pobrany plik. (Lub otwórz go w przeglądarce internetowej).
Nastąpiło przekierowanie do głównej strony pobierania oprogramowania . Możesz pobrać w przeglądarce internetowej lub skopiować poprawny bieżący link do pobrania i pobrać go za pomocą
wget
. Istnieje kilka opcji, ale zakładając, że w rzeczywistości nie potrzebują tej konkretnej starą wersję ty próbujesz pobrać, a na podstawie pliku określonego ty zrobił próbę pobrania, podejrzewam http://openwall.com/john/j/ john-1.8.0.tar.gz jest tym, czego szukasz.Oczywiście czytelnicy, którzy znajdą ten post później, mogą uznać, że ten link już nie działa. Ale przedstawione tutaj podejście do rozwiązywania tego rodzaju problemów pozostanie aktualne.
Pobrałem plik. Zauważ, że tym razem nie nastąpiło żadne niepożądane przekierowanie, a typ jest podany jako
application/x-tar
zamiasttext/html
.(Przekierowanie HTTP nie zawsze jest złe. Dzieje się tak, gdy przekierowuje Cię do czegoś, co nie wydaje się, że może to być plik, którego szukasz, co do którego możesz podejrzewać, że pobieranie się nie powiodło.)
file
zgadza się:I rozpakowuje się pomyślnie:
(Masz rację, że nie ma znaczenia, czy używasz
z
; nadal by działałtar xzf
, ponieważ jest to właściwy plik).Możesz przystąpić do budowania kodu źródłowego i instalacji.
Pamiętaj, że nie zawsze musisz budować ze źródła
Czasami naprawdę chcesz najnowszej wersji programu i nie ma go w repozytoriach Ubuntu. Możesz spróbować znaleźć umowę PPA, ale jeśli nie znajdziesz takiej, której tak naprawdę ufasz lub która zapewnia dokładnie to, czego chcesz, lub chcesz zbudować ją z niestandardowymi opcjami lub po prostu lubisz budować z kodu źródłowego, a następnie budować z kod źródłowy jest cenną i przydatną techniką.
Zalecam jednak sprawdzenie przynajmniej oprogramowania dostępnego w oficjalnych repozytoriach Ubuntu dla twojego systemu. W moim systemie 16.04:
Istnieje kilka innych sposobów wyszukiwania pakietów. Często przydaje się korzystanie ze strony wyszukiwania pakietów Ubuntu .
Ponieważ miałeś zamiar zainstalować wersję 1.7.0.2, prawdopodobnie wersja 1.8.0 w oficjalnych repozytoriach jest dość aktualna. (Rzeczywiście, 1.8.0 wydaje się być tą samą wersją, co wersja przeznaczona do pobrania z oficjalnej strony internetowej.) Naprawdę możesz po prostu chcieć zainstalować to:
źródło