我有一台装有 Ubuntu 12.04.5 (precise) 的服务器,它在两个不同的端口 (5432 和 5433) 上运行两个不同的 PostgreSQL 版本 (8.3 和 9.1)。我从默认软件包源安装了它们。一切都运行良好且干净。
8.3 安装程序使用 PostGIS 插件(版本 1.5.3-2)。对于 9.1 安装程序,我想安装版本 > 2.0 的 PostGIS。我担心,当我手动安装新的 PostGIS 版本时,会破坏(重要的)正在运行的 8.3 安装程序。./configure-script 的前缀参数似乎已损坏而且我不知道如何防止新版本覆盖旧版本。
有没有安全的方法可以在 9.1 设置中启用新的扩展版本?
如果您需要有关系统的更多信息来回答这个问题,请告诉我。
答案1
我有一个运行 postgreSQL 服务器 9.1、9.3 和 9.5 的 Ubuntu 16.04,其中 9.5 安装了 postgis 2.2(通过软件包 postgresql-9.5-postgis-2.2)。在正常的服务器安装中,有/usr/bin/pg_config
一个脚本,它首先查找pg_config
(/usr/lib/postgresql/*/bin/
如果存在,则使用最新版本),如果没有,则使用/usr/bin/pg_config.libpq-dev
客户端开发人员安装的一部分。您可以尝试运行pg_config
以查看它是否找到版本以及它指向的位置。
我下载了postgis-2.2.4.tar.gz
,解压并尝试运行 ./configure。结果出现了一条错误消息,说我必须安装服务器开发人员包。所以我照做了sudo apt-get install postgresql-server-dev-9.5
(对于 9.5;你应该安装 9.1,请参阅http://packages.ubuntu.com/precise/postgresql-server-dev-9.1)。这确实提供了/usr/lib/postgresql/9.5/bin/pg_config
,并且./configure
确实成功了。
grep PGSQL config.log
给了
| #define PGSQL_LOCALEDIR "/usr/share/locale"
| #define POSTGIS_PGSQL_VERSION 95
| #define PGSQL_LOCALEDIR "/usr/share/locale"
| #define POSTGIS_PGSQL_VERSION 95
| #define PGSQL_LOCALEDIR "/usr/share/locale"
| #define POSTGIS_PGSQL_VERSION 95
| #define PGSQL_LOCALEDIR "/usr/share/locale"
| #define POSTGIS_PGSQL_VERSION 95
PGSQL_BE_CPPFLAGS='-I/usr/include/postgresql/9.5/server'
PGSQL_BINDIR='/usr/lib/postgresql/9.5/bin'
PGSQL_DOCDIR='/usr/share/doc/postgresql-doc-9.5'
PGSQL_FE_CPPFLAGS='-I/usr/include/postgresql'
PGSQL_FE_LDFLAGS='-L/usr/lib/x86_64-linux-gnu -lpq'
PGSQL_MANDIR='/usr/share/postgresql/9.5/man'
PGSQL_SHAREDIR='/usr/share/postgresql/9.5'
POSTGIS_PGSQL_VERSION='95'
#define PGSQL_LOCALEDIR "/usr/share/locale"
#define POSTGIS_PGSQL_VERSION 95
因此安装路径(BINDIR、DOCDIR、MANDIR 和 SHAREDIR)都指向最新(9.5)安装。成功后make
(make -n install
一定不要忘记-n
!)显示安装路径。大多数都指向/usr/lib/postgresql/9.5/lib
和/usr/share/postgresql/9.5/extension
,但 除外liblwgeom
,它将安装在/usr/local/lib
和中/usr/local/include
。
因此,您可以先尝试一下./configure
(这不会造成任何损害),看看它是否会出现错误,如果没有,安装会转到哪里。可能您必须安装开发文件,这也会安装pg_config
适合您版本的正确文件。只要您不这样做sudo make install
,就不应该安装任何东西。
当然,对您正在运行的安装进行可信的当前备份!