Apa lokasi pemasangan konvensional untuk aplikasi di Linux?

73

Saya sedang menginstal NetBeans, dan direktori instal defaultnya adalah /home/thomasowens/netbeans-6.8. Saya bukan penggemar lokasi itu, jadi saya sedang melihat /etc, /bin, /usr/bin, dan /sbin. Apakah Linux memiliki tempat yang, berdasarkan konvensi, sama dengan C:\Program Filesdirektori Windows ?

Thomas Owens
sumber

Jawaban:

99

Menurut Standar Hierarki Filesystem , ada beberapa tempat yang dapat diterima, tergantung pada aplikasi. Saya mengutip dari sini secara luas di sini.

  • bin kependekan dari "binary" tentu saja
  • sbin kependekan dari "server binary", atau didefinisikan sebagai:

    Utilitas yang digunakan untuk administrasi sistem (dan perintah root-only lainnya)

  • /usr adalah untuk data yang dapat dibagikan, hanya-baca, dan harus dapat dibagikan antara berbagai host yang sesuai dengan FHS (jika Anda memiliki banyak mesin di jaringan Anda, dan semuanya memiliki arsitektur yang sama, Anda harus dapat berbagi folder satu / usr dengan setiap mesin di jaringan)

  • /usr/local untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara lokal (yaitu, untuk aplikasi yang hanya diinstal pada mesin ini, bukan pada setiap mesin di jaringan).

Mengambil ini bersama-sama:

  • /usr/bin adalah direktori utama dari perintah yang dapat dieksekusi pada sistem.
  • /usr/sbin adalah untuk setiap biner non-esensial yang digunakan secara eksklusif oleh administrator sistem.
  • Program administrasi sistem yang diperlukan untuk perbaikan sistem, pemulihan sistem, pemasangan / usr, atau fungsi-fungsi penting lainnya harus ditempatkan /sbinsebagai gantinya (yaitu, hal-hal yang perlu Anda akses agar dapat /usr/sbinmasuk ke mount /sbin)
  • Demikian juga, perintah pengguna penting yang mungkin diperlukan sebelum /usrdipasang masuk/bin
  • Apa pun yang diinstal hanya pada mesin lokal harus masuk /usr/local/binatau/usr/local/sbin

Ada satu kegunaan lain untuk / usr / local. Sebagian besar hal yang Anda instal melalui manajer paket distro Anda akan ditempatkan di bawah / usr; banyak orang menaruh barang-barang yang telah mereka susun dengan tangan di bawah / usr / local. Ini membuat mereka jauh dari sistem manajemen paket dan memungkinkan Anda melihat apa yang Anda instal dari distro (dan tidak perlu membuat cadangan karena Anda dapat mengambilnya lagi) dan apa yang Anda kompilasi dengan tangan; itu juga memungkinkan Anda menjalankan versi yang berbeda secara bersamaan (mis., / usr / bin / firefox vs / usr / local / bin / firefox).


Tepat ketika Anda berpikir segalanya sudah beres, ada satu tempat lain, yang mungkin setara dengan yang terdekat c:\Program Files- /opt:

