Standardverzeichnis von postgresql bei der Installation über apt-get

15

Wenn Sie postgresql unter 14.04 installieren, wird das Hauptserverprogramm postgres unter folgender Adresse gespeichert:

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

Das Datenverzeichnis, in dem alle Datenbankcluster gespeichert werden:

/var/lib/postgresql/9.3/main

und die Konfigurationsdatei unter:

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

Jetzt kann ich verstehen, warum postgresql.conf und andere Konfigurationsdateien in /etc/postgresql/9.3/main gespeichert sind. Schließlich befinden sich in / etc Konfigurationsdateien auf einem Linux-System.

Warum sollte der Datenbankspeicherbereich jedoch in / var / lib platziert werden? Ich kann / var verstehen, da dies der Ort für nicht statische Daten ist und Datenbanken nicht statisch sind. Aber warum gerade / var / lib?

Außerdem glaube ich, dass / bin für Programme gedacht ist, die zum Booten benötigt werden. / usr / bin ist für Programme, die in der Distribution enthalten sind. und / usr / local / bin sollten für Programme verwendet werden, die nicht in der Distribution enthalten sind, aber für die systemweite Verwendung verfügbar sind. Und da postgresql für die systemweite Verwendung vorgesehen ist, sollte es in / usr / local / bin verfügbar sein. Sie legen es jedoch in / usr / lib ab, wofür ich keine Ahnung habe.

Warum stelle ich diese Frage? Denn ohne Ordnung und Struktur ist es schwierig, sich den Speicherort der Programme zu merken, die Sie täglich verwenden.

Donato
quelle

Antworten:

11

Im Filesystem Hierarchy Standard wird `/ var / lib / wie folgt angegeben (in Kursivschrift der wichtigste Teil):

5.8.1 Zweck

Diese Hierarchie enthält Statusinformationen zu einer Anwendung oder zum System. Statusinformationen sind Daten, die Programme während der Ausführung ändern und die sich auf einen bestimmten Host beziehen. Benutzer dürfen niemals Dateien in / var / lib ändern müssen, um die Operation eines Pakets zu konfigurieren.

Statusinformationen werden im Allgemeinen verwendet, um den Zustand einer Anwendung (oder einer Gruppe miteinander verbundener Anwendungen) zwischen Aufrufen und zwischen verschiedenen Instanzen derselben Anwendung aufrechtzuerhalten. Statusinformationen sollten im Allgemeinen nach einem Neustart gültig bleiben, keine Ausgabe protokollieren und keine Spooldaten sein.

Eine Anwendung (oder eine Gruppe miteinander verbundener Anwendungen) muss ein Unterverzeichnis von / var / lib für ihre Daten verwenden. Es gibt ein erforderliches Unterverzeichnis, / var / lib / misc, das für Statusdateien vorgesehen ist, die kein Unterverzeichnis benötigen. Die anderen Unterverzeichnisse sollten nur vorhanden sein, wenn die betreffende Anwendung in der Distribution enthalten ist.

/ var / lib / ist der Speicherort, der für die Unterstützung aller Distributionspakete verwendet werden muss. Natürlich können unterschiedliche Distributionen unterschiedliche Namen verwenden.

Kurz gesagt: / var / lib / steht für Daten, die lokal verwendet werden.

Es ist also durchaus sinnvoll, die Daten einer Datenbank in das Verzeichnis / var / lib / {mysql | postgress} / zu stellen, aber ... das FHS ist ein Standard, der hauptsächlich für Distributionen erstellt wurde . Als Nutzer haben Sie die Möglichkeit, Ihre Daten an einem beliebigen Ort abzulegen, und dies ist meistens Ansichtssache.


Sie missverstehen das Wort "lokal". / usr / local / bin / ist nicht für die Systemsoftware, sondern für Ihre eigene Software (grundsätzlich darf alles, was "local" enthält, vom System niemals berührt werden. Wie von FHS erklärt:

/ usr / local /

4.9.1 Zweck

Die / usr / local-Hierarchie wird vom Systemadministrator beim lokalen Installieren der Software verwendet. Es muss sicher sein, dass es beim Aktualisieren der Systemsoftware nicht überschrieben wird. Es kann für Programme und Daten verwendet werden, die von einer Gruppe von Hosts gemeinsam genutzt werden können, sich jedoch nicht in / usr befinden. Lokal installierte Software muss in / usr / local und nicht in / usr abgelegt werden, es sei denn, sie wird installiert, um Software in / usr zu ersetzen oder zu aktualisieren.

Eine von der Systemsoftware installierte ausführbare Datei sollte niemals lokal gespeichert werden.


Nun zu / usr / lib / .

4.7.1 Zweck

/ usr / lib enthält Objektdateien, Bibliotheken und interne Binärdateien, die nicht direkt von Benutzern oder Shell-Skripten ausgeführt werden sollen. Anwendungen können ein einzelnes Unterverzeichnis unter / usr / lib verwenden. Wenn eine Anwendung ein Unterverzeichnis verwendet, müssen alle architekturabhängigen Daten, die ausschließlich von der Anwendung verwendet werden, in diesem Unterverzeichnis abgelegt werden.

postgressql ist wahrscheinlich ein daemon beim booten gestartet? Wenn ja, ist es sinnvoll, es hier abzulegen. Sie sollten den Befehl nicht selbst verwenden, sondern einen Dienst starten. Die Dateien in / usr / lib / haben in der Regel einen eigenen Benutzer und eine eigene Gruppe und / oder einen Daemon, der den Zugriff auf / var / lib einschränkt (nur mysqld kann beispielsweise auf / var / lib / mysql / zugreifen; dies gilt auch für postgressql)

Rinzwind
quelle