Menurut Standar Hirarki Sistem File, /opt
adalah untuk "penginstalan paket perangkat lunak aplikasi tambahan". /usr/local
adalah "untuk digunakan oleh administrator sistem saat menginstal perangkat lunak secara lokal". Kasus penggunaan ini tampak sangat mirip. Perangkat lunak yang tidak disertakan dengan distribusi biasanya dikonfigurasi secara default untuk diinstal di /usr/local
atau /opt
tanpa sajak atau alasan tertentu yang mereka pilih.
Apakah ada perbedaan yang saya lewatkan, atau keduanya melakukan hal yang sama, tetapi ada karena alasan historis?
Jawaban yang Diterima:
Meskipun keduanya dirancang untuk memuat file yang bukan milik sistem operasi, /opt
dan /usr/local
tidak dimaksudkan untuk berisi kumpulan file yang sama.
/usr/local
adalah tempat untuk menginstal file yang dibangun oleh administrator, biasanya dengan menggunakan make
perintah (mis., ./configure; make; make install
). Idenya adalah untuk menghindari bentrokan dengan file yang merupakan bagian dari sistem operasi, yang akan ditimpa atau menimpa file lokal (mis., /usr/bin/foo
adalah bagian dari OS saat /usr/local/bin/foo
adalah alternatif lokal).
Semua file di bawah /usr
dapat dibagikan di antara instance OS, meskipun hal ini jarang dilakukan dengan Linux. Ini adalah bagian di mana FHS sedikit kontradiktif, seperti /usr
didefinisikan sebagai read-only, tetapi /usr/local/bin
perlu dibaca-tulis agar instalasi perangkat lunak lokal berhasil. Standar sistem file SVR4, yang merupakan sumber inspirasi utama FHS, merekomendasikan untuk menghindari /usr/local
dan gunakan /opt/local
sebagai gantinya untuk mengatasi masalah ini.
/usr/local
adalah warisan dari BSD asli. Pada saat itu, kode sumber /usr/bin
Perintah OS ada di /usr/src/bin
dan /usr/src/usr.bin
, sedangkan sumber perintah yang dikembangkan secara lokal ada di /usr/local/src
, dan binernya di /usr/local/bin
. Tidak ada istilah pengemasan (di luar tarball).
Sebaliknya, /opt
adalah direktori untuk menginstal paket yang tidak dibundel (yaitu paket bukan bagian dari distribusi Sistem Operasi, tetapi disediakan oleh sumber independen), masing-masing dalam subdirektori sendiri. Mereka sudah membangun seluruh paket yang disediakan oleh distributor perangkat lunak pihak ketiga yang independen. Tidak seperti /usr/local
hal-hal, paket-paket ini mengikuti konvensi direktori (atau setidaknya seharusnya). Misalnya, someapp
akan dipasang di /opt/someapp
, dengan salah satu perintahnya adalah /opt/someapp/bin/foo
, file konfigurasinya ada di /etc/opt/someapp/foo.conf
, dan file lognya di /var/opt/someapp/logs/foo.access
.