Haruskah saya memasukkan aplikasi ke / usr / local atau / usr / local / share?

21

Apa "standar" - yang harus saya masukkan aplikasi (bukan hanya biner, tetapi seluruh distribusi) ke / usr / local atau / usr / local / share.

Misalnya scala atau weka - ini berisi contoh, binari, perpustakaan, dan sebagainya. Jadi itu akan terjadi

/usr/local/scala-2.9.1 

atau

/usr/local/share/scala-2.9.1

Karena saya satu-satunya admin, ini bukan masalah besar bagi saya, tetapi saya lebih suka menggunakan sesuatu yang banyak digunakan, bukan dengan kebiasaan saya sendiri.

Penting: Saya tidak bertanya tentang kasus, di mana Anda harus membagi aplikasi menjadi / usr / local / bin, / usr / local / lib dan sebagainya. Sebaliknya saya bertanya tentang case ketika Anda harus menyimpan satu direktori utama untuk seluruh aplikasi.

Greenoldman
sumber
6
Saya pikir / opt lebih biasa dalam konteks semacam ini.
Faheem Mitha
@Faheem Mitha, poin yang sangat bagus. Terima kasih kepada Anda, saya menemukan penjelasan seperti "/ opt / 'provider' tree direktori, mirip dengan cara di mana Windows akan menginstal perangkat lunak baru ke pohon direktori sendiri C: \ Windows \ File Progam \" Nama Program "dari linuxtopia.org/ online_books / linux_beginner_books / ... Bisakah Anda silahkan ? memposting komentar Anda sebagai jawaban, jadi saya akan menandainya sebagai jawaban THE Terima kasih.
greenoldman
@greenoldman: juga harap menyadari bahwa menyimpan semua file dalam satu dir bukanlah cara "standar" untuk menginstal aplikasi di Unix. /optmemang jawaban yang tepat, tetapi tidak "banyak digunakan" oleh perangkat lunak tradisional Unix / Linux. Ada banyak alasan untuk membagi file Anda menjadi beberapa dir, dan juga untuk membedakan /usrdari/usr/local
MestreLion
Misalnya, menjaga semua file yang dapat dieksekusi dari semua aplikasi dalam satu /usr/bin(atau /usr/local/bin) memungkinkan $ PATH Anda untuk menjangkau semua perangkat lunak tanpa perlu mengeditnya untuk setiap perangkat lunak, sebuah konsep yang tidak ada di Windows
MestreLion

Jawaban:

19

Saya pikir / opt lebih standar dalam konteks semacam ini. Bagian yang relevan dalam Filesystem Hierarchy Standard dikutip di bawah ini.

Distribusi dapat menginstal perangkat lunak dalam / opt, tetapi tidak boleh memodifikasi atau menghapus perangkat lunak yang diinstal oleh administrator sistem lokal tanpa persetujuan administrator sistem lokal.

 Dasar Pemikiran Penggunaan / opt untuk perangkat lunak tambahan adalah praktik yang sudah mapan dalam komunitas UNIX. Antarmuka Biner Aplikasi System V [AT&T 1990], berdasarkan pada Definisi Antarmuka System V (Edisi Ketiga), menyediakan struktur / opt yang sangat mirip dengan yang didefinisikan di sini.

Intel Binary Compatibility Standard v. 2 (iBCS2) juga menyediakan struktur serupa untuk / opt.

Secara umum, semua data yang diperlukan untuk mendukung paket pada suatu sistem harus ada dalam / opt /, termasuk file yang dimaksudkan untuk disalin ke / etc / opt / dan / var / opt / serta direktori yang dipesan di / opt.

Pembatasan kecil pada distribusi menggunakan / opt diperlukan karena konflik mungkin antara perangkat lunak yang diinstal distribusi dan yang diinstal secara lokal, terutama dalam kasus nama path tetap yang ditemukan dalam beberapa perangkat lunak biner.

Struktur direktori di bawah ini / opt / diserahkan kepada pembuat paket perangkat lunak, meskipun disarankan bahwa paket diinstal di / opt // dan ikuti struktur yang serupa dengan pedoman untuk / opt / paket. Alasan yang sah untuk menyimpang dari struktur ini adalah untuk paket dukungan yang mungkin memiliki file yang diinstal di / opt // lib atau / opt // bin.

Faheem Mitha
sumber
5

Anda hanya boleh menggunakan /usr/local/sharefile yang tidak spesifik untuk versi arsitektur / OS tertentu.

Setelah itu terserah Anda apakah Anda mendistribusikan file di antara subdir yang ada /usr/localatau jika Anda membuat direktori khusus baru di /usr/local(tetapi yang terakhir tidak akan ada pada executable PATH, the LD_LIBRARY_PATH, maupun the MANPATH).

Lihatlah FHS

symcbean
sumber
Terima kasih. Jadi, jika ini analogi dari Windows, itu seharusnya / usr / local / SPECIAL_APP dan di dalamnya harus ada subdirektori, kan?
greenoldman
@greenoldman: nggak. Tidak ada analogi akan cocok karena Windows dan Linux menggunakan model yang berbeda: Di windows, Anda biasanya menyimpan semua file dalam dir tunggal, di mana di Linux Anda biasanya membagi mereka lebih bin, share, lib, dll
MestreLion
3

Sampai /optmenjadi umum, tempat yang biasa adalah /usr/local/lib/<package>.

