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


81

C'est la première fois que j'essaie de compiler et d'installer quoi que ce soit sur une machine Linux. J'ai reçu la dernière version de https://github.com/processone/exmpp via git et j'ai lu 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 ./configureje reçois 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

Réponses:


109

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.


2
Les instructions du fichier README ont probablement été copiées aveuglément ailleurs. Je dois admettre que je ne comprends pas tous les détails de la chaîne d'outils autoconf; Il s'agit essentiellement d'un ensemble de macros générées et utilisées pour créer votre script de configuration (qui, à son tour, ouvre la voie au processus de compilation et d'installation). Je n'ai jamais eu à peaufiner ces choses, donc je ne suis pas un expert, mais il existe des explications assez détaillées ici
sebastian_k le

12
Note aux programmeurs: veuillez ne plus utiliser la chaîne d'outils automake. S'il vous plaît .
Qix

1
@ Qix, pourriez-vous, s'il vous plaît, nous expliquer pourquoi?
Sergei

4
@Sergei est en désordre, lent et se brise constamment. Il encombre définit et est incroyablement magique . Son mode de traitement des dépendances (ou de l'absence de dépendances) donne des messages d'erreur cryptés, et les fichiers qu'il produit sont illisibles au mieux et cauchemardesques au pire.
Qix

4
@Sergei CMake est le plus viable à l'heure actuelle, à mon avis. Je suis sûr qu'il y aura quelque chose de mieux dans le (proche) avenir.
Qix

40

Eh bien, j'ai essayé la réponse de sebastian_k et cela n'a pas fonctionné pour moi ( ./configures'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

16
+1 autoreconf -iest la bonne réponse ( vet fsont généralement facultatifs)
Nemo

2
+1 C'est la seule réponse qui a fonctionné pour moi.
weberc2

@Nemo sympa. La réponse acceptée fonctionne techniquement, mais la vôtre est de loin la plus simple.
AVINDRA Goolcharan

9

Cette question, et la plupart des autres réponses ici, découlent d'une incompréhension de la manière dont les projets utilisant le système de construction GNU (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 tout ce que vous voulez, c'est compiler et installer un projet publié avec les outils automatiques GNU, vous ne devez pas l'extraire du système de contrôle de code source . Vous devriez plutôt télécharger la version source 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 paquet et énoncez une variante de l' ./configure && make && sudo make installincantation standard . C'est tout; vous n'avez pas besoin d'appeler l'un des outils automatiques GNU et vous n'avez même pas besoin d'installer les outils automatiques GNU 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 programmes Autotools pour générer une "archive tar de distribution" qui peut être utilisée pour créer le logiciel sur n’importe quel logiciel. Système de type Unix. L’archive tar de la distribution contient un configurescript hautement portable qui analyse l’environnement de construction, recherche les dépendances et crée un environnement Makefilepersonnalisé pour votre système.

Alors, quand avez-vous besoin d'Autotools?

Si vous souhaitez effectuer des travaux de développement sur un projet construit avec Autotools, la seule raison pour laquelle vous auriez besoin d'installer et d'appeler GNU Autotools est . 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 bien vérifier la source d' origine, apporter des modifications appropriées aux fichiers d'entrée spécifiques Autotools ( configure.ac, Makefile.am, etc.), et exécuter les Autotools sur eux pour générer un nouveau configurefichier. Si vous souhaitez publier indépendamment le package révisé, vous utiliseriez 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 de publier leurs archives tar de distribution sous forme de versions GitHub , les versions GitHub de la bibliothèque Erlang XMPP sont des archives du référentiel source brut. Cela rend impossible la compilation du projet sans les outils automatiques GNU, annulant ainsi l’objectif premier d’utiliser Autotools.

Résumé TL; DR

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


Comment ce long post est-il lié à la question? Est-ce que OP a essayé d'utiliser autotools? Ils ont téléchargé certains logiciels et se sont déroulés ./configure && make && sudo make installcomme vous l'avez suggéré dans le deuxième paragraphe.
Pilot6

3
Cela est pertinent car le logiciel téléchargé par l'OP ne contenait pas un script de configuration correct (et la version la plus récente dans le contrôle de code source, plus les archives compressées publiées, ne contient aucun script de configuration). Presque toutes les réponses ici disent au PO d’exécuter Autotools. Bien que cela puisse contourner le problème, il est important de comprendre la cause première: ce sont les développeurs qui exécutent Autotools et ils ne l’ont pas fait correctement (ou pas du tout).
Psychonaute

1
C'est une bonne réponse, et bien que j'aime bien la phrase "doucement giflé avec une truite mouillée", il serait peut-être plus approprié de mentionner explicitement que la bonne réponse est de signaler le bogue en amont.
William Pursell

1
@ WilliamPursell Je suppose que le jeu de mots est destiné. :)
Psychonaute

4

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

AC_CONFIG_AUX_DIR([build-aux])

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


3

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 

2

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



0

J'ai eu un problème similaire lorsque j'ai essayé ./configureun code source et 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

2
Erreur: Impossible de localiser le paquet autotools.
Mauricio Scheffer

Pareil ici. Erreur: Impossible de localiser le paquet autotools. Moins voté. Pardon.
PJunior

J'ai déjà installé ce paquet, quel qu'il soit. Le script de configuration est borked néanmoins.
Boann

0

Après l'installation du autogenpaquet, cette erreur a été résolue dans la wolfSSLconstruction.

sudo apt-get install autogen libtool shtool

0

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 pu trouver 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!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.