Nie można znaleźć install-sh, install.sh lub shtool w ac-aux

81

To jest moja pierwsza próba skompilowania i zainstalowania czegokolwiek na maszynie z systemem Linux. Mam najnowszą wersję https://github.com/processone/exmpp przez git i przeczytałem instrukcje, które mówią:

2. Zbuduj i zainstaluj

Exmpp korzysta z Autotools. Dlatego proces ten jest dość powszechny:

$ ./configure
$ make
$ sudo make install

po typie ./configurepojawia się błąd

Nie można znaleźć install-sh, install.sh lub shtool w ac-aux

Google niewiele pomógł. Nie jestem pewien, co mam zrobić. Każda pomoc będzie mile widziana

Micheasz
źródło

Odpowiedzi:

109

Mam go do utworzenia skryptu konfiguracji przy użyciu następujących narzędzi:

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

Nie mam wszystkich zależności, więc nie mogę go teraz przetestować, ale generalnie w ten sposób można utworzyć skrypt konfiguracyjny z pliku ac.

sebastian_k
źródło
2
Instrukcje w README prawdopodobnie zostały ślepo skopiowane skądś indziej. Muszę przyznać, że nie rozumiem każdego szczegółu łańcucha narzędzi Autoconf; jest to w zasadzie zbiór makr, które są generowane i używane do utworzenia skryptu konfiguracyjnego (który z kolei wyznacza etap procesu kompilacji i instalacji). Nigdy nie musiałem dopracować te rzeczy, więc nie jestem ekspertem, ale istnieją pewne dość obszerne wyjaśnienia tutaj
sebastian_k
12
Uwaga dla programistów: proszę przestać używać łańcucha narzędzi automake. Proszę .
Qix
1
@Qix, czy mógłbyś wyjaśnić nam dlaczego?
Siergiej
4
@Sergei jest bałaganiarski, wolny i ciągle się psuje. Zaśmieca definicje i jest niesamowicie magiczny . Jego sposób radzenia sobie z zależnościami (lub ich brakiem) daje tajemnicze komunikaty o błędach, a tworzone przez niego pliki są w najlepszym razie nieczytelne, aw najgorszym koszmarnie uszkodzone.
Qix
4
Moim zdaniem @Sergei CMake jest najbardziej opłacalny w tym momencie. Jestem pewien, że w (bliskiej) przyszłości będzie coś lepszego.
Qix
40

Cóż, próbowałem odpowiedzi sebastian_k i to nie zadziałało dla mnie ( ./configurerozbił się w połowie z bardzo dziwnym błędem).

Jednak działało dla mnie kopiowanie instrukcji używanych w tym dzienniku kompilacji, który znalazłem

Krótka wersja (więc nie musisz się przez nią przedzierać) to:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
entropia
źródło
16
+1. autoreconf -ijest poprawną odpowiedzią ( vi fzazwyczaj są opcjonalne)
Nemo
2
+1. To jedyna odpowiedź, która zadziałała dla mnie.
weberc2
@Nemo nice one. Akceptowana odpowiedź technicznie działa, ale Twoja jest zdecydowanie najprostsza.
Avindra Goolcharan
9

To pytanie i większość innych odpowiedzi tutaj wynika z nieporozumienia, w jaki sposób dystrybuowane są projekty korzystające z systemu kompilacji GNU (znanego również jako narzędzia automatyczne). W rzeczywistości, w przypadku biblioteki Erlang XMPP wspomnianej przez OP, nieporozumienie wydaje się być po stronie programistów.

Uzyskanie oprogramowania we właściwy sposób

Jeśli wszystko, co chcesz zrobić, to skompilować i zainstalować projekt wydany za pomocą GNU Autotools, nie powinieneś tego sprawdzać w systemie kontroli źródła . Zamiast tego należy pobrać pakietową wersję źródłową dostarczoną przez programistę. Zwykle mają one postać tarballi dystrybuowanych na stronie internetowej projektu. W przypadku projektów, które są w całości hostowane na GitHub, Savannah lub innej podobnej usłudze hostingowej, te archiwum zwykle znajduje się za linkiem oznaczonym jako „Pobierz” lub „Wydania”. Rozpakowujesz pakiet i wypowiadasz wariant standardowej ./configure && make && sudo make installinkantacji. To wszystko; nie musisz wywoływać żadnej z GNU Autotools, a nawet nie musisz mieć zainstalowanych GNU Autotools w swoim systemie.

Powodem, dla którego użytkownik nie potrzebuje GNU Autotools do kompilacji projektu pakietu Autotools jest to, że deweloper użył już różnych programów Autotools do wygenerowania „tarballa dystrybucyjnego”, którego można użyć do zbudowania oprogramowania na dowolnym System uniksowy. Tarball dystrybucyjny zawiera wysoce przenośny configureskrypt, który skanuje środowisko kompilacji, sprawdza zależności i tworzy Makefileniestandardowy system.

Kiedy potrzebujesz Autotools?

