Impossibile trovare install-sh, install.sh o shtool in ac-aux


81

Questa è la prima volta che provo a compilare e installare qualsiasi cosa su una macchina Linux. Ho ottenuto l'ultima versione di https://github.com/processone/exmpp tramite git e ho letto le istruzioni che affermano:

2. Compilare e installare

Exmpp utilizza gli Autotools. Pertanto il processo è abbastanza comune:

$ ./configure
$ make
$ sudo make install

dopo il tipo ./configureottengo l'errore

Impossibile trovare install-sh, install.sh o shtool in ac-aux

Google è stato di poco o nessun aiuto. Non sono affatto sicuro di cosa dovrei fare. Qualsiasi aiuto sarebbe molto apprezzato

Risposte:


109

L'ho preso per creare lo script di configurazione usando i seguenti strumenti:

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

Non ho tutte le dipendenze, quindi non posso provarlo adesso, ma questo è generalmente il modo in cui creeresti uno script di configurazione da un file ac.


2
Le istruzioni nel README sono state probabilmente copiate alla cieca da qualche altra parte. Devo ammettere che non capisco ogni dettaglio della toolchain di autoconf; è fondamentalmente una raccolta di macro che vengono generate e utilizzate per creare lo script di configurazione (che, a sua volta, pone le basi per il processo di compilazione e installazione). Non ho mai dovuto mettere a punto queste cose, quindi non sono un esperto, ma ci sono alcune spiegazioni abbastanza estese qui
sebastian_k

12
Nota per i programmatori: interrompere l'utilizzo della toolchain automake. Per favore .
Qix,

1
@Qix, potresti spiegarci perché?
Sergei,

4
@Sergei è disordinato, lento e si rompe costantemente. Si ingombra definisce ed è incredibilmente magico . Il suo modo di gestire le dipendenze (o la loro mancanza) fornisce messaggi di errore criptici, e i file che produce sono illeggibili nel migliore dei casi e spezzati da incubo nel peggiore dei casi.
Qix,

4
@Sergei CMake è il più praticabile in questo momento secondo me. Sono sicuro che ci sarà qualcosa di meglio nel (prossimo) futuro.
Qix,

40

Bene, ho provato la risposta di sebastian_k e non ha funzionato per me (si è ./configureschiantato a metà strada con un errore estremamente strano).

Quello che ha funzionato, tuttavia per me è stato copiare le istruzioni utilizzate in questo registro di build che ho trovato

La versione breve (quindi non devi guastarla da solo) è:

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

16
+1. autoreconf -iè la risposta corretta (le ve di fsolito sono opzionali)
Nemo

2
+1. Questa è l'unica risposta che ha funzionato per me.
weberc2,

@Nemo bello. La risposta accettata funziona tecnicamente, ma la tua è di gran lunga la più semplice.
Avindra Goolcharan,

9

Questa domanda, e la maggior parte delle altre risposte qui, nascono da un malinteso su come sono distribuiti i progetti che usano il GNU Build System (alias Autotools). In effetti, nel caso della libreria Erlang XMPP menzionata dall'OP, il malinteso sembra essere da parte degli sviluppatori.

Ottenere il software nel modo giusto

Se tutto ciò che vuoi fare è compilare e installare un progetto rilasciato con GNU Autotools, non dovresti verificarlo dal sistema di controllo del codice sorgente . Dovresti invece scaricare la versione del pacchetto fornita dallo sviluppatore. Questi normalmente assumono la forma di tarball distribuiti sul sito Web del progetto. Per i progetti ospitati interamente su GitHub, Savannah o un servizio di hosting simile, questi tarball si trovano di solito dietro alcuni link etichettati "Download" o "Rilasci". Decomprimi il pacchetto e pronunci una variante dell'incantesimo standard ./configure && make && sudo make install. È tutto; non è necessario richiamare nessuno degli autotools GNU e non è nemmeno necessario che gli autotools GNU siano installati sul sistema.

Il motivo per cui l'utente non ha bisogno degli GNU Autotools per compilare un progetto impacchettato da Autotools è che lo sviluppatore ha già utilizzato i vari programmi Autotools per generare un "tarball di distribuzione" che può essere utilizzato per costruire il software su qualsiasi Sistema simile a Unix. Il tarball di distribuzione contiene uno configurescript altamente portatile che analizza l'ambiente di compilazione, verifica le dipendenze e crea un Makefilesistema personalizzato per il tuo sistema.

