Rozwijam demona, który musi przechowywać wiele danych aplikacji, i zauważyłem, że w moim systemie (Fedora 15) jest /usr/local/etc
katalog.
Zdecydowałem się zainstalować mojego demona /usr/local/bin
i potrzebuję miejsca na moje pliki konfiguracyjne.
Nie widziałem tego na Wikipedii . Czy jest to niestandardowe, czy faktycznie jest to standardowe miejsce dla zainstalowanych programów /usr/local/bin
do przechowywania plików konfiguracji?
Powodem jest to, że chcę to sprzedać sys-adminom, a zrozumienie czegoś takiego źle nie jest świetną zaletą ...
directory-structure
fhs
beatgammit
źródło
źródło
/etc/myapp
? Gdybym chciał zmienić konfigurację, byłoby to pierwsze miejsce, w którym szukałem./usr/local/bin
->/usr/local/etc
), ale w tym przypadku wygrywają konwencje.Odpowiedzi:
/usr/local
jest zwykle dla aplikacji zbudowanych ze źródła. tzn. instaluję większość moich pakietów za pomocą czegoś takiegoapt
, ale jeśli pobiorę nowszą wersję czegoś lub oprogramowania nie będącego częścią mojej dystrybucji, zbudowałbym to ze źródła i umieściłbym wszystko w hierarchii `/ usr / local '.Pozwala to na oddzielenie od reszty dystrybucji.
Jeśli tworzysz oprogramowanie dla innych, powinieneś je zaprojektować tak, aby można je było instalować w dowolnym miejscu, ale domyślnie powinny to być zwykłe katalogi systemowe określone przez FHS , gdy określają one prefiks
/usr
(/etc
,/usr/bin
etc.)to znaczy
/usr/local
jest do użytku osobistego, nie powinno to być jedyne miejsce do instalacji oprogramowania.Zapoznaj się dobrze z FHS i użyj standardowych narzędzi systemu Linux, aby umożliwić zbudowanie i zainstalowanie źródła w dowolnym miejscu, aby twórcy pakietów dla różnych dystrybucji mogli je skonfigurować zgodnie z wymaganiami dotyczącymi ich dystrybucji, a użytkownicy mogą je zainstalować,
/usr/local
jeśli chcą lub zwykłe katalogi systemowe, jeśli chcą.źródło
/usr/local/etc
jest standardem dla plików konfiguracyjnych dla tego rodzaju programów.Bardzo krótka odpowiedź
/ etc jest używany przez twój system operacyjny do plików konfiguracyjnych
/ usr / local / etc może być używany do twoich plików konfiguracyjnych przez ciebie i twoje zainstalowane oprogramowanie
źródło
/usr/local/etc
jest rzadko używany w świecie Linuksa. Ale decyzja o tym, czy przechowywać pliki konfiguracyjne/etc
,/usr/local/etc
czy w jakiejś innej lokalizacji, jest zazwyczaj podejmowana w czasie kompilacji (i często może być zastąpiona przez opcję wiersza poleceń lub zmienną środowiskową). Naprawdę nie ma znaczenia, jaka jest domyślna kompilacja, po prostu upewnij się, że łatwo ją ustawić (zazwyczaj jest to opcja--sysconfdir
po autoconf). Jeśli twój demon jest spakowany dla dystrybucji, plik wykonywalny przejdzie do/usr/sbin
(domyślnie w przypadku kompilacji ze źródła/usr/local/sbin
) i konfiguracja poniżej/etc
.Pamiętaj, że
/etc
nie jest to miejsce na „dużo danych aplikacji”. To idzie do/var
. Domyślną wartością przy budowaniu ze źródła może być/var/local/mydaemon
lub/var/lib/mydaemon
; znowu nie ma żadnej silnej konwencji domyślnej przy budowaniu ze źródła. Powinien istnieć sposób na zmianę zarówno domyślnej wartości czasu kompilacji (zwykle za pomocąconfigure --localstatedir
), jak i domyślnej wartości czasu wykonywania (za pomocą ustawienia w pliku konfiguracyjnym, ewentualnie za pomocą opcji wiersza polecenia lub zmiennej środowiskowej).źródło
/usr/local/etc
nie jest używany zbyt często? Podoba mi się pomysł utrzymywania plików konfiguracyjnych na tym samym poziomie systemu plików co plik binarny.bin
ilib
i tak dalej, które mogą być ponownie zainstalowany) na żywo w tym samym miejscu.Jako użytkownik Arch, unikałbym / usr / local alltogether i używałem tylko / etc do konfiguracji. Podczas instalacji ze źródła wolę napisać mały plik PKGBUILD, gdy jestem w nim, i ewentualnie przesłać go do Arch User Repository (AUR), zarówno dla innych, jak i dla mnie na innym komputerze w przyszłości. Sądząc po liczbie pakietów w AUR i szybkości, z jaką są tworzone, nie jestem osamotniony w myśleniu w ten sposób. Zwiększa to szanse dla wszystkich, że pakiet będzie dostępny zamiast instalować go ze źródła i być w stanie uniknąć przestarzałych lokalizacji, takich jak / usr / local.
Debianowi wydaje się również spodobać pomysł zbudowania pakietu źródła zamiast instalowania czegokolwiek w / usr / local, stąd narzędzia takie jak checkinstall .
Utworzenie pakietu źródła, które chcesz zainstalować, byłoby dobrym sposobem na śledzenie, gdzie znajdują się pliki i upewnienie się, że niektóre z nich nie zostaną niekonsekwentnie nadpisane przez inny pakiet lub inny „make install”. Deinstalacja za pomocą polecenia „make uninstall” nie jest dobrym rozwiązaniem. Informacje o tym, która wersja jest zainstalowana, to kolejna rzecz, którą dobrze zarządzają nowi menedżerowie pakietów.
Po prostu całkowicie zrezygnowałbym / usr / local. Nie jest to dobre miejsce do umieszczania czegokolwiek, nie do instalowania pakietów (katalogi systemowe są bardziej odpowiednie) i nie dla użytkowników.
źródło