RedHat 5.x および 6.x 上の OS ライブラリをチェックするスクリプト

RedHat 5.x および 6.x 上の OS ライブラリをチェックするスクリプト

当社製品には ImageMagick が同梱されています。これにはかなりの数のライブラリが必要です。

libtiff libICE libdl
libfreetype libX11 libglib-2.0
libjpeg libbz2 libxml2
libpng librsvg-2 libz
libfontconfig libgdk_pixbuf-2.0 libm
libXext libm libgomp
libXt libgobject-.0 libpthread
libSM libgmodule-2.0 

これらのライブラリがホスト RedHat オペレーティング システムに既に存在するかどうかを確認する標準的な方法はありますか?

SOとGoogleで検索すると、次のようなコマンドが出てきます。

pkg-config、locate、which

誰かそれをうまく使った人はいますか?

答え1

次のコマンドを試してくださいldd:

ldd ImageMagick

ImageMagick プログラムが参照する動的共有オブジェクト ライブラリと、ライブラリが見つかったかどうかを出力します。

答え2

yum を使用してインストールするだけで、不足している依存関係が表示されます。

何が足りないのか知りたいだけなら、yum-downloadonlyプラグインをインストールすれば、

yum インストール -y ImageMagick --downloadonly

これにより、不足している依存関係はすべてダウンロードされますが、インストールは行われません。

rpmをインストールする前に依存関係を見つける

rpm -qpR 何か.rpm

すべての依存関係がリストされ、それらが存在するかどうかを検索できますが、それは複雑すぎるようです。おそらく yum --downloadonly で十分でしょう。

答え3

を使用することをお勧めしますautoconf。ライブラリに対してダミー プログラムをコンパイルすることで、存在するライブラリを自動的にチェックするツールが内蔵されています。 http://www.gnu.org/software/autoconf/manual/ 例:

AC_CHECK_LIB(MagickWand, GetMagickModule)

これは、呼び出す単純なプログラムをコンパイルしようとしますGetMagickModule()。プログラムを実行しようとするのではなく、コンパイルするだけです。

このautoconfプログラムは、configureライブラリをチェックするために呼び出されるプログラムを生成します。その主な目的は、最終的に Makefile を生成することですが、それが目標である必要はありません。プログラムはconfigure単にライブラリをチェックし、存在しない場合はエラーを返すこともできます。

関連情報