Когда я бегу:
tar -zxvf john-1.7.0.2.tar.gz
Я получаю это:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Он должен начать распаковку.
Некоторые люди говорили мне не использовать, z
но я получаю ту же ошибку.
Это файл, который я скачал следующим образом:
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
Ответы:
Диагностика загруженного файла неправильного типа
Как говорит Steeldriver , это означает, что файл на самом деле не является сжатым tar-файлом - или каким-либо другим образом сжатым файлом - несмотря на то, что он назван как один.
Когда вы загружаете файл с помощью
wget
, часто появляются признаки того, что вы получили файл другого типа, чем тот, который вы искали:В этом случае основными признаками являются:
301 Moved Permanently
Сообщение, перенаправление на адрес с завершающим/
. Это загружает страницу по умолчанию для некоторого каталога на сервере, который обычноindex.html
и почти всегда является HTML-файлом.Length: unspecified [text/html]
, сообщая вам, что вы получаете простой текст (text
) и что он предназначен для интерпретации какhtml
. Это действительно больше, чем знак - вы можете быть уверены, что не получили настоящий файл в формате gzip на основе этого.Вы также можете использовать
file
утилиту, которая проверяет файл и сообщает вам, каким файлом он выглядит:И, конечно , вы можете просмотреть файл самостоятельно, с помощью таких инструментов, как
head
,less
иview
:Если бы это был действительно бинарный файл, то вы бы получили вместо этого целую кучу бессмысленного мусора, поскольку любой пейджер или зритель, который вы используете, бесполезно пытается интерпретировать что-то как простой текст, который на самом деле таковым не является. Например, в правильном файле:
(Я только скопировал самое начало этого.)
Получение правильного файла
Это говорит вам, как выяснить, что пошло не так в этих ситуациях (и в данном случае, в частности). Но как на самом деле найти и загрузить правильный файл?
Это зависит от ситуации. Тем не менее, хорошим началом является:
Перейдите на официальный сайт для программного обеспечения и посмотрите, предоставляют ли они ссылки для скачивания. Даже если именно так вы и получили исходную ссылку, по прошествии некоторого времени вы можете обнаружить, что ссылка изменилась.
Например, в данном конкретном случае текущей версией является 1.8.0 вместо 1.7.0.2 (и предоставляется в
j
подкаталоге вместоf
), и старая версия больше не доступна по тому же URL-адресу.Перейдите на страницу, на которую вы были перенаправлены при загрузке файла. В данном случае это: http://www.openwall.com/john/
Или вы можете даже изучить файл, который был загружен. (Или откройте его в веб-браузере.)
Вы были перенаправлены на главную страницу загрузки программного обеспечения . Вы можете либо загрузить в веб-браузере, либо скопировать правильную текущую ссылку для скачивания и загрузить ее с помощью
wget
. Есть несколько вариантов, но если вы на самом деле не нужно , что конкретные старую версию , которую вы пытаетесь загрузить, и на основе конкретного файла вы сделали попытку загрузки, я подозреваю , http://openwall.com/john/j/ john-1.8.0.tar.gz - это то, что вы ищете.Конечно, читатели, которые найдут этот пост позже, могут найти, что ссылка больше не работает. Но подход, продемонстрированный здесь для устранения проблем такого рода, останется в силе.
Я скачал файл. Обратите внимание, что на этот раз не произошло нежелательного перенаправления, и
application/x-tar
вместо него указан типtext/html
.(HTTP-перенаправление не всегда плохо. Когда вы перенаправляетесь на что-то, что не похоже на тот файл, который вы действительно ищете, вы должны подозревать, что ваша загрузка действительно не удалась.)
file
соглашается:И он успешно распаковывается:
(Вы правы в том, что не имеет значения, используете ли вы
z
; с ним все равно будет работатьtar xzf
, поскольку это правильный файл.)Вы можете приступить к сборке исходного кода и установке.
Помните, что вы не всегда должны строить из исходного кода
Иногда вам действительно нужна последняя версия программы, а ее нет в репозиториях Ubuntu. Вы можете попытаться найти PPA, но если вы не найдете того, кому действительно доверяете или который обеспечивает то, что вам нужно, или вы хотите создать его с помощью пользовательских опций, или вам просто очень нравится строить из исходного кода, то собирать из Исходный код является ценным и полезным методом.
Однако я рекомендую проверить, по крайней мере, программное обеспечение, которое доступно в официальных репозиториях Ubuntu для вашей системы. В моей системе 16.04:
Есть несколько других способов поиска пакетов. Часто удобно использовать веб-страницу поиска пакетов Ubuntu .
Поскольку вы собирались установить версию 1.7.0.2, предположительно версия 1.8.0 в официальных репозиториях достаточно свежая. (Действительно, 1.8.0, похоже, та же версия, что и для загрузки с официального сайта.) Так что вы действительно можете просто установить это:
источник