Nama distro, glibc, atau kompiler: apa yang diperiksa penginstal
Penginstal yang menolak turunan Anda mungkin membaca nama distro, versi runtime, atau kompiler. Hanya satu dari itu yang menentukan apakah biner dapat berjalan.
Penginstal mencetak “unsupported distribution”, Anda mengedit satu string, dan ia berlanjut sampai gagal satu menit kemudian dengan galat loader. Urutan itulah gejala yang layak dikenali: kegagalan pertama adalah pemeriksaan pengenalan, dan yang kedua adalah batas kompatibilitas. Keduanya masalah berbeda yang kebetulan muncul di terminal yang sama. Mengedit pemeriksaan hanya bisa memindahkan Anda dari yang pertama ke yang kedua.
Gejalanya: penginstal berhenti pada turunan Anda
Skrip yang membaca nama distribusi dan menolak melanjutkan memberi tahu bahwa penulisnya tidak menguji turunan Anda. Itu pernyataan dukungan, bukan fakta teknis, dan sering keliru dalam arti bahwa paketnya akan berjalan baik.
Masalahnya mulai ketika akal-akalan menjadi rencana. Mengubah berkas identitas membuat pemeriksaan lolos, dan paket lalu termuat, atau gagal termuat, terhadap runtime yang benar-benar terpasang. Jika gagal di sana, tidak ada penyuntingan identitas lebih lanjut yang akan menolong.
Jadi langkah yang berguna adalah mencari tahu pertanyaan apa yang diajukan penginstal, lalu mencari tahu apakah jawabannya akan penting. Itu dua penyelidikan terpisah dan hanya yang kedua meramalkan apakah paket akan bekerja.
Tiga versi yang orang sebut versi sistem
Rilis distribusi menamai lingkungan terpaket. Versi pustaka C menamai implementasi runtime dan rilisnya. Versi kompiler menamai rantai alat. Dalam percakapan orang menyebut ketiganya “versi sistem”, dan di penginstal ketiganya tidak dapat dipertukarkan.
cat /etc/os-release ldd --version | head -1 gcc --version | head -1 uname -m
Aplikasi yang sudah dibangun mengharapkan runtime yang ada saat ia ditautkan. Mengganti kompiler pada host tidak menautkannya ulang, dan rantai alat yang lebih baru tidak mengubah apa pun pada simbol loader yang diminta biner. Arsitektur kembali penting secara terpisah, karena paket 32-bit pada sistem 64-bit gagal karena alasan yang tidak dijelaskan string versi mana pun.
Simpan keempat keluaran bersama laporan. Mengumpulkannya butuh sepuluh detik dan menjawab sebagian besar pertanyaan yang akan diajukan pemelihara lewat surel.
Bacalah galatnya, bukan pemeriksaannya
Galat peluncuran pertama adalah buktinya. Pesan tentang objek bersama yang hilang, atau tentang versi simbol yang tidak dapat dipenuhi loader, adalah masalah dependensi runtime. Pesan yang mengulang nama distribusi adalah pemeriksaan pengenalan lagi, di tempat lain.
dokumentasi penaut dinamis menjelaskan cara kerja pencarian pustaka dan di mana loader mencari. Mengubah label distribusi tidak menambah direktori ke jalur pencarian itu, karena itulah kegagalan kedua tampak tidak terkait dengan yang pertama.
Jangan memakai ldd pada berkas yang dapat dieksekusi hasil unduhan sebagai langkah pertama yang biasa. Manualnya sendiri memperingatkan bahwa ia dapat menjalankan program dalam keadaan tertentu, dan menjalankan penginstal yang tidak tepercaya justru kasus yang dimaksud peringatan itu.
Mengapa mengedit string tidak membantu
Memalsukan identitas sistem operasi mengubah cara setiap program di mesin melihat dirinya sendiri. Manajer paket, alat dukungan, dan aplikasi lain membaca berkas yang sama, dan nilai yang memuaskan satu penginstal bisa membingungkan hal lain berbulan-bulan kemudian.
Mengganti pustaka host dengan berkas dari distribusi lain lebih buruk. Itu bisa merusak perangkat lunak yang tidak terkait, tidak terlihat oleh manajer paket, dan membutuhkan rencana pemeliharaan yang tidak ditulis siapa pun. Perubahan itu tidak dibenarkan oleh satu penginstal yang ketat.
Jika pemeriksaan itu benar-benar cacat pengenalan, pemelihara dapat mengonfirmasinya dan menjelaskan koreksi yang didukung. Jika bukan cacat, jalur yang didukung adalah build untuk platform Anda, dan jawaban itu tidak berubah karena stringnya diedit.
Tulis laporan yang dapat ditindaklanjuti pemelihara
Catat distribusi dan rilis, arsitektur, rilis VPN, kondisi tepat yang ditolak, dan galat runtime pertama jika Anda sampai sejauh itu. Catat apakah Anda mengubah sesuatu, karena laporan dari sistem yang diubah adalah laporan yang berbeda.
Biarkan penginstal asli tidak berubah dan jelaskan pemeriksaannya alih-alih mengakalinya. Pembedaan itu memungkinkan pemelihara memisahkan aturan pengenalan yang terlalu sempit dari batas kompatibilitas biner yang nyata, yang merupakan dua bug sangat berbeda dengan dua perbaikan sangat berbeda.
Jika jawabannya bahwa platform Anda tidak didukung, itu hasil yang dapat digunakan. Itu memberi tahu Anda untuk mencari build yang didukung alih-alih menghabiskan satu malam lagi pada berkas identitas yang tidak pernah menjadi masalah.