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

Modified on: Sun, 10 Jun 2018 04:51:53 +0800

当您在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中,我不明白为什么。

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

作者:Donato

最佳答案

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

  

5.8.1目的

  
  

此层次结构包含与应用程序或属性相关的状态信息   系统。状态信息是程序在其中修改的数据   运行,并且属于一个特定的主机。用户必须永远不需要
  修改/ var / lib中的文件以配置包的操作。

  
  

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

  
  

应用程序(或一组相互关联的应用程序)必须使用a
  / var / lib的子目录用于其数据。有一个
  必需的子目录,/ var / lib / misc,用于状态
  不需要子目录的文件;其他子目录应该
  只有在相关申请被包含在内的情况下才会出现
  分布。

  
  

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

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

因此将数据库的数据放入/ var / lib / {mysql | postgress} /目录是完全合理的,但是...... FHS是一个主要由发行版使用的标准。作为用户,您可以随意将数据放在任何地方,这主要是意见问题。


你误解了“本地”这个词。 / usr / local / bin /不是用于系统软件,而是用于您自己的软件(基本上任何带有“local”的东西都不能被系统触及。正如FHS所解释的那样:

/ usr / local /

  

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 /;这对于postgressql)

作者:Rinzwind

相关问答

添加新评论