Postgresql 如何判断postgres是否安装了kerberos?

Postgresql 如何判断postgres是否安装了kerberos?,postgresql,kerberos,Postgresql,Kerberos,我正在尝试将postgres(8.4.13)配置为使用Kerberos。我似乎无法让它工作。我一直在读的一个“问题”是postgres必须使用kerberos支持构建。嗯,我的博士后是从互联网上下载的rpm。我如何判断此postgres是否使用Kerberos支持构建?是否有办法列出“已安装的组件”?谢谢!!!可能会有帮助,例如: pg\u config--configure一些二进制文件具有类似命令的选项,可以让您查看它们是如何编译的。我不确定postgres是否会这样做。您可以使用--ver

我正在尝试将postgres(8.4.13)配置为使用Kerberos。我似乎无法让它工作。我一直在读的一个“问题”是postgres必须使用kerberos支持构建。嗯,我的博士后是从互联网上下载的rpm。我如何判断此postgres是否使用Kerberos支持构建?是否有办法列出“已安装的组件”?谢谢!!!

可能会有帮助,例如:


pg\u config--configure

一些二进制文件具有类似命令的选项,可以让您查看它们是如何编译的。我不确定postgres是否会这样做。您可以使用--version(但这通常是非常简单的)和--description-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文件保存在每个已安装应用程序的本地存储库中。这是为了遵守“内部”策略“:-)并跟踪配置和OPTFLAGS设置、生成中使用的源代码等

下面是对一个类似问题的回答:

查看二进制文件链接到哪个库的通用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 Kerberos库)

[编辑:我仍然认为米伦的回答很可能是最好的、最彻底的和推荐的方法,但我今天遇到了一个警告:在我的大多数系统上(大多数都是FreeBSD)pg_config似乎是与postgresql客户端pkg一起安装的,因此可能会设置不同于构建postgresql server时选择的选项。我倾向于在客户端中构建大量功能,以便它们可以连接到通常在不同机器上运行的一系列服务器。客户端的软件包命令行shell和库(大多数基于RPM或Linux系统中的postgresql-devel)为连接到DB服务器的python、perl等数据库模块和库提供了功能。当您有一个web应用程序正在捕获和存储数据(CRUD)时,客户机库通常位于单独的主机上也就是说,最有可能的二进制客户端/服务器/开发包是使用相同的选项集构建的;-) 无论如何,这只是另一个数据点……干杯。]

希望有帮助


干杯,

“一些二进制文件具有类似命令的选项,可以让您查看它们是如何编译的。我不确定您的postgres版本是否可以做到这一点。”。是的!见下面米伦的答案。我会投票支持这一回应,但我10分钟前才加入,没有任何声望点数!有人投票支持我的长篇大论,我也会投票支持米伦的简洁:)非常有帮助。。谢谢我找剧本有点困难。为了防止有人感兴趣,它位于postres-devel包(运行CentOS 6)中。因此,要明确的是,如果此命令显示的标志之一是
--with-krb5
,那么是否安装了Kerberos?