domyślna lokalizacja postgresql podczas instalacji przez apt-get

15

Po zainstalowaniu postgresql 14.04, przykleja postgres głównego programu serwera do:

/usr/lib/postgresql/9.3/bin/postgres

katalog danych, w którym będą przechowywane wszystkie klastry baz danych:

/var/lib/postgresql/9.3/main

oraz plik konfiguracyjny w:

/etc/postgresql/9.3/main/postgresql.conf

Teraz rozumiem, dlaczego postgresql.conf i inne pliki konfiguracyjne są przechowywane w /etc/postgresql/9.3/main. W końcu / etc jest miejscem przechowywania plików konfiguracyjnych w systemie Linux.

Dlaczego jednak umieszczać obszar przechowywania bazy danych w / var / lib? Rozumiem / var, ponieważ jest to miejsce dla danych niestatycznych, a bazy danych są niestatyczne. Ale dlaczego w szczególności / var / lib?

Ponadto uważam, że / bin jest dla programów wymaganych do rozruchu. / usr / bin jest dla programów zawartych w dystrybucji. i / usr / local / bin powinny być przeznaczone dla programów nieobjętych dystrybucją, ale dostępnych do użytku ogólnosystemowego. A zatem, ponieważ postgresql jest przeznaczony do użytku ogólnosystemowego, powinien być dostępny w / usr / local / bin. Jednak umieszczają go w katalogu / usr / lib, co nie mam pojęcia, dlaczego.

Dlaczego zadaję to pytanie? Ponieważ bez porządku i struktury trudno jest zapamiętać lokalizację programów, z których korzystasz na co dzień.

Donato
źródło

Odpowiedzi:

11

W standardzie hierarchii systemów plików `/ var / lib / jest określony jako (kursywą najważniejszą częścią):

5.8.1 Cel

W tej hierarchii przechowywane są informacje o stanie dotyczące aplikacji lub systemu. Informacje o stanie to dane, które programy modyfikują podczas działania i dotyczą jednego określonego hosta. Użytkownicy nigdy nie muszą modyfikować plików w / var / lib, aby skonfigurować działanie pakietu.

Informacje o stanie są zwykle używane do zachowania stanu aplikacji (lub grupy powiązanych aplikacji) między wywołaniami i między różnymi instancjami tej samej aplikacji. Informacje o stanie powinny zasadniczo pozostawać aktualne po ponownym uruchomieniu, nie powinny rejestrować danych wyjściowych i nie powinny być buforowane danych.

Aplikacja (lub grupa powiązanych ze sobą aplikacji) musi używać podkatalogu / var / lib dla swoich danych. Jest jeden wymagany podkatalog, / var / lib / misc, który jest przeznaczony dla plików stanu, które nie potrzebują podkatalogu; inne podkatalogi powinny być obecne tylko wtedy, gdy dana aplikacja jest uwzględniona w dystrybucji.

/ var / lib / to lokalizacja, która musi być używana do obsługi wszystkich pakietów dystrybucyjnych. Różne dystrybucje mogą oczywiście używać różnych nazw.

W skrócie: / var / lib / dotyczy danych używanych lokalnie.

Dlatego umieszczenie danych bazy danych w katalogu / var / lib / {mysql | postgress} / / ma sens, ale ... FHS jest standardem stworzonym głównie do użytku przez dystrybucje . Jako użytkownik możesz swobodnie umieszczać swoje dane gdziekolwiek chcesz i jest to głównie kwestia opinii.


Nie rozumiesz słowa „lokalny”. / usr / local / bin / nie jest przeznaczony dla oprogramowania systemowego, ale dla własnego oprogramowania (w zasadzie wszystko, co zawiera „lokalne”, nigdy nie może być dotknięte przez system. Jak wyjaśnia FHS:

/ usr / local /

4.9.1 Cel

Hierarchia / usr / local jest używana przez administratora systemu podczas lokalnej instalacji oprogramowania. Przed aktualizacją oprogramowania systemowego należy zabezpieczyć go przed nadpisaniem. Może być używany do programów i danych, które można udostępniać w grupie hostów, ale nie można ich znaleźć w / usr. Oprogramowanie zainstalowane lokalnie musi być umieszczone w katalogu / usr / local zamiast / usr, chyba że jest instalowane w celu zastąpienia lub aktualizacji oprogramowania w / usr.

Plik wykonywalny zainstalowany z oprogramowania systemowego nigdy nie powinien przechodzić do niczego lokalnego.


Teraz dla / usr / lib / .

4.7.1 Cel

/ usr / lib zawiera pliki obiektowe, biblioteki i wewnętrzne pliki binarne, które nie są przeznaczone do bezpośredniego uruchamiania przez użytkowników ani skrypty powłoki. Aplikacje mogą korzystać z jednego podkatalogu w katalogu / usr / lib. Jeśli aplikacja korzysta z podkatalogu, wszystkie dane zależne od architektury wykorzystywane wyłącznie przez aplikację muszą zostać umieszczone w tym podkatalogu.

postgressql jest prawdopodobnie demonem uruchomionym przy starcie systemu? Jeśli tak, warto to tutaj umieścić. Nie należy używać polecenia samodzielnie, ale uruchomić usługę. Pliki w / usr / lib / mają zwykle własnego użytkownika i grupę i / lub demona, który ogranicza dostęp do / var / lib (na przykład tylko mysqld może uzyskać dostęp do / var / lib / mysql /; będzie to takie samo dla postgressql)

Rinzwind
źródło