ac-auxにinstall-sh、install.sh、またはshtoolが見つかりません


81

Linuxマシンで何かをコンパイルしてインストールしようとするのはこれが初めてです。git経由でhttps://github.com/processone/exmppの最新バージョンを入手し、次のような指示を読みました。

2.ビルドとインストール

ExmppはAutotoolsを使用します。したがって、プロセスは非常に一般的です。

$ ./configure
$ make
$ sudo make install

入力後./configure、エラーが発生します

ac-auxにinstall-sh、install.sh、またはshtoolが見つかりません

Googleはほとんど助けにならなかった。私が何をすべきか全くわからない。どんな助けでも大歓迎です

回答:


109

次のツールを使用して構成スクリプトを作成しました。

libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure

すべての依存関係があるわけではないので、今はテストできませんが、これは通常、acファイルからconfigureスクリプトを作成する方法です。


2
READMEの指示は、おそらくどこか別の場所から盲目的にコピーされたものです。autoconfツールチェーンのすべての詳細を理解していないことを認めざるを得ません。基本的には、configureスクリプトを生成するために生成および使用されるマクロのコレクションです(これにより、コンパイルおよびインストールプロセスの段階が設定されます)。私はこれらのことを微調整する必要がなかったので、私は専門家ではありませんが、ここ
-sebastian_k

12
プログラマへの注意:automakeツールチェーンの使用を停止してください。お願いします。
Qix

1
@Qix、その理由を教えてください。
セルゲイ

4
@Sergeiそれは乱雑で遅く、絶えず壊れます。それは定義を混乱させ、信じられないほど魔法です。依存関係(またはその欠如)を処理する方法により、不可解なエラーメッセージが生成され、生成されるファイルは読み取り不可能で、最悪の場合は悪夢のように壊れます。
Qix

4
私の意見では、@ Sergei CMakeはこの時点で最も実行可能です。(近い)将来、より良いものがあると確信しています。
-Qix

40

さて、私はsebastian_kの答えを試してみましたが、うまくいきませんでした(./configure途中で非常に奇妙なエラーでクラッシュしました)。

しかし、私が見つけたこのビルドログで使用されている指示をコピーしていた

ショートバージョン(あなたがそれを自分で歩く必要はありません)は次のとおりです:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install

16
+1。autoreconf -i正解は(あるvとはf、通常はオプションです)
ニモ

2
+1。これは私のために働いた唯一の答えです。
weberc2

@Nemoいいね。受け入れられた答えは技術的には機能しますが、あなたの答えははるかに簡単です。
アビンドラグールチャラン

9

この質問、およびここでのその他の回答のほとんどは、GNU Build System(別名Autotools)を使用するプロジェクトがどのように配布されるかについての誤解から生じています。実際、OPが言及しているErlang XMPPライブラリの場合、誤解は開発者側にあるようです。

正しい方法でソフトウェアを入手する

GNU Autotoolsでリリースされたプロジェクトをコンパイルしてインストールするだけであれば、ソース管理システムからチェックアウトしないでください。代わりに、開発者が提供するパッケージ化されたソースリリースをダウンロードする必要があります。これらは通常、プロジェクトのWebサイトで配布されるtarballの形式を取ります。GitHub、Savannah、または同様のホスティングサービスで完全にホストされているプロジェクトの場合、これらのtarballは通常「ダウンロード」または「リリース」というラベルの付いたリンクの後ろにあります。パッケージを展開し、標準の./configure && make && sudo make install呪文のバリエーションを発声します。それで全部です; GNU Autotoolsを呼び出す必要はなく、システムにGNU Autotoolsをインストールする必要さえありません。

ユーザーであるあなたがAutotoolsパッケージのプロジェクトをコンパイルするのにGNU Autotoolsを必要としない理由は、開発者が既に様々なAutotoolsプログラムを使用して、あらゆるソフトウェアのビルドに使用できる「配布tarball」を生成しているからですUnixライクなシステム。配布tarballにはconfigure、ビルド環境をスキャンし、依存関係をチェックMakefileし、システムに合わせてカスタマイズされたものを構築する、移植性の高いスクリプトが含まれています。

Autotoolsが必要になるのはいつですか?

