98 votes

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 quelque chose 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 Autotools. Par conséquent, le processus est assez commun :

$ ./configure
$ make
$ sudo make install

après le type ./configure Je reçois l'erreur

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

Google n'a été d'aucune aide. Je ne sais pas du tout ce que je suis censé faire. Toute aide serait très appréciée.

135voto

Carlos Tasada Points 109

J'ai obtenu qu'il crée le configure script 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 l'instant, mais c'est généralement la façon dont on crée un script configuré à partir d'un fichier ac.

51voto

entropy Points 611

J'ai essayé la réponse de sebastian_k et cela n'a pas fonctionné pour moi ( ./configure s'est planté à mi-chemin avec une erreur extrêmement bizarre).

Cependant, ce qui a fonctionné pour moi, c'est de copier les instructions utilisées dans ce document. 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

12voto

Psychonaut Points 223

Cette question, et la plupart des autres réponses données ici, découlent d'une mauvaise compréhension de la manière dont les projets utilisant l'option Système de construction GNU (alias Autotools) sont distribués. En fait, dans le cas de l Bibliothèque Erlang XMPP mentionné par le PO, le malentendu semble être du côté des développeurs.

Obtenir le logiciel de la bonne manière

Si tout ce que vous voulez faire est de compiler et d'installer un projet publié avec les GNU Autotools, alors vous ne devez pas le vérifier à partir du système de contrôle de la source . Vous devriez plutôt télécharger le version source packagée fournis par le développeur. Ceux-ci prennent normalement la forme de tarballs distribués sur le site web du projet. Pour les projets qui sont entièrement hébergés sur GitHub, Savannah ou un service d'hébergement similaire, ces archives se trouvent généralement derrière un lien intitulé "Download" ou "Releases". Vous détachez le paquet et utilisez une variante de la commande standard ./configure && make && sudo make install incantation. C'est tout ; vous n'avez pas besoin d'invoquer les outils automatiques de GNU, et il n'est même pas nécessaire que les outils automatiques de GNU soient installés sur votre système.

La raison pour laquelle vous, l'utilisateur, n'avez pas besoin de GNU Autotools pour compiler un projet empaqueté par Autotools est que le développeur a ya a utilisé les différents programmes Autotools pour générer une "distribution tarball" qui peut être utilisée pour construire le logiciel sur n'importe quel système Unix-like. L'archive de distribution contient un logiciel hautement portable configure script qui scanne l'environnement de construction, vérifie les dépendances, et construit une Makefile personnalisé à votre système.

Alors, quand avez-vous besoin d'Autotools ?

La seule raison pour laquelle vous devriez avoir besoin d'installer et d'invoquer les GNU Autotools vous-même est si vous voulez faire développement travailler sur un projet construit avec Autotools. Et même dans ce cas, vous n'aurez probablement pas besoin des Autotools, sauf si vous modifiez les dépendances du projet. Dans ce cas, vous devrez effectivement vérifier la source originale, apporter les modifications appropriées aux fichiers d'entrée spécifiques à Autotools ( configure.ac , Makefile.am etc.), puis exécutez les Autotools sur ceux-ci pour générer une nouvelle configure fichier. Si vous voulez publier indépendamment le paquet révisé, vous utiliserez le Makefile généré par Autotools pour générer une nouvelle distribution tarball, puis vous publierez cette tarball quelque part en ligne.

Le problème est que certains développeurs mettent leur dépôt de sources à la disposition du public mais négligent de publier leurs tarballs de distribution (ou font en sorte qu'il soit difficile de trouver où ils sont publiés). Par exemple, au lieu de en publiant leurs fichiers de distribution sous forme de versions GitHub le Communiqués GitHub de la bibliothèque Erlang XMPP sont des tarballs du dépôt de sources brutes. Il est donc impossible de compiler le projet sans GNU Autotools, ce qui va à l'encontre de l'objectif premier de l'utilisation d'Autotools.

Résumé TL;DR

Les outils automatiques GNU sont quelque chose qui développeurs pour créer des paquets de code source portables pour les utilisateurs. Utilisateurs doit télécharger et compiler à partir de ces paquets source, et non à partir du code original du système de contrôle des sources. Si les développeurs ne fournissent pas ces paquets sources, alors ils n'utilisent pas Autotools correctement et doivent être doucement giflé avec une truite mouillée jusqu'à ce qu'ils voient l'erreur de leur comportement.

8voto

Ravi Hegde Points 81

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

sudo apt-get install autogen libtool shtool

Ensuite, faites l'installation

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

4voto

Craig McQueen Points 147

J'ai eu ce problème, et j'ai découvert qu'il était dû à la ligne suivante dans le fichier configure.ac :

AC_CONFIG_AUX_DIR([build-aux])

La ligne n'était pas mauvaise en soi, mais elle devait être déplacée plus près du haut de l'écran. configure.ac fichier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X