Kann install-sh, install.sh oder shtool in ac-aux nicht finden

81

Dies ist das erste Mal, dass ich versuche, etwas auf einem Linux-Computer zu kompilieren und zu installieren. Ich habe die neueste Version von https://github.com/processone/exmpp über git erhalten und die Anweisungen gelesen, die besagen:

2. Erstellen und installieren

Exmpp verwendet die Autotools. Daher ist der Prozess ziemlich verbreitet:

$ ./configure
$ make
$ sudo make install

nach typ ./configurebekomme ich den fehler

Kann install-sh, install.sh oder shtool in ac-aux nicht finden

Google half wenig bis gar nichts. Ich bin mir überhaupt nicht sicher, was ich tun soll. Jede Hilfe wäre sehr dankbar

Micah
quelle

Antworten:

109

Ich habe es geschafft, das Konfigurationsskript mit den folgenden Tools zu erstellen:

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

Ich habe nicht alle Abhängigkeiten, daher kann ich es momentan nicht testen, aber im Allgemeinen würden Sie so ein Konfigurationsskript aus einer AC-Datei erstellen.

sebastian_k
quelle
2
Die Anweisungen in der README wurden wahrscheinlich blind kopiert. Ich muss zugeben, dass ich nicht jedes Detail der Autoconf-Toolchain verstehe. Es handelt sich im Grunde genommen um eine Sammlung von Makros, die generiert und zum Erstellen Ihres Konfigurationsskripts verwendet werden (wodurch wiederum die Voraussetzungen für den Kompilierungs- und Installationsprozess geschaffen werden). Ich hatte nie diese Dinge zur Feinabstimmung, so dass ich bin kein Experte, aber es gibt einige recht umfangreiche Erklärungen hier
sebastian_k
12
Hinweis für Programmierer: Bitte beenden Sie die Verwendung der automake-Toolchain. Bitte .
Qix
1
@ Qix, können Sie uns bitte erklären, warum?
Sergei
4
@ Sergei es ist chaotisch, langsam und bricht ständig. Es definiert und ist unglaublich magisch . Der Umgang mit Abhängigkeiten (oder deren Fehlen) führt zu kryptischen Fehlermeldungen, und die erzeugten Dateien sind bestenfalls unlesbar und im schlimmsten Fall albtraumhaft kaputt.
Qix
4
@ Sergei CMake ist meiner Meinung nach zu diesem Zeitpunkt am rentabelsten. Ich bin mir sicher, dass es in (naher) Zukunft etwas Besseres geben wird.
Qix
40

Nun, ich habe die Antwort von sebastian_k ausprobiert und es hat bei mir nicht funktioniert (ist auf ./configurehalbem Weg mit einem extrem komischen Fehler abgestürzt).

Was jedoch für mich funktioniert hat, war das Kopieren der Anweisungen, die in diesem Build-Protokoll verwendet wurden

Die Kurzversion (damit Sie nicht selbst durchwaten müssen) lautet:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
Entropie
quelle
16
+1. autoreconf -iist die richtige Antwort (die vund fsind in der Regel optional)
Nemo
2
+1. Dies ist die einzige Antwort, die für mich funktioniert hat.
weberc2
@Nemo schön. Die akzeptierte Antwort funktioniert technisch, aber Ihre ist bei weitem die einfachste.
Avindra Goolcharan
9

Diese Frage und die meisten anderen Antworten hier ergeben sich aus einem Missverständnis darüber, wie Projekte, die das GNU Build System (auch bekannt als Autotools) verwenden, verteilt werden. Tatsächlich scheint das Missverständnis bei der vom OP erwähnten Erlang XMPP-Bibliothek bei den Entwicklern zu liegen.

Die Software richtig beziehen

Wenn Sie nur ein mit den GNU Autotools veröffentlichtes Projekt kompilieren und installieren möchten, sollten Sie es nicht aus dem Versionsverwaltungssystem auschecken . Sie sollten stattdessen die vom Entwickler bereitgestellte gepackte Quellversion herunterladen . Diese werden normalerweise in Form von Tarballs auf der Projektwebsite verteilt. Bei Projekten, die vollständig auf GitHub, Savannah oder einem ähnlichen Hosting-Service gehostet werden, befinden sich diese Tarballs normalerweise hinter einem Link mit der Bezeichnung "Download" oder "Releases". Sie entpacken das Paket und sprechen eine Variante der Standardbeschwörung aus ./configure && make && sudo make install. Das ist alles; Sie müssen keines der GNU-Autotools aufrufen und müssen nicht einmal die GNU-Autotools auf Ihrem System installiert haben.

Der Grund, warum Sie als Benutzer die GNU-Autotools nicht benötigen, um ein mit Autotools gepacktes Projekt zu kompilieren, ist, dass der Entwickler bereits die verschiedenen Autotools-Programme verwendet hat, um ein "Distribution-Tarball" zu generieren, mit dem die Software auf jedem erstellt werden kann Unix-ähnliches System. Das Distribution-Tarball enthält ein hoch portierbares configureSkript, das die Build-Umgebung durchsucht, nach Abhängigkeiten sucht und ein Makefilean Ihr System angepasstes Skript erstellt.

Wann brauchen Sie Autotools?

