Non riesco a trovare install-sh, install.sh o shtool in ac-aux

72

Questa è la prima volta che provo a compilare e installare qualsiasi cosa su una macchina Linux. Ho ricevuto l'ultima versione di link tramite git e ho letto le istruzioni che indicano:

  

2. Costruisci e installa

     

Exmpp utilizza gli autotools. Perciò   il processo è abbastanza comune:

$ ./configure
$ make
$ sudo make install

dopo il tipo ./configure Ottengo l'errore

  

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

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

    
posta Micah 23.02.2011 - 07:14

8 risposte

91

Ho avuto la possibilità di creare lo script configure usando i seguenti strumenti:

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

Non ho tutte le dipendenze quindi non posso testarlo adesso, ma questo è generalmente il modo in cui crei uno script configure da un file.

    
risposta data sebastian_k 23.02.2011 - 07:30
37

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

Che cosa ha funzionato, tuttavia, per me è stato copiato le istruzioni utilizzate in questo build log ho trovato

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

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
    
risposta data entropy 10.11.2012 - 14:30
7

Questa domanda, e la maggior parte delle altre risposte qui, derivano da un fraintendimento di come i progetti utilizzano il Sistema di creazione GNU (aka Autotools) sono distribuiti. Infatti, nel caso della libreria Erlang XMPP menzionata dall'OP, l'equivoco sembra essere da parte degli sviluppatori.

Ottenere il software nel modo giusto

Se tutto ciò che vuoi è compilare e installare un progetto rilasciato con GNU Autotools, allora non dovresti controllarlo dal sistema di controllo del codice sorgente . Dovresti invece scaricare il rilascio sorgente pacchettizzato fornito dallo sviluppatore. Questi normalmente prendono la forma di tarball distribuiti sul sito web del progetto. Per i progetti che sono ospitati interamente su GitHub, Savannah o qualche servizio di hosting simile, questi tarball si trovano di solito dietro ad alcuni collegamenti etichettati come "Download" o "Releases". Si decomprime il pacchetto e si pronuncia qualche variante dello standard ./configure && make && sudo make install incantation. È tutto; non è necessario richiamare nessuno degli Autotools GNU e non è nemmeno necessario che GNU Autotools sia installato sul sistema.

Il motivo per cui tu, l'utente, non hai bisogno degli Autotools GNU per compilare un progetto con pacchetto Autotools è che lo sviluppatore abbia già usato i vari programmi di Autotools per generare un "tarball di distribuzione" che può essere usato per costruire il software su qualsiasi sistema simile a Unix. Il tarball di distribuzione contiene uno script di configure altamente portatile che analizza l'ambiente di generazione, controlla le dipendenze e costruisce un Makefile personalizzato per il tuo sistema.

Quindi quando hai bisogno di Autotools?

L'unica ragione per cui dovresti installare e invocare autonomamente GNU Autotools è se vuoi fare sviluppo su un progetto creato con Autotools. E anche allora, probabilmente non avrai bisogno degli Autotools se non cambi le dipendenze del progetto. In tal caso, dovresti effettivamente controllare la fonte originale, apportare le opportune modifiche ai file di input specifici di Autotools ( configure.ac , Makefile.am , ecc.) Ed eseguire gli Autotools su di essi per generare un nuovo configure file. Se vuoi pubblicare in modo indipendente il pacchetto rivisto, allora dovresti usare 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 pubblico il loro repository di origine, ma trascurano di pubblicare i loro tarball di distribuzione (o rendono difficile trovare dove sono pubblicati). Ad esempio, anziché pubblicando i loro tarball di distribuzione come GitHub Releases , Le versioni di GitHub della libreria Erlang XMPP sono tarball del repository raw. Ciò rende impossibile compilare il progetto senza GNU Autotools, vanificando l'intero scopo di utilizzare Autotools in primo luogo.

TL; Riepilogo DR

Gli GNU Autotools sono qualcosa che gli sviluppatori usano per creare pacchetti di codice sorgente portatile per gli utenti. Gli utenti devono scaricare e compilare da questi pacchetti sorgente, non dal codice originale dal sistema di controllo del codice sorgente. Se gli sviluppatori non forniscono questi pacchetti sorgente, allora non stanno utilizzando correttamente gli Autotools e dovrebbero essere delicatamente schiaffeggiato con un bagnato trota finché non vedono l'errore dei loro modi.

    
risposta data Psychonaut 01.09.2017 - 12:53
4

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

AC_CONFIG_AUX_DIR([build-aux])

La linea non era male di per sé, tuttavia doveva essere spostata più vicino alla parte superiore del file configure.ac .

    
risposta data Craig McQueen 02.05.2016 - 13:29
2

Per risolvere il problema, fai quanto segue,

sudo apt-get install autogen libtool shtool

Quindi esegui l'installazione

sh autogen.sh --prefix=prefered_install_path
make 
make install 
    
risposta data Ravi Hegde 02.09.2015 - 13:30
1

sudo apt-get install automake autoconf

funziona con successo

    
risposta data Shafiul Karim Bulan 12.06.2013 - 08:47
1

Durante il tentativo di compilare GNU Octave dal repository Mercurial, potresti incontrare questo problema. La correzione è di eseguire ./bootstrap mentre si trova nella radice dell'albero dei sorgenti.

    
risposta data Ruslan 22.03.2017 - 14:45
0

Ho avuto un problema simile quando ho provato a ./configure un codice sorgente e ho ottenuto lo stesso errore di quello pubblicato. Alla fine ho risolto i miei problemi inserendo il codice:

sudo apt-get install autotools-dev
    
risposta data retnan 09.02.2013 - 17:35

Leggi altre domande sui tag