Jedynym powodem, dla którego powinieneś sam zainstalować i wywołać GNU Autotools, jest to, że chcesz wykonać prace programistyczne nad projektem zbudowanym z Autotools. I nawet wtedy prawdopodobnie nie będziesz potrzebować Autotools, chyba że zmienisz zależności projektu. W takim przypadku można rzeczywiście trzeba sprawdzić oryginalnego źródła, dokonać odpowiednich zmian w Autotools specyficzne pliki wejściowe ( configure.ac, Makefile.ametc.), a następnie uruchomić program Autotools na nich, aby wygenerować nowy configureplik. Jeśli chcesz niezależnie opublikować poprawiony pakiet, skorzystaj z pliku Makefile wygenerowanego przez Autotools, aby wygenerować nowy pakiet dystrybucyjny, a następnie opublikuj go w Internecie.

Problem polega na tym, że niektórzy programiści udostępniają publicznie swoje repozytorium źródłowe, ale zaniedbują publikowanie swoich archiwów dystrybucyjnych (lub utrudniają znalezienie miejsca ich publikacji). Na przykład, zamiast publikować swoje archiwa dystrybucyjne jako prasowe GitHub tego, Biblioteka Erlang XMPP za GitHub prasowe są tarballi repozytorium źródła surowca. Uniemożliwia to skompilowanie projektu bez GNU Autotools, co w pierwszej kolejności jest sprzeczne z całym celem korzystania z Autotools.

Podsumowanie TL; DR

Narzędzia GNU Autotools są czymś, czego programiści używają do tworzenia przenośnych pakietów kodu źródłowego dla użytkowników. Użytkownicy powinni pobierać i kompilować z tych pakietów źródłowych, a nie oryginalnego kodu z systemu kontroli źródła. Jeśli programiści nie dostarczą tych pakietów źródłowych, oznacza to, że nie używają Autotools poprawnie i powinni być delikatnie uderzani mokrym pstrągiem, dopóki nie zobaczą błędu na swojej drodze.

Psychonauta
źródło
W jaki sposób ten długi post jest powiązany z pytaniem? Czy OP próbował użyć autotools? Pobrali trochę softów i uruchomili, ./configure && make && sudo make installjak sugerowałeś w drugim akapicie.
Pilot6
3
Jest to istotne, ponieważ oprogramowanie pobrane przez OP nie zawierało poprawnego skryptu konfiguracyjnego (a najnowsza wersja w kontroli źródła oraz wydane pliki tar w ogóle nie zawierają skryptu konfiguracyjnego). Prawie wszystkie odpowiedzi tutaj mówią OP do uruchomienia Autotools. Chociaż może to obejść problem, ważne jest, aby zrozumieć podstawową przyczynę: programiści są odpowiedzialni za uruchamianie Autotools i nie zrobili tego poprawnie (lub wcale).
Psychonaut
1
To dobra odpowiedź i chociaż podoba mi się zdanie „delikatnie uderzony mokrym pstrągiem”, bardziej odpowiednie może być wyraźne wspomnienie o prawidłowej odpowiedzi, czyli zgłoszenie błędu powyżej.
William Pursell,
1
@WilliamPursell Rozumiem, że gra słów jest przeznaczona. :)
Psychonaut
4

Miałem ten problem i okazało się, że był to następujący wiersz configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

Linia sama w sobie nie była zła, ale musiała zostać przesunięta bliżej góry configure.acpliku.

Craig McQueen
źródło
3

Wykonaj następujące czynności, aby rozwiązać ten problem,

sudo apt-get install autogen libtool shtool

Następnie wykonaj instalację

sh autogen.sh --prefix=prefered_install_path
make 
make install 
Ravi Hegde
źródło
2

Podczas próby skompilowania GNU Octave z repozytorium Mercurial możesz napotkać ten problem. Poprawka polega na uruchomieniu ./bootstrapw katalogu głównym drzewa źródłowego.

Ruslan
źródło
1

sudo apt-get install automake autoconf

działa z powodzeniem

Shafiul Karim Bulan
źródło
0

Miałem podobny problem, gdy próbowałem ./configurenapisać kod źródłowy i otrzymałem ten sam błąd, co opublikowany. W końcu rozwiązałem moje problemy, wprowadzając kod:

sudo apt-get install autotools-dev
retnan
źródło
2
Błąd: Nie można znaleźć autotools pakietu.
Mauricio Scheffer,
To samo tutaj. Błąd: Nie można znaleźć autotools pakietu. Doceniony. Przepraszam.
PJunior
Mam już zainstalowany ten pakiet, cokolwiek to jest. Skrypt konfiguracji jest jednak błędny.
Boann
0

Po zainstalowaniu autogenpakietu ten błąd został rozwiązany w wolfSSLkompilacji.

sudo apt-get install autogen libtool shtool
rashok
źródło
0

Miałem nieco inny błąd:

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

Okazuje się, że konfiguracja nie mogła znaleźć build-aux/install-sh. Tak to połączyłem

ln -s build-aux/install-sh .

to się buduje.

Mam nadzieję, że ktoś ci pomoże!

Barmaley
źródło