GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Program Unix Idiomatik Mendeteksi Awalan Apa yang Diinstal Di Bawahnya?

Jika saya menginstal biner dengan awalan non-standar, mis. /opt/bin/foo , yang membutuhkan beberapa file statis dari /opt/share/foo , bagaimana cara menemukan mereka? Menggunakan referensi balik relatif terhadap executable (../share/foo )? Di-hardcode pada waktu kompilasi?

Apa idiomatik cara aplikasi menangani awalan instalasi variabel? Haruskah semua direktori diawali? (bagaimana dengan /var ?)

Jawaban yang Diterima:

Adalah umum untuk mengkodekan referensi semacam itu pada waktu kompilasi, dan mungkin menyediakan opsi baris perintah atau variabel lingkungan untuk mengganti default waktu kompilasi. Seringkali program hanya mengingat lokasi satu file konfigurasi (biasanya di bawah /etc ) di mana default waktu kompilasi dapat diganti. Pendekatan ini paling masuk akal untuk perangkat lunak sumber terbuka yang dikompilasi oleh orang yang sama yang membuat sistem operasi, sebagai bagian dari distribusi Linux atau port BSD.

Untuk aplikasi yang didistribusikan dalam bentuk biner, pendekatan yang biasa dilakukan adalah menempatkan biner aplikasi dari argumen ke-nolnya. Dengan konvensi, argumen ke nol untuk execve (yaitu argv[0] ) adalah jalur ke biner (terserah pemanggil, seringkali shell, untuk menghormati konvensi). Jika argv[0] tidak mengandung / , aplikasi harus melakukan $PATH cari di atasnya.


Linux
  1. Log Docker:Apa Itu dan Bagaimana Menggunakannya (dengan Contoh)

  2. Apa Proses Zombie Dan Bagaimana Menemukan &Membunuh Proses Zombie?

  3. Apa Momen Unix *menyakitkan* Favorit Anda?

  1. Apa itu Tautan Simbolik (Tautan Lunak) dan cara membuatnya di Linux

  2. Apa itu Skrip Shell? Bagaimana Cara Membuat Script Shell?

  3. Apa Jenis-Jenis Server DNS

  1. Cara Menemukan Siapa yang Masuk Di Sistem Anda Dan Apa yang Mereka Lakukan

  2. Bagaimana cara mendeteksi peluncuran program di Linux?

  3. periksa paket 32-bit apa yang diinstal pada server 64-bit