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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我尝试用OpenSSL安装Postgres

./configure --with-openssl

但是我弄错了

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

但是,我确实安装了OpenSSL。如果我跑,openssl version我得到这个输出

OpenSSL 0.9.8zh 2016年1月14日

我遇到了这个解决方案并尝试过

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

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

提问于
用户回答回答于

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

您可以运行./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的。它只是为编译期间未使用的标头添加了一个路径。使用lddLinux和otool -LOS X上,看看是否有任何的OpenSSL依赖。

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

另请参阅Postgres问题14308:Postgres 9.5.4未针对OpenSSL 1.1.0进行配置

用户回答回答于

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

在CenotOS / Redhat中

sudo yum安装openssl-devel

扫码关注云+社区

领取腾讯云代金券