web-dev-qa-db-fra.com

Impossible de trouver install-sh, install.sh ou shtool dans ac-aux

C'est la première fois que j'essaie de compiler et d'installer quoi que ce soit sur une machine Linux. J'ai la dernière version de https://github.com/processone/exmpp via git et lisez les instructions qui indiquent:

2. Construire et installer

Exmpp utilise les outils automatiques. Par conséquent, le processus est assez courant:

$ ./configure
$ make
$ Sudo make install

après le type ./configure j'obtiens l'erreur

Impossible de trouver install-sh, install.sh ou shtool dans ac-aux

Google n'était d'aucune aide. Pas sûr du tout de ce que je suis censé faire. Toute aide serait très appréciée

81
Micah

Je l'ai eu pour créer le script configure en utilisant les outils suivants:

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

Je n'ai pas toutes les dépendances, donc je ne peux pas le tester pour le moment, mais c'est généralement comme cela que vous créeriez un script de configuration à partir d'un fichier ac.

108
sebastian_k

Eh bien, j'ai essayé la réponse de sebastian_k et cela n'a pas fonctionné pour moi (./configure s'est écrasé à mi-chemin avec une erreur extrêmement étrange).

Cependant, ce qui a bien fonctionné pour moi a été de copier les instructions utilisées dans ce journal de construction que j'ai trouvé

La version courte (pour que vous n'ayez pas à la parcourir vous-même) est la suivante:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ Sudo make install
40
entropy

Cette question, et la plupart des autres réponses présentées ici, résultent d'un malentendu sur la manière dont les projets utilisant GNU Build System (a.k.a. Autotools) sont distribués. En fait, dans le cas de la bibliothèque Erlang XMPP mentionnée par l'OP, le malentendu semble être de la part des développeurs.

Obtenir le logiciel de la bonne façon

Si vous ne souhaitez que compiler et installer un projet publié avec GNU Autotools, alors vous ne devez pas l'extraire du système de contrôle de la source. Vous devriez plutôt télécharger la version version packagée fournie par le développeur. Celles-ci prennent normalement la forme d'archives distribuées sur le site Web du projet. Pour les projets hébergés entièrement sur GitHub, Savannah ou un service d’hébergement similaire, ces archives se trouvent généralement derrière un lien intitulé "Télécharger" ou "Versions". Vous décompressez le package et énoncez une variante de l'incantation ./configure && make && Sudo make install standard. C'est tout; vous n'avez pas besoin d'appeler l'un des GNU Autotools, ni même d'avoir le GNU Autotools installé sur votre système.

Si vous, l'utilisateur, n'avez pas besoin de GNU Autotools pour compiler un projet emballé par Autotools, c'est que le développeur a déjà utilisé les divers outils Autotools. programmes pour générer une "archive tar de distribution" pouvant être utilisée pour construire le logiciel sur n’importe quel système de type Unix. L'archive de distribution contient un script hautement portable configure qui analyse l'environnement de construction, recherche les dépendances et construit un Makefile personnalisé en fonction de votre système.

Alors, quand avez-vous besoin d'Autotools?

La seule raison pour laquelle vous devriez avoir besoin d'installer et d'appeler vous-même GNU Autotools, c'est si vous voulez faire development travailler sur un projet construit avec Autotools. Et même dans ce cas, vous n’auriez probablement pas besoin d’Autotools si vous ne modifiez pas les dépendances du projet. Dans ce cas, vous devez effectivement extraire la source d'origine, apporter les modifications appropriées aux fichiers d'entrée spécifiques à Autotools (configure.ac, Makefile.am, etc.) et y exécuter les outils Autotools pour générer un nouveau fichier configure. Si vous souhaitez publier indépendamment le package révisé, vous utiliserez le fichier Makefile généré par Autotools pour générer une nouvelle archive tar de distribution, puis publiez cette archive quelque part en ligne.

Le problème est que certains développeurs mettent leur référentiel source à la disposition du public, mais négligent de publier leurs archives de distribution (ou rendent difficile la localisation de leur publication). Par exemple, plutôt que publiant leurs archives de distribution sous forme de versions de GitHub , les versions de GitHub de la bibliothèque Erlang XMPP sont des archives du référentiel source brut. Cela rend impossible la compilation du projet sans GNU Autotools, ce qui annule l’objet premier de l’utilisation d’Autotools.

Résumé TL; DR

Les GNU Autotools sont quelque chose que développeurs == utilise pour créer des packages de code source portables pour les utilisateurs. Users doit télécharger et compiler à partir de ces packages source, pas le code d'origine du système de contrôle de code source. Si les développeurs ne fournissent pas ces packages sources, ils n'utilisent pas correctement Autotools et doivent être doucement giflés avec une truite mouillée jusqu'à ce qu'ils voient l'erreur de leur manière.

9
Psychonaut

J'ai eu ce problème et j'ai trouvé que c'était dû à la ligne suivante dans configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

La ligne n'était pas mauvaise en soi, mais il fallait la rapprocher du haut du fichier configure.ac.

4
Craig McQueen

Veuillez faire ce qui suit pour résoudre ce problème,

Sudo apt-get install autogen libtool shtool

Puis faire l'installation

sh autogen.sh --prefix=prefered_install_path
make 
make install 
3
Ravi Hegde

Lorsque vous essayez de compiler GNU Octave à partir du référentiel Mercurial, vous pouvez rencontrer ce problème. Le correctif consiste à exécuter ./bootstrap tout en étant à la racine de l'arborescence source.

2
Ruslan

Sudo apt-get install automake autoconf

ses travaux avec succès

1

Après avoir installé le package autogen, cette erreur a été résolue dans la version wolfSSL.

Sudo apt-get install autogen libtool shtool
0
rashok

J'ai eu une erreur légèrement différente:

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

Il s'avère que configure n'a pas trouvé build-aux/install-sh. Je l'ai lié comme si

ln -s build-aux/install-sh .

alors ça construit.

J'espère que cela aide quelqu'un là-bas!

0
Barmaley

J'ai eu un problème similaire lorsque j'ai essayé de ./configure un code source et j'ai obtenu la même erreur que celle publiée. Enfin résolu mes problèmes en entrant le code:

Sudo apt-get install autotools-dev
0
retnan