Saya telah menggunakan server Linux selama bertahun-tahun sekarang dan saya terus menjadi bingung oleh Filesystem Hierarchy Standard. Biasanya, saya bisa hidup dengan kebingungan. Tetapi sekarang saya sedang mengembangkan perangkat lunak saya sendiri untuk Linux, saya perlu memahami di mana seharusnya diinstal oleh manajer paket.
Saya cukup yakin bahwa / opt adalah lokasi yang sempurna untuk aplikasi saya. Tetapi setelah menyelidiki filesystem Debian saya, saya tidak yakin lagi: banyak perangkat lunak yang sebenarnya diinstal di / usr / lib! Untuk beberapa nama: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...
Menurut FHS, / usr / lib seharusnya berisi "Perpustakaan untuk pemrograman dan paket" dan "termasuk file objek, perpustakaan, dan binari internal yang tidak dimaksudkan untuk dijalankan secara langsung oleh pengguna atau skrip shell" ( Lihat di sini ).
Banyak perangkat lunak yang terletak di / usr / lib server debian saya bukan pustaka atau biner internal tetapi perangkat lunak yang dapat dieksekusi pengguna penuh!
Saya masih di jalur untuk menginstal aplikasi saya di / opt. Tetapi saya benar-benar ingin memahami apakah ini benar dan, di atas segalanya, mengapa .
Terima kasih sebelumnya atas saran Anda,
Eric.
Jawaban:
Kunci nyata untuk memahami Heirarki Filesystem Standar adalah mengetahui bahwa itu dirancang dengan sistem file jaringan dalam pikiran.
Untuk setiap mesin dengan OS, rilis, dan arsitektur yang sama, Anda dapat berbagi / usr melalui NFS dan memasangnya.
/ usr dipasang (kembali) setelah tumpukan jaringan diinisialisasi.
sumber
Perbedaannya adalah
/usr
paket-paket tersebut dimaksudkan untuk menahan instalasi sebagai bagian dari sistem . Paket yang Anda dapatkan dari repositori Debian / Ubuntu, PPA, dll., Buka di sini. Sedangkan/opt
dimaksudkan untuk aplikasi pihak ketiga yang tidak dibundel yang tidak didistribusikan melalui proses distribusi paket distribusi.Jika Anda mendistribusikan paket .deb atau .rpm, dengan tujuan akhirnya mendapatkan perangkat lunak Anda termasuk dalam repositori resmi, Anda harus menginstalnya ke
/usr
. Jika tidak, instal ke/opt
. Dalam kedua kasus tersebut, aplikasi Anda harus dapat dikompilasi untuk dijalankan di lokasi sembarang (mis. Dengan bantuan GNU autotools).sumber
/usr/local
tidak berada dalam ruang lingkup untuk pertanyaan ini. Tetapi ini dimaksudkan untuk perangkat lunak pihak ketiga yang dikompilasi dan diinstal oleh administrator lokal.Anda menginstal perpustakaan Anda di
<prefix>/lib
, binari Anda di<prefix>/bin
, file header Anda di<prefix>/include
, halaman manualprefix/[share/]man
, file konfigurasi pkg di<prefix>/lib/pkgconfig
atau<prefix/share/pkgconfig
, file cmake .m4 Anda di<prefix>/share/aclocal
Kemudian biarkan manajer paket memutuskan awalan. Jika Anda mendistribusikan sendiri rpm / deb,
/usr
adalah pilihan yang baik untuk awalan../configure --prefix=~/.local/
Seharusnya masih berfungsi, jadi jangan pergi hardcoding jalan Anda di mana saja tolong!Beberapa perpustakaan dibungkus dengan beberapa alat lain yang membuat mereka juga dapat dieksekusi dan dapat digunakan sebagai perpustakaan, tetapi mereka masih berupa perpustakaan, dan tidak dalam $ PATH Anda, jadi tidak apa-apa untuk memasukkannya ke / lib kurasa.
sumber
Saya akan menyarankan untuk menghindari menginstal aplikasi Anda di / opt. Alasan 1: Beberapa distro tidak memiliki / memilih secara default Alasan 2: / usr / lib adalah jalur standar untuk perpustakaan {Jika aplikasi lain perlu menggunakan perpustakaan Anda, Anda perlu menambahkan jalur perpustakaan Anda secara manual ke / etc / ldconfig} / opt lebih nyaman ketika Anda memiliki aplikasi mandiri yang Anda instal secara manual dan Anda ingin tahu di mana mereka berada
Salah satu alasan yang dapat dieksekusi sepenuhnya executable terletak di / usr / lib bisa jadi mereka digunakan dari skrip lain. {Misalnya skrip bash tidak dapat menggunakan API secara langsung. untuk alasan ini trik umum adalah membuat "wrapper" di sekitar api ini dan mendorong parameter sebagai argumen skrip}
sumber
Silakan instal di / opt.
Terlalu banyak aplikasi Linux membuat hal yang sama yang dibuat oleh pengembang Windows di tahun 90-an.
Mari kita instal barang-barang kami di C: \ windows sehingga sederhana dan mudah ditemukan (dan sedikit lebih cepat). Kemudian datang 15 tahun neraka DLL sebagai paket perangkat lunak yang berbeda membutuhkan versi berbeda dari pustaka yang sama (yang di Windows tidak memiliki versi pustaka).
Kecuali jika Anda menulis perangkat lunak sistem yang sebenarnya, letakkan di / opt, sehingga orang dapat melacak dengan lebih baik siapa yang menginstal apa.
sumber