Quindi, quando hai bisogno di autotools?

L'unico motivo per cui dovresti aver bisogno di installare e invocare autonomamente GNU Autotools è se vuoi fare un lavoro di sviluppo su un progetto creato con Autotools. E anche allora, probabilmente non avrai bisogno degli Autotools a meno che non modifichi le dipendenze del progetto. In tal caso, si avrebbe davvero bisogno di controllare la fonte originale, apportare le modifiche appropriate alle Autotools-specifici file di input ( configure.ac, Makefile.am, ecc), ed eseguire i Autotools su di loro per generare un nuovo configurefile. Se si desidera pubblicare in modo indipendente il pacchetto rivisto, utilizzare il Makefile generato da Autotools per generare un nuovo tarball di distribuzione e quindi pubblicare quel tarball da qualche parte online.

Il problema è che alcuni sviluppatori rendono pubblicamente disponibile il loro repository di origine ma trascurano di pubblicare i tarball di distribuzione (o rendono difficile trovare dove sono pubblicati). Ad esempio, anziché pubblicare i tarball di distribuzione come rilasci GitHub , i rilasci GitHub della libreria XMPP di Erlang sono tarball del repository di origine non elaborato. Ciò rende impossibile compilare il progetto senza GNU Autotools, vanificando in primo luogo l'intero scopo di utilizzare Autotools.

TL; Riepilogo DR

Gli GNU Autotools sono qualcosa che gli sviluppatori usano per creare pacchetti portatili di codice sorgente per gli utenti. Gli utenti devono scaricare e compilare da questi pacchetti di origine, non il codice originale dal sistema di controllo del codice sorgente. Se gli sviluppatori non forniscono questi pacchetti sorgente, non stanno usando correttamente gli Autotools e dovrebbero essere schiaffeggiati delicatamente con una trota bagnata fino a quando non vedono l'errore delle loro vie.


In che modo questo lungo post è collegato alla domanda? OP ha provato a usare gli autotools? Hanno scaricato un po 'di software e funzionavano ./configure && make && sudo make installcome suggerito nel secondo paragrafo.
Pilota 6

3
È rilevante perché il software scaricato dall'OP non conteneva uno script di configurazione corretto (e la versione più recente nel controllo del codice sorgente, oltre ai tarball rilasciati, non contiene affatto uno script di configurazione). Quasi tutte le risposte qui stanno dicendo all'OP di eseguire Autotools. Sebbene ciò possa aggirare il problema, è importante capire la causa principale: gli sviluppatori sono i responsabili dell'esecuzione di Autotools e non l'hanno fatto correttamente (o affatto).
Psiconauta

1
Questa è una buona risposta, e anche se mi piace la frase "schiaffeggiato delicatamente con una trota bagnata", potrebbe essere più appropriato menzionare esplicitamente che la risposta corretta è segnalare il bug a monte.
William Pursell,

1
@WilliamPursell Prendo il gioco di parole è inteso. :)
Psychonaut

4

Ho avuto questo problema e ho scoperto che era dovuto alla seguente riga in configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

La linea di per sé non era male, tuttavia doveva essere spostata più vicino all'inizio del configure.acfile.


3

Si prega di fare quanto segue per risolvere questo problema,

sudo apt-get install autogen libtool shtool

Quindi eseguire l'installazione

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

2

Quando si tenta di compilare GNU Octave dal repository Mercurial, è possibile riscontrare questo problema. La correzione è eseguire ./bootstrapmentre si trova nella radice dell'albero dei sorgenti.



0

Ho avuto un problema simile quando ho provato a ./configureun codice sorgente e ho avuto lo stesso errore pubblicato. Finalmente ho risolto i miei problemi inserendo il codice:

sudo apt-get install autotools-dev

2
Errore: impossibile individuare gli autotools del pacchetto.
Mauricio Scheffer,

Anch'io. Errore: impossibile individuare gli autotools del pacchetto. Downvoted. Scusate.
PJunior,

Ho già installato quel pacchetto, qualunque esso sia. Configura lo script è comunque funzionante.
Boann,

0

Dopo aver installato il autogenpacchetto questo errore è stato risolto nella wolfSSLbuild.

sudo apt-get install autogen libtool shtool

0

Ho avuto un errore leggermente diverso:

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

Si scopre che configure non è stato trovato build-aux/install-sh. L'ho collegato in questo modo

ln -s build-aux/install-sh .

poi costruisce.

Spero che aiuti qualcuno là fuori!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.