Vraag Kan install-sh, install.sh of shtool niet vinden in ac-aux


Dit is de eerste keer dat ik probeer iets te compileren en te installeren op een linux-machine. Ik heb de nieuwste versie van https://github.com/processone/exmpp via git en lees de instructies die vermelden:

2. Bouw en installeer

Exmpp gebruikt de Autotools. daarom   het proces is vrij normaal:

$ ./configure
$ make
$ sudo make install

na type ./configure Ik krijg de foutmelding

Kan install-sh, install.sh of shtool niet vinden in ac-aux

Google was van weinig tot geen hulp. Ik weet niet zeker wat ik moet doen. Alle hulp zou zeer op prijs worden gesteld


72
2018-02-23 06:14


oorsprong




antwoorden:


Ik kreeg het om het configuratiescript te maken met behulp van de volgende hulpmiddelen:

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

Ik heb niet alle afhankelijkheden, dus ik kan het nu niet testen, maar dit is over het algemeen hoe je een configuratiescript uit een ac-bestand zou maken.


92
2018-02-23 06:30



De instructies in de README zijn waarschijnlijk blind gekopieerd van ergens anders. Ik moet toegeven dat ik niet elk detail van de autoconf-toolchain begrijp; het is in feite een verzameling macro's die worden gegenereerd en gebruikt om uw configuratiescript te maken (dat op zijn beurt het stadium bepaalt voor het compilatie- en installatieproces). Ik hoefde deze dingen nooit meer te verfijnen, dus ik ben geen expert, maar er zijn enkele vrij uitgebreide verklaringen hier - sebastian_k
Opmerking voor programmeurs: stop alsjeblieft met het gebruik van de automake toolchain. alsjeblieft. - Qix
@Qix, kunt u ons alstublieft uitleggen waarom? - Sergei
@Sergei het is rommelig, langzaam en breekt constant. Het verstopt definieert en is ongelooflijk magie. De manier om afhankelijkheden (of het ontbreken daarvan) af te handelen levert cryptische foutmeldingen op en de bestanden die het produceert zijn op zijn best onleesbaar en in het slechtste geval nachtmerrieachtig verbroken. - Qix
@Sergei CMake is naar mijn mening op dit moment het meest haalbaar. Ik weet zeker dat er in de (nabije) toekomst iets beters zal zijn. - Qix


Nou, ik heb het antwoord van sebastian_k geprobeerd en het werkte niet voor mij (./configure crashte halverwege met een extreem rare fout).

Wat echter werkte voor mij was het kopiëren van de instructies die hier gebruikt werden log bouwen vond ik

De korte versie (dus je hoeft er zelf niet doorheen te waden) is:

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

37
2017-11-10 13:30



1. autoreconf -i is het juiste antwoord (de v en f zijn meestal optioneel) - Nemo
1. Dit is het enige antwoord dat voor mij werkte. - weberc2
@Nemo leuke. Het geaccepteerde antwoord werkt technisch, maar de uwe is veruit de eenvoudigste. - Avindra Goolcharan


Deze vraag, en de meeste andere antwoorden hier, komen voort uit een misverstand over hoe projecten met behulp van de GNU Build-systeem (a.k.a. Autotools) worden gedistribueerd. In feite, in het geval van de Erlang XMPP-bibliotheek genoemd door het OP, lijkt het misverstand van de kant van de ontwikkelaars te zijn.

De software op de juiste manier verkrijgen

Als je alleen maar een project wilt compileren en installeren dat is uitgebracht met de GNU Autotools, dan je zou het niet moeten controleren vanuit het broncontrolesysteem. Download in plaats daarvan het verpakte bronvrijgave geleverd door de ontwikkelaar. Deze hebben normaal gesproken de vorm van tarballs die op de website van het project worden verspreid. Voor projecten die volledig worden gehost op GitHub, Savannah of een vergelijkbare hostingservice, zijn deze tarballs meestal te vinden achter een link met het label "Download" of "Releases". Maak de verpakking ongedaan en voer een variant van de standaard uit ./configure && make && sudo make install bezwering. Dat is alles; je hoeft geen GNU Autotools aan te roepen, en zelfs de GNU Autotools hoeft niet op je systeem te zijn geïnstalleerd.

De reden dat u, de gebruiker, de GNU Autotools niet nodig hebt om een ​​Autotools-verpakt project te compileren, is dat de ontwikkelaar nu al gebruikte de verschillende Autotools-programma's om een ​​"distributie-tarball" te genereren die kan worden gebruikt om de software op elk Unix-achtig systeem te bouwen. De distributietarball bevat een zeer draagbaar configure script dat de build-omgeving scant, op afhankelijkheden controleert en een Makefile aangepast aan uw systeem.

