特定のサーバーにインストールされている Apache Portable Runtime のバージョンを確認する必要があります。
では、ログ ファイルにアクセスせずにこれを実行するにはどうすればよいですか?
答え1
C を1行書いてください:
# cat apr.c
int main(void) {
printf("%s\n",apr_version_string());
}
コンパイルする(libaprへの適切なパスを見つける)
# gcc -o apr apr.c /usr/pkg/lib/libapr-1.a
実行する
# ./apr
1.3.3
PS: libaprを見つけるには、
ls /usr/lib/libapr*; ls /usr/local/lib/libapr*;ls /lib/libapr*;locate libapr; ...
または、Apacheで使用されているバージョンを見つけたい場合は、davidが言うようにhttpdでlddを実行します。
答え2
あまり多くの情報は提供されていませんが、試すことができる方法がいくつかあります。
- パッケージ マネージャーに問い合わせてください。これは、パッケージ管理システムを介してシステム全体の libapr がインストールされていることを前提としています。Debian の場合は です
dpkg -l "*apr*"
。RPM の場合は のようになりますrpm -qa | grep -i apr
。 - もちろん、ソースからインストールした可能性もあります。その場合、ライブラリのバージョン番号はファイル名にエンコードされている可能性があります。実行する
locate libapr
と、「/usr/lib/libapr-1.2.3.so」のような内容が表示されます。 - おそらく、それでも見つからないでしょう。試してみると
ldd /usr/sbin/httpd
(またはバイナリを使用している APR が何であっても)、バイナリが使用するライブラリ ファイルが表示されます。これにより、バージョン番号も表示されるか、名前にバージョン番号が含まれるファイルへのシンボリック リンクの場所が表示されます。 - 最後に、バイナリに APR が静的にリンクされている可能性があります。上記の ldd のリストに APR が含まれていないかどうかでわかります。実行して
strings /usr/sbin/httpd
、可能性のあるバージョン番号を調べることで、バージョン番号を取得できる可能性があります。バージョン番号がエンコードされた .so ファイルがない場合にも、これを実行できます。
答え3
$ find / -name *apr* 2>/dev/null 1>/tmp/apr-findings
$ less /tmp/apr-findings
これは私にとっては役に立ちました。ドキュメントがあまりにも悪かったからです。これより良い解決策は知りません。
という名前のファイルを見つけてlibapr*.la
、そのバージョン番号がわからない場合は、それを調べてください。私の場合は次のようになります。
# Version information for libapr-0.
current=9
age=9
revision=4
答え4
Apache にリンクされているバージョンを知りたいだけの場合は、/usr/local/apache2/bin/httpd -V を実行するとわかります。