ソースから何かをインストールする場合(たとえば、Ruby 1.9.2)、そのアプリケーションのインストールに必要なすべての依存関係のcompleteリストを取得するためにどのコマンドを実行できますか?これは可能ですか?
短い答え:不可能。ソースディストリビューションから正確な依存関係を取得することの難しさは、パッケージ管理がLinuxで非常に人気がある理由です(わかりました、いくつかの理由の1つです)。実際、それを実行する必要があり、その方法をあまり気にしない場合、依存関係を取得する最も信頼できる方法は、おそらくディストリビューションパッケージを取得して(gentoo ebuildは簡単に操作できます)、次のリストを取得することです。それからの依存関係。
そうでなければ、運が良ければ、メンテナはREADMEファイルなどに依存関係のリストを作成します-それが最初にチェックする場所になります。 Cプロジェクトで、手を汚してもかまいません。configureスクリプト(または、configure.acまたはそれが生成されたもの)の内部を調べて、チェック内容に基づいて依存関係を把握できます。
私が知っているプログラム的な方法はありません。私は通常、リリースノートやソフトウェアREADMEファイルを調べて、一般的なアイデアを得ます。これは反復的なプロセスであることがわかります。持っていない、または見逃していて、それらを入手する必要があるライブラリを1つか2つ見つける可能性があります。
一方、apt
やyum
などのパッケージマネージャーを使用している場合は、これらのシステムの助けを借りて、インストールする前にすべての依存関係を事前にインストールすることができます。問題のパッケージをビルドします。
aptベースのディストリビューション
$ Sudo apt-get build-dep <package>
yumベースのディストリビューション
$ Sudo yum-builddep --nogpgcheck <source package>
-または-
$ Sudo yum-builddep --nogpgcheck <package>
全体として、100%のソリューションを提供することもできませんが、 autotools を使用するほとんどのソースでは、configure.ac
for AC_SEARCH_LIBS
、AC_CHECK_HEADERS
をgrepできます。およびPKG_CHECK_MODULES
。
AC_CHECK_HEADERS
の最初の引数は、ファイル名、またはファイル名のあるパスです。
PKG_CHECK_MODULES
は pkg-config で導入され、IIRC PKG_CHECK_MODULES
の2番目の引数には、ファイル<pkg-name>.pc
が存在する必要のあるパッケージ名が含まれます。
AC_SEARCH_LIBS
の2番目の引数はライブラリ名であり、Linuxを使用すると、lib<second-argument-to AC_SEARCH_LIBS>.so
で始まるファイルを探します。
どちらも完璧ではなく、要件の完全なリストを提供する必要はありませんが...
ソースメンテナは、これら3つのことが要件の完全なリストにつながることを確認することに関心が高まっています。
少しのスクリプトで、これら3つのことを使用して、ディストリビューションのパッケージを検索し、不足しているファイルを提供するパッケージを見つけることができます。たとえば、Faheem Mithaが述べたように、すべてのDebianベースのLinuxにapt-file search
を使用します。
Ubuntu(Debian)の場合:Sudo apt-get build-dep <package>