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 ./configure
pojawia 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
install-from-source
configure
Micheasz
źródło
źródło
Cóż, próbowałem odpowiedzi sebastian_k i to nie zadziałało dla mnie (
./configure
rozbił 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:
źródło
autoreconf -i
jest poprawną odpowiedzią (v
if
zazwyczaj są opcjonalne)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 install
inkantacji. 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
configure
skrypt, który skanuje środowisko kompilacji, sprawdza zależności i tworzyMakefile
niestandardowy 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.am
etc.), a następnie uruchomić program Autotools na nich, aby wygenerować nowyconfigure
plik. 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.
źródło
./configure && make && sudo make install
jak sugerowałeś w drugim akapicie.Miałem ten problem i okazało się, że był to następujący wiersz
configure.ac
:Linia sama w sobie nie była zła, ale musiała zostać przesunięta bliżej góry
configure.ac
pliku.źródło
Wykonaj następujące czynności, aby rozwiązać ten problem,
Następnie wykonaj instalację
źródło
Podczas próby skompilowania GNU Octave z repozytorium Mercurial możesz napotkać ten problem. Poprawka polega na uruchomieniu
./bootstrap
w katalogu głównym drzewa źródłowego.źródło
sudo apt-get install automake autoconf
działa z powodzeniem
źródło
Miałem podobny problem, gdy próbowałem
./configure
napisać kod źródłowy i otrzymałem ten sam błąd, co opublikowany. W końcu rozwiązałem moje problemy, wprowadzając kod:źródło
Po zainstalowaniu
autogen
pakietu ten błąd został rozwiązany wwolfSSL
kompilacji.źródło
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łemln -s build-aux/install-sh .
to się buduje.
Mam nadzieję, że ktoś ci pomoże!
źródło