Teddy
sumber
1
Dari apa yang saya baca, / opt cukup umum, hanya tidak digunakan secara luas, tetapi ini bukan kejutan jika Anda berpikir tentang jumlah paket yang tersedia di repositori.
greenoldman
0

Saat memasang aplikasi lokal, ada beberapa opsi tergantung pada bagaimana Anda ingin mengakses dan memperbarui. Juga harus dicatat bahwa beberapa metode lebih mirip sistem yang sudah Anda miliki dan beberapa lebih ad-hoc. Saya akan menyarankan bahwa solusi "terbaik" adalah yang membuat segalanya lebih mudah untuk dikelola.

Saya telah membagi jawaban ini berdasarkan jumlah paket untuk membuat instalasi khusus. Pemisahan ini berdasarkan pengalaman saya sendiri. Pengalaman-pengalaman ini menimbang waktu yang diperlukan untuk mengelola paket dan risiko mengacaukan sesuatu. Saya tidak bermaksud bahwa saya memiliki pengetahuan tentang standar umum, tetapi memaksudkan ini sebagai titik rujukan yang harus diperhatikan ketika membuat keputusan.

Untuk hanya beberapa paket , saya ingin memasukkan paket tambahan /opt, di mana mereka berada di luar hal-hal lain sehingga tidak ada yang dapat mengacaukannya dan mereka dapat mengacaukan sesuatu yang lain. Ini adalah metode yang saya gunakan pada NAS saya. Namun metode ini menjaga binari dari PATH Anda, jadi Anda harus menambahkannya secara manual. Ini berfungsi dengan baik jika hanya ada beberapa paket untuk diinstal, tetapi menjadi sangat berantakan jika ada banyak.

Memperbarui di sini cukup mudah karena Anda cukup menimpa direktori.

Pro:

  • sederhana
  • cepat ke pengaturan
  • tidak ada kesempatan untuk mempengaruhi bagian lain dari sistem
  • uninstall semudah menginstal

Kekurangan:

  • Menjadi agak membosankan jika jumlah paket untuk menginstal besar
  • Membuatnya PATHterlihat berantakan

Untuk lebih dari beberapa paket , saya akan merekomendasikan menggunakan /usr/local/<your package>dan menghubungkan sym-executable dari /usr/local/binatau /usr/local/sbintergantung pada apakah Anda memerlukan hak akses root. Ini menyelamatkan Anda dari mengubah PATH Anda setiap kali sesuatu yang baru ditambahkan sehingga PATH tetap bersih. Ini adalah metode yang saya gunakan pada laptop Arch saya untuk semua paket non-pacman dan paket AUR.

Pembaruan dilakukan dengan menimpa direktori paket dan memeriksa apakah symlink masih valid dan memperbaiki jika tidak.

Pro

  • Tidak membuat PATHberantakan
  • Tidak memengaruhi sistem basis
  • Masih sangat sederhana untuk menghapus semua add-on dan kembali ke sistem basis bersih

Kekurangan:

  • Lebih banyak pekerjaan yang harus disiapkan
  • Menghapus hanya satu paket memiliki beberapa pencarian yang harus dilakukan

Untuk banyak paket . Karena ini bukan kasus yang Anda inginkan, saya akan tetap singkat. Saya akan merekomendasikan membelah paket ke bin, lib, share, dll dan menginstal mereka untuk /usr/local. Ini untuk menjaga struktur tetap bersih. Anda juga dapat menentukan siapa yang dapat menulis di mana dan banyak lagi. Misalnya, Anda tidak ingin orang lain selain memodifikasi root executable.

Di sini pembaruan menjadi sedikit lebih rumit karena Anda perlu menulis lebih dari satu direktori. Saya akan merekomendasikan mengemas semuanya dan membiarkan manajer paket menangani sisanya.

Bagikan

The sharedirektori itu sendiri adalah untuk file independen arsitektur seperti yang tercantum dalam Faheem ini hubungan dan arsitektur tergantung file harus pergi ke lib, lib32, lib64, dll

Lauri Tekili
sumber
Memberi saran berdasarkan jumlah paket tidak berguna; bagaimana saya tahu grup milik paket saya?
Alois Mahdal
Juga, ketika Anda mengatakan "dianjurkan", sumber referensi atau nyatakan dengan jelas bahwa itu adalah rekomendasi Anda (saya menduga yang terakhir ...?)
Alois Mahdal
Dan omong-omong, saya tidak melihat bagaimana di / opt akan ada kesempatan lebih kecil untuk mengacaukan aplikasi Anda daripada ketika itu menyebar ke / usr dll. Mengacaukan aplikasi lain adalah lebih banyak tentang penamaan hal-hal dengan benar dan tidak memiliki bug di pasang skrip.
Alois Mahdal
Jelas tentang penamaan yang membuat hal-hal kacau. Ini adalah sesuatu yang saya alami di masa lalu dan itulah sebabnya saya ingin menyimpan paket "ekstra" saya dari yang lain. Saya masih tidak ingin itu membuat segalanya terlihat jelek.
Lauri Tšili
Dan ya Anda benar tentang "dianjurkan" seperti yang Anda lihat dari jawaban saya, saya telah menggunakan "Saya akan merekomendasikan" di tempat lain. Sekarang saya telah memperbaiki ejaan saya dan menjelaskan mengapa saya akan merekomendasikan sesuatu. Sekali lagi itu hanya sudut pandang saya dan tidak dimaksudkan sebagai jawaban yang pasti.
Lauri Tšili