Dans le Filesystem Hierarchy Standard, `/ var / lib / est indiqué comme (en italique la partie la plus importante):
5.8.1 Objet
Cette hiérarchie contient des 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 se rapportent à un hôte spécifique. Les utilisateurs ne doivent jamais avoir à modifier des fichiers dans / var / lib pour configurer le fonctionnement d'un package.
Les informations d'état sont généralement utilisées pour préserver l'état 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 être une sortie de journalisation 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 de / var / lib pour ses données. Il existe un sous-répertoire requis, / var / lib / misc, qui est destiné aux fichiers d'état qui n'ont pas besoin d'un 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 toute la prise en charge des packages de distribution. Bien entendu, différentes distributions peuvent utiliser des noms différents.
En bref: / var / lib / est pour les données qui sont 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 souhaitez et c'est surtout une question d'opinion.
Vous comprenez mal le mot «local». / usr / local / bin / n'est pas pour le logiciel système mais pour votre propre logiciel (fondamentalement, tout ce qui a une entrée "locale" ne doit jamais être touché par le système. Comme expliqué par FHS:
/ usr / local /
4.9.1 Objet
La hiérarchie / usr / local doit être utilisée par l'administrateur système lors de l'installation locale du logiciel. Il doit être protégé contre l’écrasement lors de la mise à jour du logiciel système. Il peut être utilisé pour des programmes et des données qui peuvent être partagés entre un groupe d'hôtes, mais qui ne se trouvent pas dans / usr. Le logiciel installé localement doit être placé dans / usr / local plutôt que dans / usr, sauf s'il est installé pour remplacer ou mettre à niveau le logiciel dans / usr.
Un exécutable installé à partir du logiciel système ne doit jamais aller vers quelque chose de local.
Maintenant pour / usr / lib / .
4.7.1 Objet
/ usr / lib inclut des fichiers objets, des bibliothèques et des 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 dans / 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)