我正在尝试配置postgres (8.4.13)以使用Kerberos。我似乎不能让它工作。我一直在读到的一个“问题”是postgres必须支持kerberos。我的postgres是从网上下载的rpm。我如何判断这个postgres是否支持Kerberos?有没有办法列出“已安装的组件?谢谢!
发布于 2013-01-29 03:59:57
pg_config可能会有所帮助,例如:
pg_config --configure
发布于 2013-01-29 04:09:10
一些二进制文件有类似命令的选项,可以让你看到它们是如何编译的。我不确定postgres是否会这么做。您可以使用--version (但这通常是非常简约的)和--describe-config,这将转储值,如:
Security and Authentication STRING FILE:/usr/local/etc/postgresql/krb5.keytab
Sets the location of the Kerberos server key file如果为postgresql安装配置了kerberos功能。
此外,许多打包系统都有一些方法来捕获传递给构建过程的编译时选项(例如,FreeBSD的pkg info -f就是这样做的)。自从我使用rpm以来已经有一段时间了,更新的版本可能有直接在二进制文件上进行这种查询的方法。在我管理的基于rpm的系统上,我会将src.rpm和.spec文件放在每个已安装应用程序的本地存储库中。这是为了遵守内部“策略”:-)并跟踪configure和OPTFLAGS设置、构建中使用的源代码等。
以下是对类似问题的回答:
https://serverfault.com/questions/36037/how-can-i-find-what-options-an-rpm-was-compiled-with
查看二进制文件链接到哪个库的通用UNIX方法是使用"ldd“,如下所示:
$~/ ldd /usr/local/bin/postgres
/usr/local/bin/postgres:
libgssapi.so.3 => /usr/local/lib/libgssapi.so.3 (0x800a38000)
libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x800b74000)
libpam.so.5 => /usr/lib/libpam.so.5 (0x800dc4000)
libssl.so.6 => /usr/lib/libssl.so.6 (0x800ecc000)
libcrypto.so.6 => /lib/libcrypto.so.6 (0x80101f000)
libm.so.5 => /lib/libm.so.5 (0x8012bf000)
libc.so.7 => /lib/libc.so.7 (0x8013df000)
libintl.so.9 => /usr/local/lib/libintl.so.9 (0x801621000)
libheimntlm.so.1 => /usr/local/lib/libheimntlm.so.1 (0x80172a000)
libkrb5.so.26 => /usr/local/lib/libkrb5.so.26 (0x801830000)
libheimbase.so.1 => /usr/local/lib/libheimbase.so.1 (0x8019ad000)
libhx509.so.5 => /usr/local/lib/libhx509.so.5 (0x801ab1000)
libwind.so.0 => /usr/local/lib/libwind.so.0 (0x801bf9000)
libsqlite3.so.8 => /usr/local/lib/libsqlite3.so.8 (0x801d21000)
libasn1.so.8 => /usr/local/lib/libasn1.so.8 (0x801ec3000)
libcom_err.so.2 => /usr/local/lib/libcom_err.so.2 (0x802058000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x80215b000)
libroken.so.19 => /usr/local/lib/libroken.so.19 (0x802358000)
libcrypt.so.5 => /lib/libcrypt.so.5 (0x802469000)
libthr.so.3 => /lib/libthr.so.3 (0x802589000)
libz.so.5 => /lib/libz.so.5 (0x8026a2000)正如您在我的系统上看到的,postgresql二进制文件与libkrb5.so.26、libgssapi.so.3、libheimntlm.so.1等(这些是Heimdal库)链接在一起。
编辑:我仍然认为米伦的回应很可能是最好的、最全面的和推荐的方法,但我今天遇到了一个警告:在我的大多数系统(其中大多数是FreeBSD)上,pg_config似乎是与postgresql-client pkg一起安装的,因此可能会有与构建postgresql-server时不同的选项设置。我倾向于在客户端中构建大量功能,以便它们可以连接到一系列服务器,这些服务器通常运行在不同的机器上。带有客户机命令行shell和库的包(大多数基于RPM或Linux系统中的postgresql-devel)为连接到DB服务器的python、perl等数据库模块和库提供了功能。当您有一个在数据库后端抓取和存储数据(CRUD)的web应用程序时,客户端库通常驻留在单独的主机上。也就是说,最可能的二进制客户端/服务器/devel包是使用相同的选项集构建的;-)不管怎样,只是另一个数据点...干杯。
希望这能有所帮助。
干杯,
https://stackoverflow.com/questions/14569130
复制相似问题