GNU Autotoolsをインストールして起動する必要があるのは、Autotoolsでビルドされたプロジェクトで開発作業を行う場合のみです。その場合でも、プロジェクトの依存関係を変更しない限り、おそらくAutotoolsは必要ありません。その場合、あなたは確かに、元のソースをチェックアウトする必要がAutotool群固有の入力ファイル(に適切な変更になるだろうconfigure.acMakefile.amなど)、および新しい生成するためにそれらの上にAutotool群を実行しconfigure、ファイルを。修正されたパッケージを独立して公開する場合は、Autotoolsによって生成されたMakefileを使用して新しい配布tarballを生成し、そのtarballをオンラインのどこかに公開します。

問題は、一部の開発者がソースリポジトリを公開しているが、配布tarballを公開することを怠っている(または、公開されている場所を見つけにくくする)ことです。たとえば、配布tarballをGitHub Releasesとして公開するのではなく、Erlang XMPPライブラリのGitHub Releasesは生のソースリポジトリのtarballです。これにより、GNU Autotoolsなしでプロジェクトをコンパイルすることが不可能になり、そもそもAutotoolsを使用する目的全体が無効になります。

TL; DRの概要

GNU Autotoolsは、開発者がユーザー向けのポータブルソースコードパッケージを作成するために使用するものです。 ユーザーは、ソース管理システムの元のコードではなく、これらのソースパッケージからダウンロードしてコンパイルする必要があります。開発者がこれらのソースパッケージを提供しない場合、彼らはAutotoolsを正しく使用していないので、自分たちのやり方の誤りを見るまで濡れたマスで優しく叩かれるべきです。


この長い投稿は質問とどのように関連していますか?OPはautotoolsを使用しようとしましたか?./configure && make && sudo make install2番目の段落で提案したように、ソフトをダウンロードして実行しました。
パイロット

3
関連するのは、OPによってダウンロードされたソフトウェアに正しい構成スクリプトが含まれていなかったためです(ソース管理の最新バージョンとリリースされたtarballには構成スクリプトがまったく含まれていません)。ここでのほぼすべての答えは、Autotoolsを実行するようにOPに伝えています。これは問題を回避するかもしれませんが、根本原因を理解することが重要です:開発者はAutotoolsを実行する責任者であり、彼らはこれを正しく(またはまったく)行っていません。
サイコノー

1
これは良い答えであり、「濡れたマスで優しく叩かれた」というフレーズは好きですが、バグをアップストリームに報告することが正しい応答であることを明示的に述べる方が適切かもしれません。
ウィリアムパーセル

1
@WilliamPursellしゃれが意図されていると思う。:)
サイコノー

4

この問題が発生しましたが、次の行が原因であることがわかりましたconfigure.ac

AC_CONFIG_AUX_DIR([build-aux])

行自体は悪くありませんでしたが、configure.acファイルの上部に近づける必要がありました。


3

この問題を解決するには、次を実行してください。

sudo apt-get install autogen libtool shtool

その後、インストールを行います

sh autogen.sh --prefix=prefered_install_path
make 
make install 

2

MercurialリポジトリからGNU Octaveをコンパイルしようとすると、この問題に遭遇する場合があります。修正は./bootstrap、ソースツリーのルートにいる間に実行することです。



0

./configureソースコードを試したときに、同様の問題が発生し、投稿されたものと同じエラーが発生しました。最後にコードを入力して問題を解決しました:

sudo apt-get install autotools-dev

2
エラー:パッケージautotoolsが見つかりません。
マウリシオシェファー14

こっちも一緒。エラー:パッケージautotoolsが見つかりません。ダウン投票。ごめんなさい。
Pジュニア

パッケージが何であれ、既にインストールされています。それでも、configureスクリプトは中断されます。
ボアン

0

autogenパッケージをインストールした後、このエラーはwolfSSLビルドで解決されました。

sudo apt-get install autogen libtool shtool

0

私はわずかに異なるエラーがありました:

configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."

configureが見つからなかったことが判明しましたbuild-aux/install-sh。私はそれをそのようにリンクしました

ln -s build-aux/install-sh .

その後、ビルドします。

それが誰かに役立つことを願っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.