Ketika saya menjalankan:
tar -zxvf john-1.7.0.2.tar.gz
Saya mendapatkan ini:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Seharusnya mulai membongkar.
Beberapa orang mengatakan kepada saya untuk tidak menggunakan z
tetapi saya mendapatkan kesalahan yang sama.
Ini file yang saya unduh dengan cara ini:
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
Jawaban:
Mendiagnosis File yang Diunduh dari Jenis yang Salah
Seperti yang dikatakan steeldriver , ini berarti file tersebut tidak benar-benar file tar yang di-gzip - atau jenis file yang di-gzip - meskipun diberi nama seperti itu.
Ketika Anda mengunduh file dengan
wget
, sering ada indikasi bahwa Anda akhirnya mendapatkan jenis file yang berbeda dari yang Anda cari:Dalam hal ini, tanda-tanda utamanya adalah:
301 Moved Permanently
pesan, mengarahkan ke alamat dengan Trailing/
. Ini memuat halaman default untuk beberapa direktori di server, yang biasanyaindex.html
dan hampir selalu berupa file HTML.Length: unspecified [text/html]
, memberi tahu Anda bahwa Anda menerima teks biasa (text
) dan dimaksudkan untuk diartikan sebagaihtml
. Ini benar-benar lebih dari sekadar tanda - Anda bisa yakin Anda belum mendapatkan file gzip asli berdasarkan ini.Anda juga dapat menggunakan
file
utilitas, yang memeriksa file dan memberi tahu Anda seperti apa file itu:Dan tentu saja Anda dapat memeriksa file sendiri, dengan alat seperti
head
,less
, danview
:Jika ini benar-benar file biner, maka Anda akan mendapatkan sejumlah besar sampah yang tidak berarti, karena pager atau pemirsa apa pun yang Anda gunakan sia-sia mencoba menafsirkan sesuatu sebagai teks biasa yang sebenarnya tidak. Misalnya, pada file yang benar:
(Saya hanya menyalin awal itu.)
Mendapatkan File yang Tepat
Itu memberi tahu Anda bagaimana mencari tahu apa yang salah dalam situasi ini (dan dalam kasus ini, khususnya). Tetapi bagaimana Anda benar-benar menemukan dan mengunduh file yang benar ?
Ini bervariasi dari situasi ke situasi. Namun, awal yang baik adalah:
Kunjungi situs web resmi untuk perangkat lunak dan lihat apakah mereka menyediakan tautan unduhan. Bahkan jika itu cara Anda mendapatkan tautan yang Anda gunakan pada awalnya, jika beberapa waktu telah berlalu Anda mungkin menemukan bahwa tautan tersebut telah berubah.
Misalnya, dalam kasus khusus ini, versi saat ini adalah 1.8.0 bukannya 1.7.0.2 (dan disediakan di
j
subdirektori sebagai gantinyaf
), dan versi lama tidak lagi tersedia di URL yang sama.Buka halaman yang Anda arahkan ke ketika Anda mengunduh file. Dalam hal ini, itu adalah: http://www.openwall.com/john/
Atau Anda bahkan dapat memeriksa file yang telah diunduh. (Atau buka itu di web browser.)
Anda diarahkan ke halaman unduh utama perangkat lunak . Anda dapat mengunduh di browser web, atau menyalin tautan unduhan yang benar dan mengunduhnya
wget
. Ada beberapa pilihan, tapi dengan asumsi Anda tidak benar-benar perlu yang versi lama spesifik Anda mencoba untuk download, dan berdasarkan file tertentu Anda lakukan upaya untuk download, saya menduga http://openwall.com/john/j/ john-1.8.0.tar.gz adalah apa yang Anda cari.Tentu saja, pembaca yang menemukan posting ini nanti mungkin menemukan bahwa tautan tidak lagi berfungsi. Tetapi pendekatan yang diperlihatkan di sini untuk pemecahan masalah masalah semacam ini akan tetap valid.
Saya sudah mengunduh file. Perhatikan bahwa, kali ini, tidak ada pengalihan yang tidak diinginkan terjadi dan jenisnya diberikan sebagai
application/x-tar
gantitext/html
.(Pengalihan HTTP tidak selalu buruk. Saat Anda diarahkan ke sesuatu yang sepertinya bukan file yang Anda cari, Anda harus curiga bahwa unduhan Anda belum benar-benar berhasil.)
file
setuju:Dan berhasil membongkar:
(Anda benar bahwa tidak masalah jika Anda menggunakan
z
; itu akan tetap bekerja dengan baiktar xzf
, karena ini adalah file yang benar.)Anda dapat melanjutkan untuk membangun kode sumber dan menginstal.
Ingat, Anda Tidak Selalu Harus Membangun Dari Sumber
Kadang-kadang Anda benar-benar menginginkan versi terbaru dari suatu program, dan itu tidak ada dalam repositori Ubuntu. Anda mungkin mencoba menemukan PPA, tetapi jika Anda tidak menemukan PPA yang benar-benar Anda percayai atau yang menyediakan apa yang Anda inginkan, atau Anda ingin membuatnya dengan opsi khusus, atau Anda hanya suka membangun dari kode sumber, maka membangun dari kode sumber adalah teknik yang berharga dan bermanfaat.
Saya merekomendasikan untuk memeriksa setidaknya perangkat lunak yang tersedia di repositori resmi Ubuntu untuk sistem Anda. Di sistem 16.04 saya:
Ada beberapa cara lain untuk mencari paket. Seringkali berguna untuk menggunakan halaman web Pencarian Paket Ubuntu .
Karena Anda akan mencoba untuk menginstal versi 1.7.0.2, mungkin versi 1.8.0 di repositori resmi sudah cukup baru. (Memang, 1.8.0 tampaknya versi yang sama dengan yang disediakan untuk diunduh dari situs web resmi.) Jadi, Anda mungkin hanya ingin menginstalnya:
sumber