web-dev-qa-db-ja.com

./configure:不足しているすべてのパッケージを一度に表示します

ビルドシステムとしてautotoolsを使用するパッケージをコンパイルしました(autoreconf、_./configure_、make、_make install_)。

_./configure_パッケージが見つからない場合に停止します。

不足しているパッケージごとに名前を調べ、_apt install package_を実行するか、利用できない場合はソースからコンパイルします。

次に、もう一度_./configure_を実行すると、満たされていない別の依存関係の名前がわかります。

不足しているパッケージが1つまたは2つしかない場合は問題ありません。しかし、19がありました!

_libmspack-dev
libglib2.0-dev
libpam0g-dev
libssl-dev
libxml2-dev
libxmlsec1-dev
libx11-dev
libcunit1-dev
libxext-dev
libxinerama-dev
libxi-dev
libxrender-dev
libxrandr-dev
libxtst-dev
libgdk-pixbuf2.0-dev
libgtk-3-dev
libgtkmm-3.0-dev
libtool
dnet
_

エラーが発生しても_./configure_を続行し、不足しているすべてのパッケージを一度に表示して、一度にインストールできるようにしたいと考えています。そうしないと、_./configure_および_apt install_を19回実行するのは長くて面倒です。

6
Bilow

あなたの場合の単純なアプローチは、open-vm-toolsパッケージをインストールすることです。

質問に対処するために、不足しているすべてのパッケージを一度に一覧表示する確実な方法はありません。これは主にこれが設計されておらず、configureスクリプトによって作成者が何でもできるためです。そのため、続行する方法を事前に知る方法はありません。続行しても安全かどうか。発生する可能性のある種類の問題の例は、以前のテストの結果に基づいて構築されるテストです。 インストールされているプログラムを確認し、インストールされていない場合は失敗し、インストールされている場合は後続のテストで使用します。プログラムがない場合でも継続しても、非常に有用な結果は得られません。

ただし、多くの場合、configureを調整してエラーが発生したときに終了しないようにすることで、有用な結果を得ることができます。通常、これには、AC_MSG_ERRORおよびAC_MSG_WARNで使用されるM4ライブラリのconfigure.acconfigure.acで置き換える必要があります。

sed -i 's/AC_MSG_ERROR/AC_MSG_WARN/g' configure.ac m4/*.m4
autoreconf -i
./configure ...

「警告:」メッセージを探します。

もちろん、ソフトウェアを「適切に」構築する前に、configure.acおよびM4ライブラリを復元する必要があります。

これをより一般的に見ると、依存関係を判別する他の方法があります。多くの場合、それらはドキュメント(READMEINSTALL...)に記載されています。人気のあるディストリビューションの対応するパッケージ名が記載されている場合もあります。もう1つの便利な場所は、./configure --helpを実行するか、configure.ac(またはCMakeLists.txtまたはmeson.buildまたは使用するビルドツールに適したファイル)を読み取ることによるconfigure自体です。 。表示しているソフトウェアがLinuxディストリビューションにパッケージ化されている場合は、そこにあるメタデータも表示できますが、パッケージ化されているソフトウェアのバージョンにのみ対応し、メンテナーのパッケージングの選択を反映します(apt showsrc ...(Debian派生物)。

8
Stephen Kitt

この回答は、DebianとUbuntuに不足している依存関係をインストールする簡単な方法を示すことを目的としています(正しく理解していれば、実際に達成したいことです)が、./configureをすべて報告することについての質問には対応していません一度に依存関係。


ビルドするソフトウェアがすでにリポジトリにある場合(たとえば、Ubuntuのopen-vm-toolsの場合)、次のようにできます。

$ apt-get build-dep <packagename>

これにより、パッケージの特定のバージョンをビルドするために必要なすべての依存関係がインストールされます。依存関係リストは2つのバージョン間で多少異なる場合があるため、これは確かに同じではありませんが、不足している依存関係の大部分(またはすべて)をインストールする必要があります。