Sementara keduanya dirancang untuk berisi file yang bukan milik sistem operasi, /opt
dan /usr/local
tidak dimaksudkan untuk berisi set file yang sama.
/usr/local
adalah tempat untuk menginstal file yang dibangun oleh administrator, biasanya dengan menggunakan make
perintah (misalnya, ./configure; make; make install
). Idenya adalah untuk menghindari bentrokan dengan file yang merupakan bagian dari sistem operasi, yang akan ditimpa atau ditimpa yang lokal sebaliknya (misalnya, /usr/bin/foo
merupakan bagian dari OS sementara /usr/local/bin/foo
merupakan alternatif lokal).
Semua file di bawah /usr
dapat dibagikan di antara instance OS, meskipun ini jarang dilakukan dengan Linux. Ini adalah bagian di mana FHS sedikit kontradiktif dengan diri sendiri, seperti /usr
yang didefinisikan sebagai read-only, tetapi /usr/local/bin
perlu dibaca-tulis agar instalasi perangkat lunak lokal dapat berhasil. Standar sistem file SVR4, yang merupakan sumber inspirasi utama FHS, merekomendasikan untuk menghindari /usr/local
dan menggunakan /opt/local
sebagai gantinya untuk mengatasi masalah ini.
/usr/local
adalah warisan dari BSD asli. Pada saat itu, kode sumber /usr/bin
perintah OS berada di /usr/src/bin
dan /usr/src/usr.bin
, sedangkan sumber perintah yang dikembangkan secara lokal berada di /usr/local/src
, dan binari mereka di /usr/local/bin
. Tidak ada gagasan tentang pengemasan (di luar tarbal).
Di sisi lain, /opt
adalah direktori untuk menginstal paket tidak terikat (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
barang-barang, paket-paket ini mengikuti konvensi direktori (atau setidaknya seharusnya demikian). Sebagai contoh, someapp
akan dipasang di /opt/someapp
, dengan salah satu perintahnya /opt/someapp/bin/foo
, file konfigurasinya akan berada /etc/opt/someapp/foo.conf
, dan file log-nya /var/opt/someapp/logs/foo.access
.
/usr/local
adalah versi lokal dari/usr
sistem file, sedangkan/opt
place holder untuk barang-barang misc