Pregunta

Estoy trabajando en un proyecto que se distribuirá con GNU autoconf/automake y tengo un conjunto de scripts bash que llaman scripts awk.Me gustaría que los scripts bash terminen en $PATH, pero no los scripts awk.¿Cómo debo insertarlos en el proyecto?¿Deberían incluirse con otros binarios?

Además, ¿hay alguna manera de determinar la ubicación final del archivo después de la instalación?Supongo que /usr/local/bin no lo es siempre donde terminan los ejecutables...

¿Fue útil?

Solución

Agrega algo como esto a Makefile.am

scriptsdir = $(prefix)/bin
scripts_DATA = awkscript1 awkscript2

En este caso, instalará awkscript en $(prefix)/bin (también puede usar $(bindir)).

Nota:No olvide que el primero debe llamarse nombre + dir (scripts -> scriptsdir) y el segundo debe llamarse nombre + _DATA (scripts -> scripts_DATA).

Otros consejos

Puede simplemente enumerar los scripts que desea instalar en Makefile.am:

bin_SCRIPTS = foo bar

Esto hará que foo y bar se instalen durante la instalación make.Para obtener la ruta a su ubicación final, puede usar @bindir@ en foo.in y configurar la compilación foo por usted.Por ejemplo, en configure.ac:

AC_CONFIG_FILES([foo bar])

y luego en foo.in:

#!/bin/sh

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
echo bindir = $bindir

Tenga en cuenta que la persona que ejecuta configurar puede especificar cualquiera de --pefix, --exec_prefix o -bindir, y la instalación puede redirigirse con un Destdir.Usando la técnica descrita aquí, DESTDIR no se tendrá en cuenta y el script se instalará en una ubicación distinta a la ruta de la que hará eco.Esto es por diseño y es el comportamiento correcto, ya que normalmente se utiliza una instalación DESTDIR para crear un archivo tar que eventualmente se descomprimirá en el sistema de archivos de tal manera que el bindir en el script se vuelva válido.

Jonathan, en respuesta a tu pregunta adicional:Si desea reemplazar el valor del prefijo en el momento de la compilación, deberá:

  1. cambie el nombre de su secuencia de comandos 'myscript' a 'myscript.in'
  2. agregue una regla a configure.ac para generarla en la parte inferior
  3. usa una macro que hice llamada AS_AC_EXPAND
  4. úsalo así:

    AS_AC_EXPAND(BINDIR, $bindir)

  5. en su 'myscript.in', ahora puede usar @BINDIR@ y se expandirá a la ruta completa donde terminará instalándose el script.

Tenga en cuenta que no debe usar PREFIX directamente, cualquiera de los directorios de instalación se puede cambiar, por lo que realmente desea usar el valor pasado para configurar bindir y expandirlo.

Si los scripts awk no van al directorio bin principal (prefijo/bin), entonces debe colocarlos en un subdirectorio apropiado, probablemente lib pero posiblemente libexec o share (ya que los scripts awk probablemente sean neutrales en cuanto a plataforma) .

Correcto:el software no necesariamente terminará en /usr/local/bin;en mi máquina, /usr/local/bin es administrado por MIS y, por lo tanto, todo el software que instalo se encuentra en /usr/gnu/.Yo suelo:./configure --prefix=/usr/gnu para instalar el software donde lo quiero.

Puede incrustar el valor de PREFIX en los scripts de bash; efectivamente, "compilará" los scripts para incluir la ubicación de instalación.Tenga en cuenta los problemas durante las pruebas de compilación: es posible que primero necesite ubicar los scripts relativos al directorio actual y luego a PREFIX.

Hay algunos consejos sobre esto en el manual de autofabricación.Parece que el enfoque preferido es generar los scripts con el archivo MAKE en lugar del script de configuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top