2

Kerberos で動作するように postgres (8.4.13) を構成しようとしています。私はそれを機能させることができないようです。私が読み続けている「落とし穴」の 1 つは、postgres は kerberos をサポートして構築する必要があるということです。私が持っている postgres は、インターネットからダウンロードした rpm です。この postgres が Kerberos サポート付きで構築されているかどうかを確認するにはどうすればよいですか? 「インストールされたコンポーネントを一覧表示する方法はありますか?ありがとう!!!

4

2 に答える 2

6

pg_config役立つかもしれません、例えば:

pg_config --configure

于 2013-01-28T19:59:57.117 に答える
3

一部のバイナリには、コンパイル方法を確認できるコマンドのようなオプションがあります。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 機能が構成されている場合。

同様に、多くのパッケージング システムには、ビルド プロセスに渡されたコンパイル時オプションを取得するためのメソッドがあります (pkg info -fたとえば、FreeBSD はこれを行います)。rpm を使用してからしばらく経ちましたが、新しいバージョンには、バイナリに対して直接この種のクエリを実行するためのメソッドが含まれている可能性があります。私が管理した rpm ベースのシステムでは、src.rpm ファイルと .spec ファイルを、インストールされた各アプリケーションのローカル リポジトリに保管していました。これは、社内の「ポリシー」に準拠するためでした:-)、構成および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 Kerberos ライブラリです)。

[編集: Milen の回答はおそらく最良の、最も徹底的で推奨されるアプローチだと思いますが、今日私が遭遇した 1 つの警告: 私のシステムのほとんど (これらのほとんどは FreeBSD) で、pg_config は postgresql-client と共にインストールされているようです。 pkg などには、postgresql-server のビルド時に選択されたものとは異なるオプションが設定されている可能性があります。多くの場合、さまざまなマシンで実行されているさまざまなサーバーに接続できるように、クライアントに多くの機能を組み込む傾向があります。クライアント コマンド ライン シェルとライブラリ (ほとんどの RPM ベースまたは Linux システムでは postgresql-devel) を含むパッケージは、DB サーバーに接続する python、perl などのデータベース モジュールとライブラリに機能を提供します。データベース バックエンドでデータを取得して保存する (CRUD) Web アプリケーションがある場合、クライアント ライブラリは別のホストに存在することがよくあります。そうは言っても、ほとんどの場合、クライアント/サーバー/開発用のバイナリ パッケージは同じオプション セットでビルドされています ;-) とにかく、もう 1 つのデータ ポイントです ... 乾杯。

それが役立つことを願っています。

乾杯、

于 2013-01-28T20:09:09.543 に答える