Der einzige Grund, warum Sie die GNU-Autotools selbst installieren und aufrufen sollten, ist, wenn Sie Entwicklungsarbeiten an einem mit Autotools erstellten Projekt durchführen möchten . Und selbst dann werden Sie wahrscheinlich die Autotools nicht benötigen, es sei denn, Sie ändern die Abhängigkeiten des Projekts. In diesem Fall würden Sie tatsächlich benötigen die ursprüngliche Quelle zu überprüfen, um geeignete Änderungen an den Autotools spezifischen Eingabedateien ( configure.ac, Makefile.amusw.), und die Autotools laufen auf ihnen eine neue zu generieren configureDatei. Wenn Sie das überarbeitete Paket unabhängig veröffentlichen möchten, verwenden Sie das von Autotools generierte Makefile, um ein neues Distribution-Tarball zu generieren, und veröffentlichen Sie dieses Tarball dann irgendwo online.

Das Problem ist, dass einige Entwickler ihr Quell-Repository öffentlich verfügbar machen, ihre Distribution-Tarballs jedoch nicht veröffentlichen (oder es schwierig machen, herauszufinden, wo sie veröffentlicht werden). Zum Beispiel, anstatt die Veröffentlichung ihrer Verteilung tarballs als GitHub veröffentlicht , die Erlang XMPP Bibliothek GitHub Releases sind tarballs des rohen Quellrepository. Dies macht es unmöglich, das Projekt ohne die GNU-Autotools zu kompilieren, was den gesamten Zweck der Verwendung von Autotools zunichte macht.

TL; DR Zusammenfassung

Die GNU-Autotools werden von Entwicklern verwendet, um portable Quellcode-Pakete für Benutzer zu erstellen. Benutzer sollten aus diesen Quellcode-Paketen herunterladen und kompilieren, nicht den Originalcode aus dem Versionsverwaltungssystem. Wenn die Entwickler diese Quellpakete nicht bereitstellen, verwenden sie Autotools nicht korrekt und sollten vorsichtig mit einer feuchten Forelle geschlagen werden, bis sie den Fehler ihres Weges erkennen.

Psychonaut
quelle
Wie hängt dieser lange Beitrag mit der Frage zusammen? Hat OP versucht, Autotools zu verwenden? Sie haben einige Soft-Dateien heruntergeladen und sind ./configure && make && sudo make installwie im zweiten Absatz vorgeschlagen gelaufen .
Pilot6
3
Dies ist relevant, weil die vom OP heruntergeladene Software kein korrektes Konfigurationsskript enthielt (und die neueste Version in der Versionsverwaltung sowie die freigegebenen Tarballs überhaupt kein Konfigurationsskript enthielten). Fast alle Antworten hier weisen das OP an, Autotools auszuführen. Während dies das Problem möglicherweise umgeht, ist es wichtig, die Hauptursache zu verstehen: Die Entwickler sind für die Ausführung von Autotools verantwortlich und haben dies nicht richtig (oder überhaupt nicht) getan.
Psychonaut
1
Dies ist eine gute Antwort, und obwohl ich den Satz "sanft mit einer nassen Forelle geschlagen" mag, ist es möglicherweise sinnvoller, ausdrücklich zu erwähnen, dass die richtige Antwort darin besteht, den Fehler stromaufwärts zu melden.
William Pursell
1
@WilliamPursell Ich nehme an, das Wortspiel ist vorgesehen. :)
Psychonaut
4

Ich hatte dieses Problem und fand es an der folgenden Zeile in configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

Die Zeile war an sich nicht schlecht, musste jedoch näher an den oberen Rand der configure.acDatei verschoben werden.

Craig McQueen
quelle
3

Bitte gehen Sie wie folgt vor, um dieses Problem zu beheben:

sudo apt-get install autogen libtool shtool

Dann machen Sie die Installation

sh autogen.sh --prefix=prefered_install_path
make 
make install 
Ravi Hegde
quelle
2

Wenn Sie versuchen, GNU Octave aus dem Mercurial-Repository zu kompilieren, stoßen Sie möglicherweise auf dieses Problem. Das Update besteht darin, ausgeführt zu werden, ./bootstrapwährend Sie sich im Stammverzeichnis des Quellbaums befinden.

Ruslan
quelle
1

sudo apt-get install automake autoconf

es funktioniert erfolgreich

Shafiul Karim Bulan
quelle
0

Ich hatte ein ähnliches Problem, als ich ./configureeinen Quellcode ausprobierte und den gleichen Fehler wie beim Posten bekam. Schließlich löste meine Probleme durch Eingabe des Codes:

sudo apt-get install autotools-dev
retnan
quelle
2
Fehler: Paket-Autotools konnten nicht gefunden werden.
Mauricio Scheffer
Hier gilt das gleiche. Fehler: Paket-Autotools konnten nicht gefunden werden. Abgestimmt. Es tut uns leid.
PJunior
Ich habe das Paket bereits installiert, was auch immer es ist. Das Konfigurationsskript ist jedoch nicht vollständig.
Boann
0

Nach der Installation des autogenPakets wurde dieser Fehler im wolfSSLBuild behoben .

sudo apt-get install autogen libtool shtool
Rashok
quelle
0

Ich hatte einen etwas anderen Fehler:

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

Es stellte sich heraus, dass configure nicht finden konnte build-aux/install-sh. Ich habe es so verlinkt

ln -s build-aux/install-sh .

dann baut es.

Hoffe das hilft jemandem da draußen!

Barmaley
quelle