No se puede encontrar install-sh, install.sh o shtool en ac-aux

81

Esta es la primera vez que intento compilar e instalar cualquier cosa en una máquina Linux. Obtuve la última versión de https://github.com/processone/exmpp a través de git y leí las instrucciones que dicen:

2. Construir e instalar

Exmpp usa los Autotools. Por lo tanto, el proceso es bastante común:

$ ./configure
$ make
$ sudo make install

después del tipo ./configureme sale el error

No se puede encontrar install-sh, install.sh o shtool en ac-aux

Google fue de poca o ninguna ayuda. No estoy seguro de lo que se supone que debo hacer. Cualquier ayuda sería muy apreciada

Micah
fuente

Respuestas:

109

Lo conseguí para crear el script de configuración usando las siguientes herramientas:

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

No tengo todas las dependencias, por lo que no puedo probarlo en este momento, pero generalmente así es como crearía un script de configuración a partir de un archivo ac.

sebastian_k
fuente
2
Las instrucciones en el archivo README probablemente se copiaron a ciegas de otro lugar. Tengo que admitir que no entiendo todos los detalles de la cadena de herramientas de autoconf; Básicamente es una colección de macros que se generan y se utilizan para crear su script de configuración (que, a su vez, prepara el escenario para el proceso de compilación e instalación). Nunca tuve que ajustar estas cosas, así que no soy un experto, pero hay algunas explicaciones bastante extensas aquí
sebastian_k
12
Nota para los programadores: deje de usar la cadena de herramientas de automake. Por favor .
Qix
1
@Qix, ¿podría explicarnos por qué?
Sergei
44
@Sergei es desordenado, lento y se rompe constantemente. Se abarrota define y es increíblemente mágico . Su forma de manejar las dependencias (o la falta de ellas) genera mensajes de error crípticos, y los archivos que produce son ilegibles en el mejor de los casos y, en el peor, rotos.
Qix
44
@Sergei CMake es el más viable en este momento en mi opinión. Estoy seguro de que habrá algo mejor en el futuro (cercano).
Qix
40

Bueno, probé la respuesta de sebastian_k y no funcionó para mí (se ./configureestrelló a mitad de camino con un error extremadamente extraño).

Sin embargo, lo que funcionó para mí fue copiar las instrucciones utilizadas en este registro de compilación que encontré

La versión corta (para que no tenga que atravesarla usted mismo) es:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install
entropía
fuente
16
+1. autoreconf -ies la respuesta correcta ( vy fgeneralmente son opcionales)
Nemo
2
+1. Esta es la única respuesta que funcionó para mí.
weberc2
@Nemo agradable. La respuesta aceptada técnicamente funciona, pero la suya es la más simple con diferencia.
Avindra Goolcharan
9

Esta pregunta, y la mayoría de las otras respuestas aquí, surgen de un malentendido sobre cómo se distribuyen los proyectos que utilizan el Sistema de compilación GNU (también conocido como Autotools). De hecho, en el caso de la biblioteca Erlang XMPP mencionada por el OP, el malentendido parece ser de parte de los desarrolladores.

Obteniendo el software de la manera correcta

Si todo lo que quiere hacer es compilar e instalar un proyecto lanzado con las herramientas automáticas GNU, entonces no debe verificarlo desde el sistema de control de código fuente . En su lugar, debe descargar la versión de origen empaquetada proporcionada por el desarrollador. Estos normalmente toman la forma de tarballs distribuidos en el sitio web del proyecto. Para proyectos que están alojados completamente en GitHub, Savannah o algún servicio de alojamiento similar, estos tarballs generalmente se encuentran detrás de un enlace etiquetado como "Descargar" o "Lanzamientos". Descomprime el paquete y pronuncia alguna variante del ./configure && make && sudo make installencantamiento estándar . Eso es todo; no necesita invocar ninguna de las herramientas automáticas de GNU, y ni siquiera necesita tener las herramientas automáticas de GNU instaladas en su sistema.

La razón por la que usted, el usuario, no necesita las Autotools de GNU para compilar un proyecto empaquetado de Autotools es que el desarrollador ya ha utilizado los diversos programas de Autotools para generar un "tarball de distribución" que puede usarse para construir el software en cualquier Sistema tipo Unix. El tarball de distribución contiene un configurescript altamente portátil que escanea el entorno de compilación, busca dependencias y construye un Makefilesistema personalizado para su sistema.

Entonces, ¿cuándo necesitas Autotools?

