Mengapa paket saya diinstal ke / opt?

8

Beberapa waktu yang lalu saya menginstal couchdb dari sumber di mesin debian saya. Tampaknya menginstal oke dan semuanya bekerja.

Beberapa minggu kemudian saya ingin meningkatkan dan menginstal dari. Deb menggunakan dpkg. Semuanya sekarang tampaknya telah diinstal di bawah /opt. Semua sepertinya berfungsi dengan baik, tapi saya tidak begitu mengerti mengapa itu semua diinstal di bawah /opt. Itu tidak terasa "halus" seperti ketika hal-hal dipasang langsung ke /usr/local/bindan /etcdan /var/log. Lebih rumit untuk dikonfigurasikan daripada ketika saya sebelumnya baru saja mengedit file konfigurasi yang diinstal di / etc / couchdb

Dapatkah seseorang menjelaskan kepada saya mengapa instalasi /optadalah "hal yang baik" dan mengapa ini adalah cara yang lebih baik dalam melakukan sesuatu daripada instalasi sebelumnya yang berasal dari sumber?

Saya tahu ini adalah pertanyaan yang agak kabur tapi saya hanya kompeten dengan Linux bukan ahli dan tidak mengerti pemikiran di balik menginstal /opt

Mikel
sumber
Mungkin ada tag / debian hilang?
D4RIO
Apakah Anda mengatakan bahwa paket Debian diinstal di / opt? Jika demikian, itu melakukan hal yang salah. Saya juga memiliki aplikasi Google Chrome (saat ini belum diinstal) yang diinstal di / opt. Segala sesuatu yang dikelola oleh sistem paket harus masuk ke sistem utama.
Faheem Mitha
Melihat hal ini dengan lebih hati-hati, saya tidak dapat menemukan pernyataan yang jelas dalam kebijakan bahwa instalasi paket Debian (terlepas apakah itu resmi atau tidak) tidak boleh menginstal di / opt, meskipun saya memiliki kesan kuat bahwa ini tidak boleh dilakukan, dan ada ada berbagai komentar di internet yang mengatakan itu adalah hal yang salah. Jika saya menemukan sesuatu yang lebih pasti saya akan mempostingnya. AFAIK, Debian tidak mengharapkan atau memerlukan paket non-resmi untuk menginstal di tempat yang berbeda dari paket resmi.
Faheem Mitha

Jawaban:

10

The Filesystem Hierarchy Standard memberikan definisi ini:

  • /opt : Paket perangkat lunak aplikasi tambahan
  • /usr/local : Hirarki lokal (untuk digunakan oleh administrator sistem ketika menginstal perangkat lunak secara lokal)

Cara saya membaca itu:

  • Aplikasi sistem standar harus masuk /bindan /usr/bin(tersirat)
  • Paket pihak ketiga harus masuk /opt
  • Sesuatu hanya boleh dipasang /usr/localjika administrator sistem menginginkannya

Secara ekstensi, jika sysadmin menginstal sesuatu menggunakan dpkgatau rpm, itu tidak boleh masuk /usr/localsecara default.

Jadi itu bisa dibilang melakukan hal yang benar.

Mikel
sumber
Server aplikasi IBM Websphere masuk ke / opt. Juga, ketika saya menginstal sesuatu seperti IBM JDK, saya memasukkannya ke / opt / java.
djangofan
5

Kebijakan Debian mengatakan

9.1.2 Program khusus situs

Seperti yang diamanatkan oleh FHS, paket tidak boleh menempatkan file apa pun /usr/local, baik dengan meletakkannya di arsip sistem file untuk dibongkar oleh dpkg atau dengan memanipulasi mereka dalam skrip pengelola mereka.

Tidak ada larangan spesifik seperti itu terhadap /opt. Kebijakan juga menambahkan

Lokasi semua file dan direktori yang diinstal harus mematuhi Filesystem Hierarchy Standard (FHS), versi 2.3, dengan pengecualian yang disebutkan di bawah ini, dan kecuali jika hal itu akan melanggar ketentuan Kebijakan Debian lainnya.

dan Standar Hierarki File mengatakan

Direktori /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, dan /opt/mandicadangkan untuk digunakan sistem administrator lokal.

dan kemudian lebih jauh ke bawah

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

