Quando eu corro:
tar -zxvf john-1.7.0.2.tar.gz
Eu entendi isso:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Deve começar a desembalar.
Algumas pessoas me disseram para não usar o, z
mas eu recebo o mesmo erro.
É um arquivo que eu baixei desta maneira:
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
Respostas:
Diagnosticando um arquivo baixado do tipo errado
Como o steeldriver diz , isso significa que o arquivo não é realmente um arquivo tar compactado com gzip - ou qualquer tipo de arquivo compactado com gzip - apesar de ser nomeado como um.
Quando você baixa um arquivo
wget
, geralmente há indicações de que você acabou recebendo um tipo de arquivo diferente do que estava procurando:Nesse caso, os principais sinais são:
301 Moved Permanently
mensagem, redirecionando para um endereço com um final/
. Isso carrega a página padrão de algum diretório no servidor, que geralmente éindex.html
quase sempre um arquivo HTML.Length: unspecified [text/html]
, informando que você está recebendo texto sem formatação (text
) e que ele deve ser interpretado comohtml
. Isso é realmente mais do que um sinal - você pode ter certeza de que não obteve um arquivo compactado de verdade com base nisso.Você também pode usar o
file
utilitário, que examina um arquivo e informa que tipo de arquivo ele parece ser:E, claro, você pode examinar o arquivo, com ferramentas como
head
,less
, eview
:Se esse fosse realmente um arquivo binário, você teria recebido um monte de lixo sem sentido, pois qualquer pager ou visualizador que você usa sem sucesso tenta interpretar algo como texto simples que realmente não é. Por exemplo, no arquivo correto:
(Apenas copiei o começo disso.)
Obtendo o arquivo certo
Isso mostra como descobrir o que deu errado nessas situações (e, neste caso, em particular). Mas como você realmente encontra e baixa o arquivo correto ?
Isso varia de situação para situação. No entanto, um bom começo é:
Vá para o site oficial do software e veja se eles fornecem links para download. Mesmo que tenha sido assim que você obteve o link que está usando originalmente, se já passou algum tempo, você pode descobrir que o link foi alterado.
Por exemplo, neste caso em particular, a versão atual é 1.8.0 em vez de 1.7.0.2 (e fornecida no
j
subdiretório em vez def
) e a versão antiga não está mais disponível no mesmo URL.Vá para a página para a qual você foi redirecionado quando baixou o arquivo. Nesse caso, é: http://www.openwall.com/john/
Ou você pode até examinar o arquivo que foi baixado. (Ou abra -o em um navegador da Web.)
Você foi redirecionado para a página principal de download do software . Você pode fazer o download em um navegador da Web ou copiar um link de download atual correto e fazer o download com ele
wget
. Existem algumas opções, mas supondo que você não precise da versão antiga específica que estava tentando baixar e, com base no arquivo específico que tentou baixar, desconfio http://openwall.com/john/j/ john-1.8.0.tar.gz é o que você está procurando.Obviamente, os leitores que encontrarem este post mais tarde poderão descobrir que o link não funciona mais. Mas a abordagem demonstrada aqui para solucionar esse tipo de problema permanecerá válida.
Eu baixei o arquivo. Observe que, desta vez, nenhum redirecionamento indesejado aconteceu e o tipo é fornecido como em
application/x-tar
vez detext/html
.(Um redirecionamento HTTP nem sempre é ruim. É quando você é redirecionado para algo que não parece ser realmente o arquivo que você está procurando e que você deve suspeitar que seu download não foi realmente bem-sucedido.)
file
concorda:E descompacta com sucesso:
(Você está certo de que não importa se você usar o
z
; ele ainda teria funcionadotar xzf
, pois esse é o arquivo correto.)Você pode prosseguir para criar o código fonte e instalar.
Lembre-se, você nem sempre precisa criar da fonte
Às vezes, você realmente deseja a versão mais recente de um programa, e ela não está nos repositórios do Ubuntu. Você pode tentar encontrar um PPA, mas se você não encontrar um em que realmente confie ou que forneça exatamente o que deseja, ou se deseja construí-lo com opções personalizadas, ou se você realmente gosta de construir a partir do código-fonte, construa a partir de O código fonte é uma técnica valiosa e útil.
Eu recomendo verificar pelo menos o software que está disponível nos repositórios oficiais do Ubuntu para o seu sistema. No meu sistema 16.04:
Existem várias outras maneiras de procurar pacotes. Muitas vezes, é útil usar a página da Web de pesquisa de pacotes do Ubuntu .
Como você tentaria instalar a versão 1.7.0.2, presumivelmente a versão 1.8.0 nos repositórios oficiais é recente o suficiente. (De fato, a versão 1.8.0 parece ser a mesma versão fornecida para download no site oficial.) Portanto, você pode realmente querer instalar isso:
fonte