ソースから何かをインストールするときに必要なライブラリのリストを取得します。

ソースから何かをインストールするときに必要なライブラリのリストを取得します。

ソース(Ruby 1.9.2など)から何かをインストールするときにどのようなコマンドを実行すると入手できますか?十分アプリケーションのインストールに必要なすべての依存関係のリストは何ですか?可能ですか?

答え1

短い答え:不可能。ソースディストリビューションで正確な依存関係を取得するのが難しいのは、Linuxでパッケージ管理が広く使用されている理由です(まあ、これはいくつかの理由の1つです)。実際、必要であり、どのように完了したか気にしない場合は、依存関係を取得する最も信頼できる方法はおそらくディストリビューションパッケージ(Gentoo ebuildは使いやすい)をつかみ、次のリストを取得することです。 。

それ以外の場合、運が良ければ、管理者はreadmeファイルまたは同様のファイルに依存関係リストを生成します。これが最初に確認する場所になります。失敗した場合はCプロジェクトで、手を汚しても問題ない場合は、構成スクリプト(またはより良い構成.acまたは生成されるすべての項目)を調べて、内容に基づいて依存関係を把握できます。関係確認する。

答え2

ソースからビルド

私はそれをプログラムする方法を知らず、一般的に一般的なアイデアを得るためにリリースノートやソフトウェアの追加情報ファイルを調べます。これは実際には反復的なプロセスであるため、持っていないか、見逃したライブラリの1つまたは2つを見つけてインポートする必要があります。

パッケージマネージャでビルド

一方、aptgithubやgithubなどのパッケージマネージャを使用している場合は、yumこれらのシステムの助けを借りて、関連パッケージをインストール/ビルドする前にすべての依存関係を事前にインストールすることができます。

適切な基盤展開

$ sudo apt-get build-dep <package>

ヤムベースの展開

$ sudo yum-builddep --nogpgcheck <source package>

-または-

$ sudo yum-builddep --nogpgcheck <package>

答え3

全体的に100%の解決策を提供することはできませんが、使用されているほとんどのソースについては自動ツール、grepを使用して合計をconfigure.ac見つけることができます。AC_SEARCH_LIBSAC_CHECK_HEADERSPKG_CHECK_MODULES

最初のパラメータAC_CHECK_HEADERSはファイル名またはファイル名を含むパスです。

PKG_CHECK_MODULESとして紹介されました。パッケージ構成また、IIRCの2番目の引数PKG_CHECK_MODULESには、ファイルが必要なパッケージ名が含まれています<pkg-name>.pc

2番目のパラメータAC_SEARCH_LIBSは、Linuxを使用して探しているライブラリの名前ですlib<second-argument-to AC_SEARCH_LIBS>.so

これらのどれも完璧ではなく、包括的な要件のリストを提供する必要はありませんが...

  1. ソースコードのメンテナは、これら3つの点で要件の全リストを確認することにますます興味を持っています。

  2. 一部のスクリプトでは、これら3つを使用して配布パッケージを検索し、欠落しているファイルを提供するパッケージを見つけることができます。たとえば、apt-file searchFaheem Mithaが述べたように、すべてのDebianベースのLinuxに対応しています。

答え4

Ubuntu(Debian):sudo apt-get build-dep <package>

関連情報