Wanneer heb je Autotools nodig?

De enige reden waarom je de GNU Autotools zelf moet installeren en aanroepen is als je dat wilt ontwikkeling werken aan een project gebouwd met Autotools. En zelfs dan zult u de Autotools waarschijnlijk niet nodig hebben, tenzij u de afhankelijkheden van het project verandert. In dat geval zou u inderdaad de oorspronkelijke bron moeten controleren, de nodige wijzigingen moeten aanbrengen in de Autotools-specifieke invoerbestanden (configure.ac, Makefile.am, enz.) en voer de Autotools hierop uit om een ​​nieuw te genereren configure het dossier. Als u het herziene pakket onafhankelijk wilt publiceren, gebruikt u de Makefile gegenereerd door Autotools om een ​​nieuwe distributietarball te genereren en publiceert u die tarball ergens online.

Het probleem is dat sommige ontwikkelaars hun bronrepository publiekelijk beschikbaar maken, maar nalaten om hun distributie-tarballs te publiceren (of het moeilijk maken om te vinden waar ze zijn gepubliceerd). Bijvoorbeeld, in plaats van publiceren van hun distributie-tarballs als GitHub-releases, de GitHub-releases van Erlang XMPP-bibliotheek zijn tarballs van de onbewerkte bronrepository. Dit maakt het onmogelijk om het project te compileren zonder de GNU Autotools, waarbij het hele doel van het gebruik van Autotools in de eerste plaats wordt verslagen.

TL; DR-samenvatting

De GNU Autotools zijn iets dat ontwikkelaars gebruik om draagbare broncodepakketten voor gebruikers te maken. gebruikers moet downloaden en compileren van deze bronpakketten, niet de originele code van het bronbesturingssysteem. Als de ontwikkelaars deze bronpakketten niet leveren, gebruiken ze Autotools niet correct en zouden dat ook moeten zijn zachtjes geslagen met een natte forel totdat ze de fout van hun manier zien.


7
2017-09-01 10:53



Hoe is deze lange post gerelateerd aan de vraag? Heeft OP geprobeerd om autotools te gebruiken? Ze hebben wat soft gedownload en gerend ./configure && make && sudo make install zoals je in de tweede alinea suggereerde. - Pilot6
Het is relevant omdat de software gedownload door de OP geen correct configuratiescript bevatte (en de meest recente versie in bronbeheer, plus de vrijgegeven tarballs, bevatten helemaal geen configuratiescript). Bijna alle antwoorden hier vertellen het OP om Autotools uit te voeren. Hoewel dit het probleem misschien omzeilt, is het belangrijk om de oorzaak te begrijpen: de ontwikkelaars zijn degenen die verantwoordelijk zijn voor het uitvoeren van Autotools en ze hebben dit niet goed (of helemaal niet) gedaan. - Psychonaut
Dit is een goed antwoord, en hoewel ik de zin "zachtjes geslagen met een natte forel" leuk vind, is het misschien beter om expliciet te vermelden dat de juiste reactie de bug stroomopwaarts rapporteert. - William Pursell
@WilliamPursell Ik neem aan dat de woordspeling is bedoeld. :) - Psychonaut


Ik heb dit probleem gehad en heb ontdekt dat dit het gevolg was van de volgende regel configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

De lijn was niet per se slecht, maar hij moest dichter bij de top van de configure.ac het dossier.


4
2018-05-02 11:29





Doe het volgende om dit probleem op te lossen,

sudo apt-get install autogen libtool shtool

Voer vervolgens de installatie uit

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

2
2017-09-02 11:30





sudo apt-get install automake autoconf

het werkt met succes


1
2018-06-12 06:47





Wanneer u GNU Octave uit de Mercurial-repository probeert te compileren, kunt u dit probleem tegenkomen. De oplossing is om te draaien ./bootstrap terwijl je in de root van de source tree zit.


1
2018-03-22 13:45





Ik had een soortgelijk probleem toen ik het probeerde ./configure een broncode en kreeg dezelfde foutmelding als gepost. Uiteindelijk heb ik mijn problemen opgelost door de code in te voeren:

sudo apt-get install autotools-dev

0
2018-02-09 16:35



Fout: kan pakketautotools niet vinden. - Mauricio Scheffer
Hier ook. Fout: kan pakketautotools niet vinden. Downvoted. Sorry. - PJunior