Ke direktori mana saya harus menginstal program di Linux?

43

Saya ingin menginstal program di Linux dan menjalankannya sebagai daemon. (Tim Bicara 3 dalam hal ini, tetapi pertanyaannya bersifat umum). Tidak ada paket yang disediakan, hanya binari yang ditumpuk. Di mana dalam struktur direktori saya harus meletakkan program seperti itu dengan konvensi?

Di web saya menemukan bahwa / opt adalah untuk "aplikasi addon opsional", sedangkan / usr adalah untuk "program pengguna". Saya menemukan satu tutorial menyarankan / memilih sementara yang lain menyarankan / usr.

Jadi yang mana yang "lebih benar"?

Eiver
sumber
1
"Lebih tepat" tergantung pada distribusi Anda. Anda harus memeriksa pedoman distribusi Anda tentang tempat meletakkan perangkat lunak yang tidak dikelola oleh manajer paket (sering /usr/local) ATAU tentang cara membuat paket Anda sendiri untuk itu.
Leiaz
Leiaz terima kasih. Komentar Anda membantu saya menemukan jawabannya ( askubuntu.com/questions/1148/… ). Jadi saya kira itu harus / pilih dalam kasus saya (Menggunakan Linux Mint, yang didasarkan pada Ubuntu) dan aplikasi menggunakan folder tunggal. Jika Anda mengubah komentar Anda menjadi jawaban, saya akan menerimanya.
Eiver

Jawaban:

27

"Lebih tepat" tergantung pada distribusi Anda. Anda harus memeriksa pedoman distribusi Anda di mana harus meletakkan perangkat lunak yang tidak dikelola oleh manajer paket (sering /usr/local) ATAU tentang cara membuat paket Anda sendiri untuk itu.

Seperti yang Anda katakan TeamSpeak hanya meletakkan semuanya dalam satu folder (dan mungkin tidak mudah untuk mengatur ulang), ya /opt/mungkin yang terbaik.

(Tapi, misalnya, di Archlinux, manajer paket dapat menginstal di sana, jadi saya masih akan membuat PKGBUILD untuk menginstal /opt.)

Juga distribusi biasanya mencoba mengikuti Standar Hierarki Filesystem , jadi ini adalah tempat untuk mencari konvensi yang lebih umum.

Leiaz
sumber
apakah ada beberapa alias untuk mengetahui di mana letak setiap direktori berdasarkan penggunaan? (misalnya, tempat meletakkan konfigurasi root, tempat meletakkan binari, dependensi, templat ...)
Sandburg
5

Jika Anda akan mengkompilasi perangkat lunak Anda sendiri maka Anda akhirnya mengontrol lokasi instalasi. Secara konvensional, perangkat lunak yang dikompilasi dan diinstal secara manual (tidak melalui manajer paket, mis. Apt, yum, pacman) diinstal di /usr/local. Beberapa paket (program) akan membuat sub-direktori di dalamnya /usr/localuntuk menyimpan semua file yang relevan di dalamnya , seperti /usr/local/openssl. Paket lain akan menginstal file yang diperlukan ke direktori yang ada seperti /usr/local/sbindan /usr/local/etc. Ini hanyalah lokasi default dan dapat diubah selama kompilasi.

Saat Anda mengompilasi perangkat lunak, lokasi instalasi dapat ditentukan dengan menggunakan --prefix=opsi saat menjalankan ./configure. Sangat disarankan agar Anda melihat semua opsi yang tersedia untuk paket Anda dengan menjalankan $ ./configure --help | less. Selain itu, menjelajah dokumen INSTALL dan README yang disediakan bersama paket Anda adalah ide yang bagus. Mereka cenderung menyertakan instruksi instalasi dan informasi ketergantungan yang khusus untuk paket.

Perlu juga dicatat bahwa meskipun Anda dapat menyimpan perangkat lunak di mana saja, menurut FHS , kode sumber untuk perangkat lunak yang diinstal secara lokal harus disimpan dalam /usr/local/src Standarisasi di mana Anda menyimpan pohon sumber Anda akan memungkinkan Anda untuk dengan mudah menemukan pohon jika Anda perlu menyalin stok file konfigurasi atau biner. Meskipun beberapa paket menggunakannya, kode sumber Anda tidak boleh disimpan /usr/srcseperti yang ditujukan untuk perangkat lunak sistem seperti kernel.

