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.