La única razón por la que debería instalar e invocar los Autogols de GNU usted mismo es si desea realizar un trabajo de desarrollo en un proyecto creado con Autotools. E incluso entonces, probablemente no necesitará las herramientas automáticas a menos que cambie las dependencias del proyecto. En ese caso, sería de hecho que tenga que revisar la fuente original, hacer los cambios apropiados a los Autotools específica archivos de entrada ( configure.ac, Makefile.am, etc.), y ejecutar las Autotools en ellos para generar un nuevo configurearchivo. Si desea publicar de forma independiente el paquete revisado, utilizaría el Makefile generado por Autotools para generar un nuevo tarball de distribución y luego publicaría ese tarball en algún lugar en línea.

El problema es que algunos desarrolladores hacen que su repositorio de origen esté disponible públicamente, pero no publican sus tarballs de distribución (o dificultan encontrar dónde se publican). Por ejemplo, en lugar de publicar sus tarballs de distribución como lanzamientos de GitHub , los lanzamientos de GitHub de la biblioteca Erlang XMPP son tarballs del repositorio de origen sin procesar. Esto hace que sea imposible compilar el proyecto sin los GNU Autotools, lo que anula el propósito de usar Autotools en primer lugar.

TL; resumen DR

Las herramientas automáticas GNU son algo que los desarrolladores usan para crear paquetes de código fuente portátiles para los usuarios. Los usuarios deben descargar y compilar desde estos paquetes fuente, no el código original del sistema de control fuente. Si los desarrolladores no proporcionan estos paquetes de origen, entonces no están utilizando Autotools correctamente, y deben ser golpeados suavemente con una trucha húmeda hasta que vean el error de sus formas.

Psiconauta
fuente
¿Cómo se relaciona esta larga publicación con la pregunta? ¿OP intentó usar autotools? Se descargaron algunos programas y se ejecutaron ./configure && make && sudo make installcomo sugeriste en el segundo párrafo.
Pilot6
3
Es relevante porque el software descargado por el OP no contenía una secuencia de comandos de configuración correcta (y la versión más reciente en control de código fuente, más los tarballs lanzados, no contienen una secuencia de comandos de configuración). Casi todas las respuestas aquí le dicen al OP que ejecute Autotools. Si bien esto puede solucionar el problema, es importante comprender la causa raíz: los desarrolladores son los responsables de ejecutar Autotools y no lo han hecho correctamente (o no lo han hecho).
Psychonaut
1
Esta es una buena respuesta, y aunque me gusta la frase "golpeó suavemente con una trucha mojada", podría ser más apropiado mencionar explícitamente que la respuesta correcta es informar el error aguas arriba.
William Pursell
1
@WilliamPursell Supongo que el juego de palabras está destinado. :)
Psychonaut
4

Tuve este problema y descubrí que se debía a la siguiente línea configure.ac:

AC_CONFIG_AUX_DIR([build-aux])

La línea no era mala per se, sin embargo, necesitaba moverse más cerca de la parte superior del configure.acarchivo.

Craig McQueen
fuente
3

Haga lo siguiente para solucionar este problema,

sudo apt-get install autogen libtool shtool

Luego haz la instalación

sh autogen.sh --prefix=prefered_install_path
make 
make install 
Ravi Hegde
fuente
2

Al intentar compilar GNU Octave del repositorio de Mercurial, puede encontrar este problema. La solución es ejecutar ./bootstrapmientras está en la raíz del árbol de origen.

Ruslan
fuente
1

sudo apt-get install automake autoconf

funciona con éxito

Shafiul Karim Bulan
fuente
0

Tuve un problema similar cuando intenté con ./configureun código fuente y obtuve el mismo error que el publicado. Finalmente resolvió mis problemas ingresando el código:

sudo apt-get install autotools-dev
retnan
fuente
2
Error: no se pueden encontrar las herramientas automáticas del paquete.
Mauricio Scheffer
Igual que aquí. Error: no se pueden encontrar las herramientas automáticas del paquete. Voto negativo Lo siento.
PJunior
Ya tengo ese paquete instalado, sea lo que sea. La secuencia de comandos de configuración se borra, no obstante.
Boann
0

Después de instalar el autogenpaquete, este error se resolvió en la wolfSSLcompilación.

sudo apt-get install autogen libtool shtool
rashok
fuente
0

Tuve un error ligeramente diferente:

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

Resulta que configure no se pudo encontrar build-aux/install-sh. Lo vinculé así

ln -s build-aux/install-sh .

entonces se construye.

Espero que ayude a alguien por ahí!

Barmaley
fuente