Akhirnya, Anda perlu memastikan bahwa lokasi instalasi Anda termasuk dalam Anda $PATH. Jika Anda memutuskan untuk menginstal paket Anda /opttetapi tidak di $PATHshell Anda tidak akan menemukan executable dan Anda harus menggunakan jalur absolut untuk menjalankan program Anda. Berikut adalah beberapa diskusi hebat dari AU tentang mengonfigurasi Anda$PATH

Bacaan tambahan: man hier

Sungai kecil
sumber
5

The Linux Standard Base dan Hierarchy Standard Filesystem yang bisa dibilang standar di mana dan bagaimana Anda harus menginstal perangkat lunak pada sistem Linux dan akan menyarankan menempatkan perangkat lunak yang tidak termasuk dalam distribusi Anda baik dalam /optatau /usr/local/atau lebih tepatnya subdirektori di dalamnya ( /opt/<package> /opt/<provider> /usr/local/bin).

Praktik terbaik adalah mengonversi perangkat lunak yang Anda unduh ke paket perangkat lunak yang dapat diinstal yang asli pada distribusi Anda, misalnya format dpkg atau rpm. Itu akan memfasilitasi pelaporan, peningkatan, dan penghapusan perangkat lunak secara bersih.

HBruijn
sumber
Ini cukup banyak hanya menyatakan kembali pertanyaan daripada menjawabnya. OP sadar akan hal itu /optdan /usr/local/merupakan dua opsi yang tersedia tetapi menginginkan informasi spesifik untuk digunakan salah satu dari opsi tersebut. Ini bisa menjadi jawaban yang valid jika alih-alih membuat klaim bahwa kedua lokasi dapat dipertukarkan (meskipun saya akan membantah bahwa itu akan menjadi jawaban yang benar dalam kasus tersebut).
JBentley
1

Binari masuk ke binfolder dengan konvensi umum, bagaimana Anda akan mengatur struktur paket Anda terserah Anda, saya bisa memikirkan /opt/<prog_name>/apakah itu hanya daftar binari.

bbsanem
sumber
Saya takut bahwa Team Speak 3 guys membuat program sedemikian rupa sehingga semua yang dibutuhkan duduk hanya dalam satu folder (binari, file konfigurasi, log), jadi itu tidak menggunakan / bin atau / etc atau / var / log
Eiver
1

Saya memiliki pertanyaan yang sama saat memasang Eclipse melalui installer Eclipse.

Saya perhatikan bahwa Gimp, Perl dan Vim diinstal di /usr/sharefolder dan memutuskan untuk menginstalnya di sana.

senpai
sumber
0

Ada dua cara program dapat diinstal, tergantung pada bagaimana mereka dikemas.

  1. Melalui manajer perangkat lunak (apt, synaptic, Gdebi dll.) - program ini dalam bentuk paket, biasanya .deb atau rpm. Manajer perangkat lunak dalam banyak kasus menangani dependensi dan akan menginstal binari ke dalam /usr/bin, mengonfigurasi file ke /etcdan sebagainya. Mereka juga dapat membuat file konfigurasi untuk program di rumah Anda, biasanya ~/.foo. Jika Anda dapat mengedit file ini, Anda juga dapat dengan mudah mengubah pengaturan untuk sesi Anda dengan cara ini. Ketika Anda menghapus paket, manajer akan menemukan semua file dan menghapusnya dengan bersih (itu menyimpan semua lokasi dalam file teks khusus). Tetapi mungkin menyimpan beberapa file konfigurasi, misalnya yang ada di folder rumah Anda.

  2. Anda mengunduh program (biasanya dikompresi) dalam bentuk file biner yang telah dikompilasi sebelumnya untuk arsitektur Anda. File yang dapat dieksekusi dari program biasanya dalam satu folder di sebelah file lain (pustaka yang terhubung secara dinamis, dll.) Seluruh folder ini dapat disalin, dengan hak akses root, baik ke /optatau /usr/bindan bisa, jika izin memungkinkan, digunakan oleh pengguna mana pun. Saya sendiri memasukkan folder dengan file biner ke folder home saya ~/bin. Sekarang Anda harus dapat menjalankan program dengan memohon file bin-nya.

Štěpán Doan
sumber