在解决另一个问题时,我注意到在我的 Ubuntu 14.04 系统中有两个postgresql
目录包含一个postgresql.conf
文件:
- /usr/share/postgresql
- /etc/postgresql/9.3/main/
具有以下目录结构:
$ tree -d /usr/share/postgresql
/usr/share/postgresql
├── 9.3
│ ├── extension
│ ├── man
│ │ ├── man1
│ │ └── man7
│ ├── timezonesets
│ └── tsearch_data
└── 9.4
└── man
├── man1
└── man7
... 和:
$ tree -d /etc/postgresql/9.3/main/
/etc/postgresql/9.3/main/
postgresql.conf
文件位于以下位置:
- /usr/share/postgresql/9.3/postgresql.conf
- /etc/postgresql/9.3/main/postgresql.conf
通过使用SHOW config_file;
,我已经验证了我的服务器正在使用哪个配置文件:
postgres=# SHOW config_file;
config_file
------------------------------------------
/etc/postgresql/9.3/main/postgresql.conf
(1 row)
我的问题是为什么我会postgresql.conf
在两个位置找到该文件,以上是否表明我应该清除一些未使用的安装或其他未使用的工件?
下面
/usr/share/postgresql/
的文件应该是不打算编辑的数据文件。它们不是实时配置文件。https://wiki.debian.org/FilesystemHierarchyStandard上的 FHS 规范 将 /usr 定义为:
另一方面,下面
/etc/postgresql/X.Y/main
的文件是使用版本 XY 命名的 PostgreSQL 集群的实时配置文件main
,例如由 command 创建的pg_createcluster
。每个集群(=每个 postgres 实例)都有自己postgresql.conf
的生成,作为该集群的其他可写配置和数据文件。postgresql.conf
就个人而言,在我的 Ubuntu 14.04 上,我在 /usr 下找不到。但是,在 有一个模板文件/usr/share/postgresql/9.3/postgresql.conf.sample
,但请注意.sample
后缀。该文件属于
postgresql-9.3
包,如下所示dpkg -S
:它也与 http://packages.ubuntu.com/trusty/amd64/postgresql-9.3/filelist一致
您可以在您的系统上尝试
dpkg -S postgresql.conf
并检查是否/usr/share/postgresql/9.3/postgresql.conf
是结果的一部分,如果是,它属于哪个包,然后该包的来源是什么。也许出于某种原因,它与示例 postgresql.conf 相同,只是它没有.sample
后缀。