如何从源代码编译postresql并将其安装到一个独立的位置?

时间:2015-09-01 01:07:17

标签: c postgresql makefile

我正在尝试对postgres代码执行一些测试,我需要迭代编译代码,一遍又一遍地运行代码。

出于这个原因,我不想做'make install',因为清理它会很痛苦。我想在一个目录下安装所有相关文件,比如/ tmp / pgsql_test1。

我看到make check执行make -C . DESTDIR='/whatever'

但是,据我所知,pgsql的文档中没有记录。我也不是c / c ++开发人员,所以我不知道这是不是标准的东西。 -C标志似乎暗示只安装了客户端库。我想在正常使用情况下执行pgsql,包括侦听网络的部分,解析sql等。

1 个答案:

答案 0 :(得分:1)

您可以使用configure脚本控制postgres安装的位置。几乎所有使用autotools的软件都是如此(这就是制作configure脚本的原因)。

您始终可以通过运行./configure --help来查看配置选项。在这种情况下,这些是相关选项:

masheen(~/postgres-src) > ./configure --help

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/pgsql]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

...

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/postgresql]

如果您指定--prefix,它将覆盖--exec-prefix,并且这两个驱动大部分零件安装位置。

masheen(~/postgres-src) > ./configure --prefix=/tmp/pgsql_tmp1