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

72

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

  

2. Compila e instala

     

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

$ ./configure
$ make
$ sudo make install

después de escribir ./configure obtengo 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

    
pregunta Micah 23.02.2011 - 07:14

8 respuestas

92

Lo tengo 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, así que no puedo probarlo ahora mismo, pero esta es generalmente la forma en que crearía un script de configuración a partir de un archivo ac.

    
respondido por el sebastian_k 23.02.2011 - 07:30
37

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

Lo que sí funcionó, sin embargo, funcionó para mí al copiar las instrucciones utilizadas en esta compilación registro que encontré

La versión corta (para que no tenga que pasar por ella) es:

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

Esta pregunta, y la mayoría de las respuestas aquí, surgen de un malentendido acerca de cómo los proyectos usan el Sistema GNU Build (aka Autotools) se distribuyen. De hecho, en el caso de la biblioteca Erlang XMPP mencionada por el OP, el malentendido parece ser de parte de los desarrolladores.

Obtener el software de la manera correcta

Si todo lo que quiere hacer es compilar e instalar un proyecto publicado con las Autotools de GNU, entonces no debería verificarlo desde el sistema de control de origen . En su lugar, debe descargar la versión fuente empaquetada proporcionada por el desarrollador. Estos normalmente toman la forma de tarballs distribuidos en el sitio web del proyecto. Para los proyectos que se alojan por completo en GitHub, Savannah o algún servicio de alojamiento similar, estos archivos comprimidos generalmente se encuentran detrás de algún enlace etiquetado como "Descargar" o "Versiones". Destraba el paquete y pronuncia alguna variante del encantamiento ./configure && make && sudo make install estándar. Eso es todo; no necesita invocar ninguna de las Autotools de GNU, y ni siquiera necesita tener instaladas las Autotools de GNU 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 ya los diversos programas Autotools para generar un "tarball de distribución" que se puede usar para construir el software en cualquier sistema tipo Unix. El tarball de distribución contiene un script altamente portable configure que explora el entorno de compilación, busca dependencias y construye un Makefile personalizado para su sistema.

Entonces, ¿cuándo necesitas Autotools?

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

El problema es que algunos desarrolladores hacen que su repositorio fuente esté disponible públicamente pero no publican sus archivos de distribución (o dificultan encontrar dónde se publican). Por ejemplo, en lugar de publicar sus bolas de distribución como versiones de GitHub , la Las versiones de GitHub de la biblioteca Erlang XMPP son archivos comprimidos del repositorio de fuentes sin procesar. Esto hace que sea imposible compilar el proyecto sin las Autotools de GNU, en primer lugar, al derrotar todo el propósito del uso de Autotools.

TL; resumen de RD

Las Autotools de GNU son algo que developers usan para crear paquetes de códigos fuente portátiles para los usuarios. Los usuarios deben descargar y compilar a partir de estos paquetes fuente, no el código original del sistema de control de origen. Si los desarrolladores no proporcionan estos paquetes fuente, entonces no están usando Autotools correctamente, y deben ser suavemente abofeteados con un mojado truchas hasta que vean el error de sus formas.

    
respondido por el Psychonaut 01.09.2017 - 12:53
4

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

AC_CONFIG_AUX_DIR([build-aux])

La línea no era mala per se, pero tenía que moverse más cerca de la parte superior del archivo configure.ac .

    
respondido por el Craig McQueen 02.05.2016 - 13:29
2

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 
    
respondido por el Ravi Hegde 02.09.2015 - 13:30
1

sudo apt-get install automake autoconf

funciona correctamente

    
respondido por el Shafiul Karim Bulan 12.06.2013 - 08:47
1

Al tratar de compilar GNU Octave del repositorio de Mercurial, es posible que encuentre este problema. La solución es ejecutar ./bootstrap estando en la raíz del árbol de origen.

    
respondido por el Ruslan 22.03.2017 - 14:45
0

Tuve un problema similar cuando traté de ./configure un código fuente y recibí el mismo error que el publicado. Finalmente resolví mis problemas ingresando el código:

sudo apt-get install autotools-dev
    
respondido por el retnan 09.02.2013 - 17:35

Lea otras preguntas en las etiquetas