web-dev-qa-db-ja.com

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

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

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

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

$ ./configure
$ make
$ Sudo make install

タイプ./configureの後、エラーが表示されます

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

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

81
Micah

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

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

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

108
sebastian_k

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

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

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

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ Sudo make install
40
entropy

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

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

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

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

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

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

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

TL; DRの概要

GNU Autotoolsは、developersがユーザー向けのポータブルソースコードパッケージを作成するために使用するものです。 ユーザーは、ソース管理システムの元のコードではなく、これらのソースパッケージからダウンロードしてコンパイルする必要があります。開発者がこれらのソースパッケージを提供しない場合、彼らはAutotoolsを正しく使用していないので、エラーが表示されるまで ウェットマスで丁寧に叩かれます である必要があります。

9
Psychonaut

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

AC_CONFIG_AUX_DIR([build-aux])

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

4
Craig McQueen

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

Sudo apt-get install autogen libtool shtool

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

sh autogen.sh --prefix=prefered_install_path
make 
make install 
3
Ravi Hegde

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

2
Ruslan

Sudo apt-get install automake autoconf

正常に動作します

1

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

Sudo apt-get install autogen libtool shtool
0
rashok

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

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

Configureはbuild-aux/install-shを見つけることができませんでした。私はそれをそのようにリンクしました

ln -s build-aux/install-sh .

その後、ビルドします。

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

0
Barmaley

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

Sudo apt-get install autotools-dev
0
retnan