web-dev-qa-db-fra.com

emplacement par défaut de postgresql lors de l'installation via apt-get

Lorsque vous installez postgresql le 14.04, le programme principal du serveur postgres se trouve à:

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

le répertoire de données où tous les clusters de bases de données seront stockés à:

/var/lib/postgresql/9.3/main

et le fichier de configuration sur:

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

Je peux maintenant comprendre pourquoi postgresql.conf et d’autres fichiers de configuration sont stockés dans /etc/postgresql/9.3/main. Après tout,/etc est l'endroit où les fichiers de configuration sont stockés dans un système linux.

Cependant, pourquoi placer la zone de stockage de la base de données dans/var/lib? Je peux comprendre/var, car c’est l’endroit idéal pour les données non statiques et les bases de données non statiques. Mais pourquoi/var/lib en particulier?

De plus, je pense que/bin est destiné aux programmes nécessaires au démarrage./usr/bin est destiné aux programmes inclus dans la distribution. et/usr/local/bin doivent être destinés aux programmes non inclus dans la distribution mais disponibles pour une utilisation à l’échelle du système. Et ainsi, puisque postgresql est destiné à une utilisation à l’échelle du système, il devrait être disponible dans/usr/local/bin. Pourtant, ils le placent dans/usr/lib, ce que je ne sais pas pourquoi.

Pourquoi je pose cette question? Parce que sans ordre ni structure, il est difficile de se rappeler l'emplacement des programmes que vous utilisez tous les jours.

14
Donato

Dans la norme de hiérarchie des systèmes de fichiers, `/ var/lib / est indiqué ainsi (la partie la plus importante est en italique):

5.8.1 Objet

Cette hiérarchie contient les informations d'état relatives à une application ou au système. Les informations d'état sont des données que les programmes modifient pendant leur exécution et qui concernent un hôte spécifique. Les utilisateurs ne doivent jamais avoir besoin de modifier les fichiers de/var/lib pour configurer le fonctionnement d'un package.

Les informations d'état sont généralement utilisées pour préserver la condition d'une application (ou d'un groupe d'applications interdépendantes) entre les invocations et entre différentes instances de la même application. Les informations d'état doivent généralement rester valides après un redémarrage, ne doivent pas consigner de sortie et ne doivent pas être des données spoulées.

Une application (ou un groupe d'applications interdépendantes) doit utiliser un sous-répertoire/var/lib pour ses données. Il existe un sous-répertoire obligatoire,/var/lib/misc, destiné aux fichiers d’état ne nécessitant pas de sous-répertoire; les autres sous-répertoires ne doivent être présents que si l'application en question est incluse dans la distribution.

/ var/lib/est l'emplacement qui doit être utilisé pour tous les supports d'emballage de distribution. Différentes distributions peuvent utiliser des noms différents, bien sûr.

En bref:/var/lib/est destiné aux données utilisées localement.

Il est donc parfaitement logique de placer les données d'une base de données dans le répertoire/var/lib/{mysql | postgress}/mais ... le FHS est un standard créé principalement pour être utilisé par les distributions . En tant qu'utilisateur, vous êtes libre de placer vos données où vous le voulez et c'est surtout une question d'opinion.


Vous vous méprenez sur le mot "local"./usr/local/bin/n'est pas destiné au logiciel système, mais à votre propre logiciel (en principe, tout ce qui contient "local" doit ne jamais être touché par le système. Comme l'explique FHS:

/ usr/local /

4.9.1 Objet

La hiérarchie/usr/local est destinée à être utilisée par l’administrateur système lors de l’installation locale du logiciel. Il doit être sécurisé pour ne pas être écrasé lorsque le logiciel système est mis à jour. Il peut être utilisé pour des programmes et des données pouvant être partagés entre un groupe d'hôtes, mais ne se trouvant pas dans/usr. Les logiciels installés localement doivent être placés dans/usr/local plutôt que/usr, sauf s'il est en cours d'installation pour remplacer ou mettre à niveau le logiciel dans/usr.

Un exécutable installé à partir du logiciel système ne doit jamais aller à quelque chose de local.


Maintenant pour / usr/lib / .

4.7.1 Objet

/ usr/lib inclut les fichiers objet, les bibliothèques et les fichiers binaires internes qui ne sont pas destinés à être exécutés directement par les utilisateurs ou les scripts Shell. Les applications peuvent utiliser un seul sous-répertoire sous/usr/lib. Si une application utilise un sous-répertoire, toutes les données dépendantes de l'architecture utilisées exclusivement par l'application doivent être placées dans ce sous-répertoire.

postgressql est probablement un démon démarré au démarrage? Si c'est le cas, il est logique de le mettre ici. Vous n'êtes pas censé utiliser la commande vous-même, mais démarrer un service. Les fichiers de/usr/lib/ont tendance à avoir leur propre utilisateur et groupe et/ou un démon qui restreint l'accès à/var/lib (seul mysqld peut accéder à/var/lib/mysql/par exemple; ce sera la même chose pour postgressql)

10
Rinzwind