通过apt-get安装时postgresql的默认位置


15

在14.04上安装postgresql时,它将主服务器程序postgres粘贴在:

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

所有数据库集群将存储在的数据目录:

/var/lib/postgresql/9.3/main

和配置文件位于:

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

现在我可以理解为什么postgresql.conf和其他配置文件存储在/etc/postgresql/9.3/main中了。毕竟,/ etc是配置文件存储在linux系统中的位置。

但是,为什么将数据库存储区放在/ var / lib中?我可以理解/ var,因为那是非静态数据的地方,数据库是非静态的。但是为什么特别是/ var / lib?

此外,我相信/ bin是引导所需的程序。/ usr / bin用于分发中包含的程序。和/ usr / local / bin应该用于不包含在发行版中但可以在系统范围内使用的程序。因此,由于postgresql是供系统范围使用的,因此应该在/ usr / local / bin中可用。但是,他们将其放在/ usr / lib中,我不知道为什么。

我为什么要问这个问题?因为没有顺序和结构,很难记住您每天使用的程序的位置。

Answers:


11

在文件系统层次结构标准中,`/ var / lib /表示为(斜体最重要的部分):

5.8.1目的

该层次结构保存与应用程序或系统有关的状态信息。状态信息是程序运行时会修改的数据,并且与一台特定主机有关。用户绝不需要修改/ var / lib中的文件来配置程序包的操作。

状态信息通常用于在调用之间以及同一应用程序的不同实例之间保留应用程序(或一组相互关联的应用程序)的条件。重新启动后,状态信息通常应保持有效,不应记录输出,也不应将其假脱机化。

一个应用程序(或一组相互关联的应用程序)必须使用/ var / lib的子目录作为其数据。有一个必需的子目录/ var / lib / misc,用于不需要子目录的状态文件。其他子目录应仅在分发中包含有关应用程序的情况下存在。

/ var / lib /是所有分发包装支持所必须使用的位置。当然,不同的发行版可能使用不同的名称。

简而言之:/ var / lib /用于本地使用的数据。

因此,将数据库的数据放入/ var / lib / {mysql | postgress} /目录是非常合理的,但是……FHS是一种主要为发行版创建的标准。作为用户,您可以自由地将数据放置在所需的任何位置,这主要是出于见解。


您误解了“本地”一词。/ usr / local / bin /不是用于系统软件,而是用于您自己的软件(基本上,任何带有“ local”的内容都不能被系统触及。如FHS所述:

/ usr /本地/

4.9.1目的

/ usr / local层次结构供系统管理员在本地安装软件时使用。更新系统软件时,必须确保它不会被覆盖。它可用于在一组主机之间可共享但在/ usr中找不到的程序和数据。本地安装的软件必须放在/ usr / local而不是/ usr中,除非要安装它来替换或升级/ usr中的软件。

从系统软件安装的可执行文件永远不要转到本地任何文件。


现在是/ usr / lib /

4.7.1目的

/ usr / lib包含目标文件,库和内部二进制文件,这些文件不打算由用户或shell脚本直接执行。应用程序可以使用/ usr / lib下的单个子目录。如果应用程序使用子目录,则必须将应用程序独占使用的所有与体系结构相关的数据放置在该子目录中。

postgressql可能是启动时启动的守护进程?如果是这样,把它放在这里是有道理的。您不应该自己使用命令,而是启动服务。/ usr / lib /中的文件通常具有自己的用户和组,和/或限制访问/ var / lib的守护进程(例如,只有mysqld可以访问/ var / lib / mysql /;对于PostgreSQL的)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.