Domanda

Sto lavorando su un progetto che verrà distribuito con GNU autoconf/automake, e ho una serie di script in bash che call script awk.Vorrei uno script bash per finire nel $PATH, ma non l'script awk.Come devo inserire questi nel progetto?Dovrebbe essere messo in con altri binari?

Inoltre, c'è un modo per determinare la posizione finale del file dopo l'installazione?Presumo che /usr/local/bin non è sempre dove gli eseguibili finire...

È stato utile?

Soluzione

Aggiungere qualcosa di simile a Makefile.am

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

In questo caso verrà installato awkscript in $(prefix)/bin (si può anche usare $(bindir)).

Nota:Non dimenticate che il primo dovrebbe essere di nome nome + dir (script -> scriptsdir) e la seconda dovrebbe essere il nome + DATA (script -> scripts_DATA).

Altri suggerimenti

Si possono solo elencare gli script che si desidera essere installato nel Makefile.am:

bin_SCRIPTS = foo bar

Questo sarà causa di foo e bar per essere installato durante il make install.Per ottenere il percorso per la loro destinazione, è possibile utilizzare la funzione @bindir@ pippo.e lasciate configurare costruire pippo per voi.Per esempio, nel configurare.ac:

AC_CONFIG_FILES([foo bar])

e poi pippo.in:

#!/bin/sh

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

Tenete a mente che la persona che esegue configurare può specificare qualsiasi --prefisso, --exec_prefix, o --bindir, e l'installazione può essere reindirizzati con un DESTDIR.Utilizzando la tecnica descritta qui, DESTDIR non saranno prese in considerazione e lo script verrà installato in una posizione diversa rispetto al percorso che l'eco.Questo è, ed è il comportamento corretto, come al solito, un DESTDIR di installazione utilizzato per creare un archivio tar che alla fine verrà scompattato nel filesystem, in modo che il bindir nello script diventa valido.

Jonathan, in risposta alla tua domanda:se si desidera sostituire il valore del prefisso al momento di costruire, è necessario:

  1. rinominare il tuo script 'myscript' a 'myscript.nel'
  2. aggiungere una regola per configurare.ac per generare in fondo
  3. utilizzare una macro che ho fatto chiamato AS_AC_EXPAND
  4. usarlo come questo:

    AS_AC_EXPAND(BINDIR, $bindir)

  5. nel 'myscript.in', ora è possibile utilizzare la funzione @BINDIR@ e sarà ampliato il percorso completo in cui lo script finirà per essere installato.

Nota che non si deve usare il PREFISSO direttamente, qualsiasi directory di installazione, potenzialmente, può essere modificato in modo che davvero si desidera utilizzare il valore passato a configurare per bindir ed espandere.

Se lo script awk non passare i principali bin (prefisso/bin), quindi è necessario inserirli in un apposito sub-directory - probabilmente di lib, ma forse libexec o condividere (dal momento che il gli script awk sono probabilmente piattaforma neutrale).

Corretto:il software non necessariamente in /usr/local/bin;sulla mia macchina, /usr/local/bin è gestito da MIS e tutto il software che ho installato, dunque, va in /usr/gnu/.Io uso:./configure --prefix=/usr/gnu per ottenere il software installato su dove voglio.

È possibile incorporare il valore del PREFISSO in bash script, in modo efficace, si 'compilare' script per includere il percorso di installazione.Essere a conoscenza dei problemi durante la compilazione di test, è necessario individuare gli script relativo alla directory corrente prima e relativi a PREFISSO più tardi.

C'è qualche consiglio in merito nel Automake manuale.Sembra che l'approccio preferito è quello di generare gli script con il makefile, piuttosto che con lo script di configurazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top