使用OpenSSL配置Postgres和'--with-openssl'选项

时间:2016-09-01 23:38:05

标签: postgresql openssl autoconf

我尝试使用OpenSSL安装Postgres

./configure --with-openssl

但是我说错误

  

configure:错误:头文件openssl需要openssl / ssl.h

但是,我确实安装了OpenSSL。如果我运行openssl version,我会得到此输出

  

OpenSSL 0.9.8zh 2016年1月14日

我遇到了this solution并尝试了

./configure --with-includes=/usr/local/ssl/include安装没有任何问题。

有人可以解释发生了什么以及两个配置版本之间的区别吗?

2 个答案:

答案 0 :(得分:2)

  

有人可以解释发生了什么以及两个配置版本之间的区别。

您可以运行./configure --help来获取参数概要:

$ ./configure --help | egrep -i '(ssl|includes)'
  --with-includes=DIRS    look for additional header files in DIRS
  --with-openssl          build with OpenSSL support
  

./configure --with-openssl

这简单地在Postgres中启用了OpenSSL。它可以检查Autoconf,例如探测符号CRYPTO_new_ex_dataSSL_Library_init

它看起来像配置定义#define USE_OPENSSL 1,它激活OpenSSL代码路径:

$ grep -IR OPENSSL * | grep '.c'
...
src/backend/postmaster/fork_process.c:#ifdef USE_OPENSSL
src/backend/postmaster/fork_process.c:#ifdef USE_OPENSSL
src/backend/utils/init/postinit.c:#ifdef USE_OPENSSL
src/backend/utils/init/postinit.c:#ifdef USE_OPENSSL
src/include/libpq/libpq-be.h:#ifdef USE_OPENSSL
src/include/libpq/libpq-be.h:#ifdef USE_OPENSSL
...
  

./configure --with-includes=/usr/local/ssl/include

这可能启用OpenSSL。它只是为编译期间未使用的标头添加了一个路径。在Linux上使用ldd,在OS X上使用otool -L以查看是否存在任何OpenSSL依赖项。

您应该使用./configure --with-openssl --with-includes=/usr/local/ssl/include --with-libraries=/usr/local/ssl/lib。您应该添加CFLAGS="-Wl,-rpath=/usr/local/ssl/lib以确保正确的运行时链接。

另见Postgres Issue 14308: Postgres 9.5.4 does not configure against OpenSSL 1.1.0

答案 1 :(得分:0)

安装OpenSSL-devel,它将为您提供所有依赖项。对我有帮助。

在CenotOS / Redhat中

sudo yum install openssl-devel