Pertanyaan ini tampaknya ditangani dengan baik di beberapa pertanyaan dan tempat lain yang mudah ditemukan dengan Google, tetapi saya tidak menemukan solusi yang memuaskan karena alasan yang dijelaskan di bawah ini. Tetapi hanya untuk penyelesaian, saya telah memasukkan beberapa tautan yang relevan:
/ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ...
Dan lain-lain.
Namun, pertanyaan ini adalah tentang menginstal versi GCC yang sangat spesifik di Kali Linux, yang tampaknya tidak tersedia sebagai paket tertentu. Secara khusus, pertanyaannya adalah tentang cara menginstal versi 6.3.0, karena saya memerlukan versi ini untuk mengkompilasi program tertentu: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(sebagai pertanyaan bonus, jika ada cara yang lebih waras untuk memperbaiki masalah khusus ini tanpa menggunakan versi GCC yang berbeda, jangan ragu untuk menjawab, tapi saya yakin pertanyaan ini bersifat umum dan saya ingin tahu bagaimana melakukannya terlepas dari cara membuat tautan program yang disebutkan di atas dengan benar)
Versi yang tersedia untuk menginstal paket apa pun, misalnya gcc, dapat ditentukan dengan:
apt-cache showpkg gcc
Yang akan mencantumkan versi yang tersedia di bawah "versi:", mis
4:7.2.0-1d1
4:4.9.2-2
Instalasi kemudian sesederhana mengeluarkan
apt-get install gcc:4:4.9.2-2
Ini akan menginstal versi yang lebih lama 4: 4.9.2-2, hanya dengan (saya percaya) menimpa instalasi 7.2.0-1d1, jika ada.
Untuk mendapatkan versi 4: 4.9.2-2 tersedia sama sekali, saya harus menambahkan deb
http://old.kali.org/kali sana main non-free contrib
ke /etc/apt/sources.list
file saya
dan kemudian jalankan apt-get update
.
Namun, bagaimana jika versi yang saya butuhkan tidak tercantum?
Saya telah bereksperimen dengan berbagai sumber, misalnya yang ditemukan di sini: http://snapshot.debian.org/ dan di berbagai pertanyaan dan situs web lain dari pencarian Google.
Sebagian besar dari mereka memberi saya abaikan atau kesalahan, misalnya sebagai berikut
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Bahkan jika ini akan berhasil, tampaknya pendekatan yang sangat buruk untuk menginstal versi tertentu, karena menambahkan beberapa sumber sewenang-wenang mungkin tidak memiliki versi tertentu yang saya inginkan.
Jika saya mencari di snapshot.debian.org untuk gcc, saya hanya mendapatkan versi yang sangat lama: http://snapshot.debian.org/package/gcc/
Saya akhirnya menjadi frustrasi dengan pendekatan ini dan mengkompilasi GCC 6.3.0 dari tarball sumber. Kompilasi berhasil, tetapi kemudian saya dihadapkan dengan cara menginstalnya. Saya berhati-hati menjalankan make install
karena saya khawatir itu akan merusak apt
dan dpkg
dan mungkin merusak sistem.
Sebagai gantinya, saya mencoba menjalankannya dari direktori build, secara langsung. Saya mencoba untuk menambahkan direktori build sebagai entri pertama di PATH saya, yang tidak berfungsi. Kemudian, saya mencoba untuk mengubah nama /usr/bin/gcc
dan melakukan symlink dari /usr/bin/gcc
tempat gcc-6.3.0 saya dapat dieksekusi Ini menyajikan masalah berikut:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Ini diperbaiki dengan entri lain di PATH saya.
Lalu, saya mendapatkan kesalahan ini:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Yang saya asumsikan adalah karena entri yang hilang di /usr/lib/gcc/x86_64-linux-gnu
. Saya mencoba membuat symlink dari 6 ke 6.3.0, tetapi ini tidak cukup. Saya juga mencoba untuk benar-benar menyalin semuanya dengan cp -R
hasil yang sama.
Ini harus menjadi program 64-bit, tapi saya juga menganggapnya sama
/usr/lib/gcc/i686-linux-gnu
.
Saya yakin saya bisa mulai melakukan strace
untuk melihat di mana ia mencoba untuk membuka file dari, membaca file log, membaca sumbernya, dan akhirnya saya membayangkan saya bisa mencari cara untuk meretas bersama solusi yang dikandung dengan buruk. Tapi alangkah baiknya jika seseorang bisa memberi tahu saya bagaimana melakukan ini dengan cara yang waras.