Saya mengembangkan daemon yang perlu menyimpan banyak data aplikasi, dan saya perhatikan bahwa di sistem saya (Fedora 15), ada /usr/local/etc
direktori.
Saya telah memutuskan untuk menginstal daemon saya /usr/local/bin
, dan saya memerlukan tempat untuk file konfigurasi saya.
Saya tidak melihat ini di Wikipedia . Apakah ini non-standar atau ini sebenarnya tempat standar untuk program yang diinstal /usr/local/bin
untuk menyimpan file konfigurasi?
Alasannya, saya ingin memasarkan ini ke sys-admin, dan mendapatkan sesuatu yang salah ini bukan nilai jual yang bagus ...
directory-structure
fhs
hajar
sumber
sumber
/etc/myapp
? Jika saya ingin mengubah konfigurasi, itu akan menjadi tempat pertama yang saya cari./usr/local/bin
->/usr/local/etc
), tetapi konvensi menang dalam kasus ini.Jawaban:
/usr/local
biasanya untuk aplikasi yang dibangun dari sumber. yaitu saya menginstal sebagian besar paket saya menggunakan sesuatu sepertiapt
, tetapi jika saya mengunduh versi yang lebih baru dari sesuatu atau perangkat lunak bukan bagian dari distribusi saya, saya akan membangunnya dari sumber dan memasukkan semuanya ke dalam hierarki `/ usr / local '.Ini memungkinkan pemisahan dari sisa distribusi.
Jika Anda sedang mengembangkan sebuah software untuk orang lain, Anda harus merancang itu sehingga bisa dipasang di mana saja orang ingin, tetapi harus default ke biasa FHS ditentukan direktori sistem ketika mereka menentukan awalan untuk menjadi
/usr
(/etc
,/usr/bin
, dll)yaitu
/usr/local
untuk penggunaan pribadi Anda, seharusnya bukan satu-satunya tempat untuk menginstal perangkat lunak Anda.Baca FHS dengan baik , dan gunakan alat Linux standar untuk memungkinkan sumber Anda dibangun dan diinstal di mana saja sehingga pembuat paket untuk berbagai distribusi dapat mengonfigurasinya sesuai kebutuhan untuk distribusi mereka, dan pengguna dapat memasukkannya ke dalam
/usr/local
jika mereka menginginkannya atau direktori sistem reguler jika mereka mau.sumber
/usr/local/etc
standar untuk file konfigurasi untuk program semacam itu.Jawaban yang sangat singkat
/ etc digunakan oleh OS Anda untuk file konfigurasinya
/ usr / local / etc dapat digunakan untuk file konfigurasi Anda oleh Anda dan perangkat lunak tambahan yang diinstal
sumber
/usr/local/etc
jarang digunakan di dunia Linux. Tetapi keputusan apakah akan menyimpan file konfigurasi/etc
,/usr/local/etc
atau lokasi lain umumnya dibuat pada waktu kompilasi (dan seringkali dapat ditimpa melalui opsi baris perintah atau variabel lingkungan). Tidak masalah apa standarnya ketika dikompilasi, pastikan mudah untuk diatur (biasanya opsi untuk--sysconfdir
, mengikuti autoconf). Jika daemon Anda dikemas untuk distribusi, executable akan masuk ke/usr/sbin
(default ketika membangun dari sumber seharusnya/usr/local/sbin
) dan konfigurasi di bawah/etc
.Perhatikan bahwa
/etc
itu bukan tempat untuk "banyak data aplikasi". Itu masuk ke dalam/var
. Default ketika membangun dari sumber bisa/var/local/mydaemon
atau/var/lib/mydaemon
; sekali lagi tidak ada konvensi yang kuat baik untuk default ketika membangun dari sumber. Seharusnya ada cara untuk mengubah standar waktu kompilasi (biasanya denganconfigure --localstatedir
) dan run-time default (dengan pengaturan dalam file konfigurasi, mungkin dengan opsi baris perintah atau variabel lingkungan).sumber
/usr/local/etc
tidak sering digunakan? Saya suka ide menjaga file konfigurasi pada tingkat yang sama dari sistem file dengan biner.bin
danlib
dan sebagainya yang dapat diinstal ulang) tinggal di tempat yang sama.Sebagai pengguna Arch, saya akan menghindari / usr / local alltogether dan menggunakan hanya / etc untuk konfigurasi. Ketika menginstal dari sumber, saya lebih suka menulis file PKGBUILD kecil sementara saya berada di sana, dan mungkin mengunggahnya ke Arch User Repository (AUR), baik untuk orang lain dan saya sendiri di komputer lain di masa depan. Dilihat oleh jumlah paket di AUR, dan kecepatan pembuatannya, saya tidak sendirian dalam berpikir seperti ini. Ini meningkatkan peluang bagi semua orang bahwa suatu paket akan tersedia alih-alih harus menginstalnya dari sumber, dan mampu menghindari lokasi usang seperti / usr / local.
Debian juga tampaknya menyukai ide untuk membangun paket sumber daripada menginstal apa pun ke / usr / local, maka utilitas seperti checkinstall .
Membuat paket dari sumber yang ingin Anda instal akan menjadi cara yang baik untuk melacak di mana file berada dan pastikan tidak ada dari mereka yang ditimpa secara tidak konsisten oleh paket lain atau "make install" lainnya. Menghapus instalan dengan "make uninstall" bukanlah solusi yang baik. Informasi tentang versi mana yang diinstal adalah hal lain yang dapat dilakukan manajer paket modern dengan baik.
Saya hanya akan melepaskan / usr / lokal sepenuhnya. Ini bukan tempat yang baik untuk meletakkan apa pun, bukan untuk menginstal paket (direktori seluruh sistem lebih cocok) dan bukan untuk pengguna.
sumber