当您在 14.04 上安装 postgresql 时,它会将主服务器程序 postgres 粘贴在:
/usr/lib/postgresql/9.3/bin/postgres
Run Code Online (Sandbox Code Playgroud)
将存储所有数据库集群的数据目录:
/var/lib/postgresql/9.3/main
Run Code Online (Sandbox Code Playgroud)
和配置文件在:
/etc/postgresql/9.3/main/postgresql.conf
Run Code Online (Sandbox Code Playgroud)
现在我明白为什么 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 中,我不知道为什么。
我为什么要问这个问题?因为没有秩序和结构,很难记住你每天使用的程序的位置。
Rin*_*ind 14
在文件系统层次结构标准中,`/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 解释的那样:
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)
| 归档时间: |
|
| 查看次数: |
63025 次 |
| 最近记录: |