/opt dicadangkan untuk instalasi paket perangkat lunak aplikasi tambahan.`

/optmungkin yang paling dekat setara dengan c:\program files, dalam hal ini adalah salah satu tempat yang Anda harapkan untuk menemukan aplikasi dengan semua file bersama-sama dalam satu folder, daripada tersebar di seluruh /usr/bin, /vardan /etc. Ini biasanya hanya digunakan oleh paket yang sangat besar, tetapi dalam kasus ini, mengingat bahwa Netbeans ingin memiliki folder sendiri, mungkin masuk akal untuk meletakkannya di bawah / opt / netbeans

James Polley
sumber
3
menarik. jika saya mendesain Linux, saya akan meletakkan aplikasi jaringan bersama di / usr / shared dan kemudian menempatkan aplikasi host lokal pribadi di / usr. dengan cara itu saya bisa berbagi / usr / dibagikan tanpa juga, melalui warisan, berbagi / usr.
Djangofan
1
Jawaban yang sangat bagus. Saya juga suka komentar tentang menjaga hal-hal dari sistem manajemen paket.
DaveParillo
1
Jelas / pilih "paket pihak ketiga penuh". Sebagian besar pemasangan akan membagi berbagai binari, pustaka, file, dll ke dalam direktori yang berbeda, tetapi ketika Anda memiliki direktori "semua dalam satu", / opt membuatnya mudah untuk ditangani.
Avery Payne
Pertanyaan cepat pasangan: 1) Jika / usr seharusnya dapat dibagikan di antara semua mesin di jaringan, bukankah itu berarti bahwa semua direktori anak juga dapat dibagikan, sehingga membuat / usr / lokal dapat dilihat oleh mesin lain di jaringan? 2) Apa itu FHS 3) Ketika Anda berbicara tentang perintah yang diperlukan untuk pemasangan / usr, apakah Anda berbicara tentang bagaimana OS boot dari, katakanlah, shutdown? Saya minta maaf atas pemboman pertanyaan 7 tahun kemudian, tetapi saya baru mengenal Linux dan memiliki pertanyaan yang sama setelah melihat panduan instalasi mengatakan di mana harus meletakkan barang, tetapi tidak MENGAPA untuk meletakkannya di sana. +1 btw
Ungeheuer
5

Benar-benar turun ke preferensi pribadi. Saya akan menjelaskan milik saya berapa nilainya.

/ usr, / usr / bin biasanya tempat untuk menginstal perangkat lunak oleh sistem yang akan diinstal. Ketika saya menginstal sendiri, saya menginstalnya di salah satu dari beberapa tempat:

  1. Jika itu skrip atau program kecil yang hanya akan saya gunakan, saya menginstalnya di ~ / bin - ini adalah tempat sebagian besar barang saya berakhir.
  2. Jika itu seperti yang Anda jelaskan (NetBeans) dengan pohon file lengkap sendiri, saya menginstalnya di / opt
  3. Jika ini adalah satu executable, saya menginstalnya di / usr / local / bin

Mengapa saya membedakan antara # 2 & # 3? Tidak tahu, itu hanya kebiasaan yang saya kembangkan dari waktu ke waktu. Memang berhasil bahwa / opt biasanya berakhir menjadi pohon besar file, tetapi hanya memiliki 2 atau 3 'hal' yang sebenarnya diinstal. Pada saat ini, saya memiliki lampp dan lotus note dipasang di opt, 2 direktori yang masing-masing memiliki pohon yang agak besar di bawahnya. Di / usr / local / bin, saya memiliki 20 atau 30 entri, tetapi tidak ada subdirektori.

Saya tidak menginstal hal-hal di / usr / bin atau / usr / sbin karena saya ingin menjaga hal-hal yang saya tambahkan secara manual (bukan bagian dari hanya menginstal dari repositori standar) secara terpisah.

DaveParillo
sumber
1

Sedangkan Filesystem Hierarchy Standard memang memberikan beberapa panduan. Saya telah menemukan bahwa sebagian besar distribusi ingin menginstal paket /usr/share.

Karena itu, saya telah mengadopsi praktik menginstal aplikasi apa pun yang tidak diinstal melalui manajer paket (rpm / apt-get / emerge) di /usr/local. Ini memungkinkan saya untuk menjaga aplikasi dan pustaka yang tidak dikelola melalui manajemen paket terpisah dari yang ada.

Ini adalah teknik yang membantu saya mengelola sistem saya di bawah Fedora Core dan Gentoo.

Adam Luchjenbroers
sumber
0

Saya akan berpikir bahwa lokasi default adalah /bin, di situlah hampir semuanya diinstal secara default jika menggunakan apt-get atau yang serupa ...

... Namun, ketika datang ke program yang lebih modern (atau yang tanpa installer) yang memiliki banyak file tambahan, saya ingin menempatkannya di direktori mereka sendiri di dalam /bin.

William Hilsum
sumber
3
Apa perbedaan antara / bin, / usr / bin, dan / sbin? / bin paling masuk akal, karena ini untuk file BINary.
Thomas Owens
0

Biasanya mereka menginstal di banyak folder, terutama / usr, / local, / bin, dll. Anda dapat mengetahui di mana program menginstal dari Penginstal GDebi (di bawah tab file). Jika Anda akan memindahkan Netbeans, saya sarankan memindahkannya ke / opt, karena di situlah Google tampaknya menginstal barang-barangnya.

digitxp
sumber
0

Setuju dengan jawaban James Polley, tetapi sebenarnya direktori default sangat masuk akal kecuali Anda perlu berbagi aplikasi antara beberapa akun. Saya, misalnya, perlu menginstal Eclipse 3.0 (usang) untuk melakukan pekerjaan Flex di Linux, dan saya memasukkannya ke dalam $ HOME / eclipse3.

CarlF
sumber
0

Saya suka menggunakan / apps untuk sebagian besar aplikasi add-on yang saya instal di beberapa server. Saya menyimpan salinan folder di / installs / apps di server nfs saya. Ketika saya membuat server linux baru saya memasang folder instal dan salin / aplikasi dan saya memiliki banyak aplikasi umum yang berbeda di server baru. Saya menghapus entri-entri yang saya tidak perlu untuk server baru ini dan saya sudah selesai. Yah, mungkin saya perlu menjalankan satu atau tiga skrip untuk mengatur variabel lingkungan atau pernyataan path, tetapi cukup banyak untuk mengatur banyak server baru.

Saya berasal dari latar belakang Windows dan .net. Salah satu janji .net adalah bahwa sebagian besar aplikasi dapat diinstal dengan menggunakan Windows xcopy. Saya mencari hal yang sama di Linux. Jika tersedia, saya memilih tarball di atas RPM atau yum, dll. Jadi saya bisa menggunakan / aplikasi dengan cp -r dan menambahkan aplikasi ke server nfs saya untuk penerapan selanjutnya.

Lembah
sumber
2
Pertanyaannya menanyakan konvensi. Anda menggambarkan apa yang Anda lakukan, secara pribadi. Bisakah Anda setidaknya menghubungkan ini dengan konvensi?
fixer1234