Perhatikan bahwa Kebijakan adalah untuk Debian sendiri, tetapi umumnya sesuai dengan rekomendasi praktik terbaik. Hasilnya, jika saya membaca ini dengan benar, adalah bukan OK untuk menginstal paket (deb) biner /usr/local, tetapi OK untuk menginstal /optselama tidak mengganggu penggunaan ruang sysadmin.

Pendapat pribadi saya adalah bahwa ide buruk untuk memiliki paket deb di salah satu /usr/localatau /opt. Saya tidak setuju dengan D4RIO ketika dia mengatakan:

Ada paket Couchdb untuk Debian (maksud saya, resmi), jadi jika Anda mengunduh yang lain, tidak masalah, ia harus diinstal di dalam /optatau di /usr/local/binsalah satu.

Anda biasanya tidak ingin dua paket deb berbeda yang sesuai dengan perangkat lunak yang diinstal, dan jika mereka sebenarnya adalah nama paket yang sama, dpkg tidak akan mengizinkannya. Paket perangkat lunak Debian tidak resmi yang tersedia sebagai paket resmi umumnya (tetapi tidak selalu) memiliki nama yang sama dengan yang resmi; Anda hanya menginstal satu atau yang lain, tidak keduanya.

Untuk apa nilainya, saya pikir memasukkan paket deb /optadalah ide yang buruk, dan satu-satunya kejadian baru-baru ini yang saya lihat adalah dengan Google Chrome. Namun, Google tidak selalu mengikuti praktik terbaik.

Faheem Mitha
sumber
Sepenuhnya setuju bahwa sebuah paket tidak boleh diinstal ke / opt, terutama jika ia meletakkan file di tempat lain juga seperti di / usr / bin. Imho / opt harus berisi perangkat lunak yang sepenuhnya lengkap sehingga Anda dapat membatalkannya dari orbit hanya dengan menghapusnya dari / opt.
Arrowmaster
Oke tanggapan yang bagus terima kasih tetapi sudah diinstal ke / opt secara default. Jika tidak / memilih, lalu di mana saya harus menginstalnya? Dan bagaimana cara melakukannya menggunakan dpkg?
@ Duke: Jika Anda bisa mendapatkan sumber paket deb, Anda dapat membangun kembali deb untuk menginstal ke dalam sistem seperti paket biasa. Ini akan membutuhkan sedikit kerja jika Anda belum terbiasa dengan prosedur ini, tetapi itu adalah hal yang benar untuk dilakukan di sini.
Faheem Mitha
1
jangan setuju dengan jawaban ini. Ada banyak situasi di mana Anda ingin dua versi perangkat lunak diinstal, Anda dapat dengan mudah menginginkan python spesifik untuk aplikasi tertentu. Sysadmin lokal mungkin ingin mengemas python ini, kemana ia harus pergi? Perangkat lunak yang terinstal secara lokal (make install) masuk ke / usr / local, perangkat lunak ke-3 masuk / opt / - definisi paket tetap luas: melalui dpkg, melalui installer, melalui PIP, via (masukkan sistem kemasan pilihan). Saya setuju bahwa itu adalah praktik yang baik dari "penyedia / paket" mandiri.
ashwood
4

/optuntuk perangkat lunak pihak ketiga. Ada paket couchdb untuk debian (maksud saya, resmi), jadi jika Anda mengunduh yang lain, tidak masalah, ia harus diinstal di dalam /optatau di /usr/local/binsalah satu.

D4RIO
sumber
2

Meskipun ini bukan Debian, Pedoman Pengemasan Fedora cukup jelas tentang ini:

... tidak ada paket Fedora yang dapat memiliki file atau direktori di bawah / opt atau / usr / local ...

Alasan paket tidak menempatkan / opt cukup sederhana: Seperti yang ditunjukkan sebelumnya, Standar Hierarki File menyatakan bahwa ...

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.

Itu adalah sesuatu yang tidak dapat dijamin oleh paket karena instalasi atau pembaruan dapat mengubah data tersebut.

Saya tahu Fedora bukan Debian, tapi saya kira dalam hal ini, mereka sangat mirip. Terutama karena Lintian, alat pemeriksaan paket untuk Debian, memiliki kesalahan khusus untuk ini: dir-atau-file-in-opt

Lars Kiesow
sumber