346 lines
16 KiB
HTML
346 lines
16 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of dpkg-maintscript-helper</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>dpkg-maintscript-helper</H1>
|
|
Section: suite dpkg (1)<BR>Updated: 2020-03-23<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NOME</H2>
|
|
|
|
dpkg-maintscript-helper - aggira limiti noti di dpkg negli script del
|
|
manutentore
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SINTASSI</H2>
|
|
|
|
<B>dpkg-maintscript-helper</B> <I>comando</I> [<I>parametro</I>...] <B>--</B>
|
|
<I>parametro-script-manut</I>...
|
|
<A NAME="lbAD"> </A>
|
|
<H2>COMANDI E PARAMETRI</H2>
|
|
|
|
<P>
|
|
|
|
<B>supports</B> <I>comando</I>
|
|
<P>
|
|
|
|
<B>rm_conffile</B> <I>fileconf</I> [<I>versione-prec</I> [<I>pacchetto</I>]]
|
|
<P>
|
|
|
|
<B>mv_conffile</B> <I>vecchio-fileconf</I> <I>nuovo-fileconf</I> [<I>versione-prec</I>
|
|
[<I>pacchetto</I>]]
|
|
<P>
|
|
|
|
<B>symlink_to_dir</B> <I>percorso</I> <I>vecchia-destinaz</I> [<I>versione-prec</I>
|
|
[<I>pacchetto</I>]]
|
|
<P>
|
|
|
|
<B>dir_to_symlink</B> <I>percorso</I> <I>nuova-destinaz</I> [<I>versione-prec</I>
|
|
[<I>pacchetto</I>]]
|
|
<A NAME="lbAE"> </A>
|
|
<H2>DESCRIZIONE</H2>
|
|
|
|
<P>
|
|
|
|
Questo programma è progettato per essere eseguito dall'interno di script dei
|
|
manutentori per effettuare alcuni compiti che <B>dpkg</B> non può (ancora)
|
|
gestire in modo nativo a causa di decisioni progettuali oppure per
|
|
limitazioni attuali.
|
|
<P>
|
|
|
|
Molti di questi compiti richiedono azioni coordinate da parte di diversi
|
|
script dei manutentori (<B>preinst</B>, <B>postinst</B>, <B>prerm</B>, <B>postrm</B>). Per
|
|
evitare sbagli basta mettere la stessa chiamata in tutti gli script e il
|
|
programma adatterà automaticamente il suo comportamento sulla base della
|
|
variabile d'ambiente <B>DPKG_MAINTSCRIPT_NAME</B> e sugli argomenti per gli
|
|
script dei manutentori che devono essere passati dopo un doppio trattino.
|
|
<A NAME="lbAF"> </A>
|
|
<H2>PARAMETRI COMUNI</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="1"><I>versione-prec</I><DD>
|
|
Definisce la più recente versione del pacchetto il cui aggiornamento
|
|
dovrebbe attivare l'operazione. È importante calcolare correttamente il
|
|
valore di <I>versione-prec</I> in modo che le operazioni siano effettuate in
|
|
modo corretto anche se l'utente ha ricompilato il pacchetto con una versione
|
|
locale. Se <I>versione-prec</I> è vuota o viene omessa, allora l'operazione
|
|
viene tentata ad ogni aggiornamento (notare: è più sicuro fornire la
|
|
versione e far sì che l'operazione venga tentata una sola volta).
|
|
<P>
|
|
Se il file di configurazione non è stato fornito per diverse versioni, e si
|
|
sta ora cercando di modificare gli script del manutentore per ripulire il
|
|
file obsoleto, <I>versione-prec</I> dovrebbe essere basata sulla versione del
|
|
pacchetto che si sta preparando ora, non sulla prima versione del pacchetto
|
|
a cui mancava il file di configurazione. Ciò è vero similmente per tutte le
|
|
altre azioni.
|
|
<P>
|
|
Per esempio, per un file di configurazione rimosso nella versione <B>2.0-1</B>
|
|
di un pacchetto, <I>versione-prec</I> dovrebbe essere impostata a <B>2.0-1~</B>. Ciò
|
|
farà sì che il file di configurazione sia rimosso anche se l'utente ha
|
|
ricompilato la versione precedente <B>1.0-1</B> come <B>1.0-1local1</B>. Oppure un
|
|
pacchetto che passa un percorso da un collegamento simbolico (fornito nella
|
|
versione <B>1.0-1</B>) ad una directory (fornita nella versione <B>2.0-1</B>), ma
|
|
che effettua l'effettivo cambiamento nello script del manutentore nella
|
|
versione <B>3.0-1</B>, dovrebbe impostare <I>versione-prec</I> a <B>3.0-1~</B>.
|
|
<DT id="2"><B>pacchetto</B><DD>
|
|
The package name owning the pathname(s). When the package is "Multi-Arch:
|
|
same" this parameter must include the architecture qualifier, otherwise it
|
|
should <B>not</B> usually include the architecture qualifier (as it would
|
|
disallow cross-grades, or switching from being architecture specific to
|
|
architecture <B>all</B> or vice versa). If the parameter is empty or omitted,
|
|
the <B>DPKG_MAINTSCRIPT_PACKAGE</B> and <B>DPKG_MAINTSCRIPT_ARCH</B> environment
|
|
variables (as set by <B>dpkg</B> when running the maintainer scripts) will be
|
|
used to generate an arch-qualified package name.
|
|
<DT id="3"><B>--</B><DD>
|
|
Tutti i parametri degli script dei manutentori devono essere passati al
|
|
programma dopo <B>--</B>.
|
|
</DL>
|
|
<A NAME="lbAG"> </A>
|
|
<H2>COMPITI RELATIVI AI FILE DI CONFIGURAZIONE</H2>
|
|
|
|
<P>
|
|
|
|
Quando aggiorna un pacchetto, <B>dpkg</B> non rimuoverà automaticamente un file
|
|
di configurazione (un file di configurazione per il quale <B>dpkg</B> dovrebbe
|
|
preservare i cambiamenti dell'utente) se non è presente nella versione più
|
|
nuova. Ci sono due ragioni principali per questo comportamento. La prima è
|
|
che il file di configurazione potrebbe essere stato tolto per sbaglio e la
|
|
successiva versione potrebbe ripristinarlo e gli utenti non vorrebbero
|
|
vedere le proprie modifiche buttate al vento. La seconda è di permettere ai
|
|
pacchetti di transitare file da un file di configurazione mantenuto da dpkg
|
|
a un file mantenuto dagli script del manutentore del pacchetto, solitamente
|
|
con uno strumento come debconf o ucf.
|
|
<P>
|
|
|
|
Ciò significa che se un pacchetto deve rinominare o rimuovere un file di
|
|
configurazione, deve farlo esplicitamente e <B>dpkg-maintscript-helper</B> può
|
|
essere usato per implementare in modo pulito la cancellazione e lo
|
|
spostamento di file di configurazione all'interno di script dei manutentori.
|
|
<A NAME="lbAH"> </A>
|
|
<H3>Rimozione di un file di configurazione</H3>
|
|
|
|
<P>
|
|
|
|
Se un file di configurazione viene completamente rimosso, dovrebbe essere
|
|
rimosso dal disco a meno che l'utente non l'abbia modificato. Se ci sono
|
|
modifiche locali, queste dovrebbero essere preservate. Se l'aggiornamento
|
|
del pacchetto fallisce, il file di configurazione appena reso obsoleto non
|
|
dovrebbe sparire.
|
|
<P>
|
|
|
|
Tutto ciò è implementato mettendo il seguente frammento shell negli script
|
|
del manutentore <B>preinst</B>, <B>postinst</B> e <B>postrm</B>.
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper rm_conffile \
|
|
<BR> <I>fileconf</I> <I>versione-prec</I> <I>pacchetto</I> -- "$@"
|
|
<P>
|
|
|
|
<I>fileconf</I> è il nome del file di configurazione da rimuovere.
|
|
<P>
|
|
|
|
Attuale implementazione: in <B>preinst</B>, controlla se il file di
|
|
configurazione è stato modificato e lo rinomina in
|
|
<I>fileconf</I><B>.dpkg-remove</B> (se non modificato) o <I>fileconf</I><B>.dpkg-backup</B>
|
|
(se modificato). In <B>postinst</B>, quest'ultimo file viene rinominato in
|
|
<I>fileconf</I><B>.dpkg-bak</B> e mantenuto per riferimento dato che contiene le
|
|
modifiche dell'utente ma il primo viene rimosso. Se l'aggiornamento del
|
|
pacchetto fallisce, <B>postrm</B> reinstalla il file di configurazione
|
|
originale. Durante l'eliminazione completa, <B>postrm</B> elimina anche il file
|
|
<B>.dpkg-bak</B> fino ad allora preservato.
|
|
<A NAME="lbAI"> </A>
|
|
<H3>Rinominare un file di configurazione</H3>
|
|
|
|
<P>
|
|
|
|
Se un file di configurazione viene spostato da una posizione ad un'altra, è
|
|
necessario assicurarsi di spostare qualsiasi modifica fatta
|
|
dall'utente. Questo può sembrare a prima vista un semplice cambiamento dello
|
|
script <B>preinst</B>, tuttavia ciò avrebbe come risultato che <B>dpkg</B>
|
|
chiederebbe all'utente di approvare le modifiche al file di configurazione
|
|
anche se egli non ne è responsabile.
|
|
<P>
|
|
|
|
Un cambio di nome pulito può essere implementato mettendo il seguente
|
|
frammento shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e
|
|
<B>postrm</B>.
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper mv_conffile \
|
|
<BR> <I>vecchio-fileconf</I> <I>nuovo-fileconf</I> <I>versione-prec</I> <I>pacchetto</I> -- "$@"
|
|
<P>
|
|
|
|
<I>vecchio-fileconf</I> e <I>nuovo-fileconf</I> sono il nome vecchio e quello nuovo
|
|
del file di configurazione da rinominare.
|
|
<P>
|
|
|
|
Attuale implementazione: <B>preinst</B> controlla se il file di configurazione è
|
|
stato modificato; se lo è stato viene lasciato al suo posto altrimenti viene
|
|
rinominato in <I>vecchio-fileconf</I><B>.dpkg-remove</B>. Durante la configurazione,
|
|
<B>postinst</B> rimuove <I>vecchio-fileconf</I><B>.dpkg-remove</B> e rinomina
|
|
<I>vecchio-fileconf</I> in <I>nuovo-fileconf</I> se <I>vecchio-fileconf</I> è ancora
|
|
disponibile. In caso di aggiornamento o installazione falliti, <B>postrm</B>
|
|
rinomina <I>vecchio-fileconf</I><B>.dpkg-remove</B> nuovamente in
|
|
<I>vecchio-fileconf</I>, se necessario.
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>CAMBIAMENTI A COLLEGAMENTI SIMBOLICI E DIRECTORY</H2>
|
|
|
|
Quando si aggiorna un pacchetto, <B>dpkg</B> non modifica automaticamente un
|
|
collegamento simbolico in una directory o viceversa. Le retrocessioni di
|
|
versione non sono supportate e il percorso verrà lasciato come è.
|
|
<A NAME="lbAK"> </A>
|
|
<H3>Passare da un collegamento simbolico ad una directory</H3>
|
|
|
|
Se si passa da un collegamento simbolico ad una directory reale, è
|
|
necessario assicurarsi prima dello spacchettamento che il collegamento
|
|
simbolico venga rimosso. Ciò può sembrare a prima vista una semplice
|
|
modifica allo script <B>preinst</B>, tuttavia ciò risulterebbe in alcuni
|
|
problemi nel caso di personalizzazioni locali dell'amministratore sul
|
|
collegamento simbolico o in caso di retrocessione del pacchetto.
|
|
<P>
|
|
|
|
Un cambio di nome pulito può essere implementato mettendo il seguente
|
|
frammento shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e
|
|
<B>postrm</B>.
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper symlink_to_dir \
|
|
<BR> <I>percorso</I> <I>vecchia-destinaz</I> <I>versione-prec</I> <I>pacchetto</I> -- "$@"
|
|
<P>
|
|
|
|
<I>percorso</I> è il nome assoluto del vecchio collegamento simbolico (il
|
|
percorso sarà una directory al termine dell'installazione) e
|
|
<I>vecchia-destinaz</I> è il nome della destinazione del vecchio collegamento
|
|
simbolico <I>percorso</I>. Può essere sia assoluto sia relativo alla directory
|
|
che contiene <I>percorso</I>.
|
|
<P>
|
|
|
|
Attuale implementazione: <B>preinst</B> controlla se il collegamento simbolico
|
|
esiste e punta a <I>vecchia-destinaz</I>, se non è così allora viene lasciato al
|
|
suo posto, altrimenti viene rinominato in
|
|
<I>percorso</I><B>.dpkg-backup</B>. Durante la configurazione <B>postinst</B> rimuove
|
|
<I>percorso</I><B>.dpkg-backup</B> se questo è ancora un collegamento simbolico. In
|
|
caso di aggiornamento o installazione falliti, <B>postrm</B> rinomina
|
|
<I>percorso</I><B>.dpkg-backup</B> nuovamente in <I>percorso</I> se necessario.
|
|
<A NAME="lbAL"> </A>
|
|
<H3>Passare da una directory a un collegamento simbolico</H3>
|
|
|
|
Se si passa da una directory reale a un collegamento simbolico, è necessario
|
|
assicurarsi prima dello spacchettamento che la directory venga rimossa. Ciò
|
|
può sembrare a prima vista una semplice modifica allo script <B>preinst</B>,
|
|
tuttavia ciò risulterebbe in alcuni problemi nel caso in cui la directory
|
|
contenga file di configurazione, nomi di percorso di proprietà di altri
|
|
pacchetti, nomi di percorso creati localmente, oppure in caso di
|
|
retrocessione del pacchetto.
|
|
<P>
|
|
|
|
Un passaggio pulito può essere implementato mettendo il seguente frammento
|
|
shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e <B>postrm</B>.
|
|
<P>
|
|
|
|
<BR> dpkg-maintscript-helper dir_to_symlink \
|
|
<BR> <I>percorso</I> <I>nuova-destinaz</I> <I>versione-prec</I> <I>pacchetto</I> -- "$@"
|
|
<P>
|
|
|
|
<I>percorso</I> è il nome assoluto della vecchia directory (il percorso sarà un
|
|
collegamento simbolico al termine dell'installazione) e <I>nuova-destinaz</I> è
|
|
il nome del nuovo collegamento simbolico <I>percorso</I>. Può essere sia
|
|
assoluto sia relativo alla directory che contiene <I>percorso</I>.
|
|
<P>
|
|
|
|
Attuale implementazione: <B>preinst</B> controlla se la directory esiste, non
|
|
contiene file di configurazione, percorsi di proprietà di altri pacchetti o
|
|
percorsi creati localmente; se non è così è lasciata al suo posto,
|
|
altrimenti viene rinominata in <I>percorso</I><B>.dpkg-backup</B> e viene creata una
|
|
nuova directory vuota chiamata <I>percorso</I> marcata con un file in modo che
|
|
dpkg possa tenerne traccia. Durante la configurazione <B>postinst</B> finisce il
|
|
passaggio se <I>percorso</I><B>.dpkg-backup</B> è ancora una directory e <I>percorso</I>
|
|
è la directory contrassegnata; rimuove il file che contrassegna la
|
|
directory, muove i file appena creati all'interno della directory
|
|
contrassegnata nella destinazione del collegamento simbolico
|
|
<I>nuova-destinaz</I>/, sostituisce la directory contrassegnata <I>percorso</I> ora
|
|
vuota con un collegamento simbolico a <I>nuova-destinaz</I> e rimuove
|
|
<I>percorso</I><B>.dpkg-backup</B>. in caso di aggiornamento o installazione
|
|
falliti, <B>postrm</B> rinomina <I>percorso</I><B>.dpkg-backup</B> nuovamente in
|
|
<I>percorso</I> se necessario.
|
|
<A NAME="lbAM"> </A>
|
|
<H2>INTEGRAZIONE NEI PACCHETTI</H2>
|
|
|
|
<P>
|
|
|
|
Quando si usa uno strumento di aiuto alla pacchettizzazione, controllare se
|
|
ha l'integrazione nativa con <B>dpkg-maintscript-helper</B>, che può rendere la
|
|
vita più semplice. Vedere ad esempio <B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<P>
|
|
|
|
Dato che <B>dpkg-maintscript-helper</B> viene usato in <B>preinst</B>, il suo uso
|
|
incondizionato richiede una pre-dipendenza per assicurare che sia stata già
|
|
spacchettata la versione richiesta di <B>dpkg</B>. La versione richiesta dipende
|
|
dal comando usato: per <B>rm_conffile</B> e <B>mv_conffile</B> è 1.15.7.2, per
|
|
<B>symlink_to_dir</B> e <B>dir_to_symlink</B> è 1.17.14:
|
|
<P>
|
|
|
|
<BR> <B>Pre-Depends:</B> dpkg (>= 1.17.14)
|
|
<P>
|
|
|
|
In molti casi però l'operazione effettuata dal programma non è critica per
|
|
il pacchetto e invece di usare una pre-dipendenza si può chiamare il
|
|
programma solo se si sa che il comando richiesto è supportato dalla versione
|
|
di <B>dpkg</B> attualmente installata:
|
|
<P>
|
|
|
|
<BR> if dpkg-maintscript-helper supports <I>comando</I>; then
|
|
<BR> dpkg-maintscript-helper <I>comando</I> ...
|
|
<BR> fi
|
|
<P>
|
|
|
|
Il comando <B>supports</B> restituisce 0 in caso di successo e 1 altrimenti. Il
|
|
comando <B>supports</B> controlla se le variabili d'ambiente impostate da dpkg e
|
|
richiesta dallo script sono presenti e considera un fallimento se l'ambiente
|
|
non è sufficiente.
|
|
<A NAME="lbAN"> </A>
|
|
<H2>AMBIENTE</H2>
|
|
|
|
<DL COMPACT>
|
|
<DT id="4"><B>DPKG_COLORS</B><DD>
|
|
Sets the color mode (since dpkg 1.19.1). The currently accepted values are:
|
|
<B>auto</B> (default), <B>always</B> and <B>never</B>.
|
|
</DL>
|
|
<A NAME="lbAO"> </A>
|
|
<H2>VEDERE ANCHE</H2>
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+dh_installdeb">dh_installdeb</A></B>(1).
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="5"><A HREF="#lbAB">NOME</A><DD>
|
|
<DT id="6"><A HREF="#lbAC">SINTASSI</A><DD>
|
|
<DT id="7"><A HREF="#lbAD">COMANDI E PARAMETRI</A><DD>
|
|
<DT id="8"><A HREF="#lbAE">DESCRIZIONE</A><DD>
|
|
<DT id="9"><A HREF="#lbAF">PARAMETRI COMUNI</A><DD>
|
|
<DT id="10"><A HREF="#lbAG">COMPITI RELATIVI AI FILE DI CONFIGURAZIONE</A><DD>
|
|
<DL>
|
|
<DT id="11"><A HREF="#lbAH">Rimozione di un file di configurazione</A><DD>
|
|
<DT id="12"><A HREF="#lbAI">Rinominare un file di configurazione</A><DD>
|
|
</DL>
|
|
<DT id="13"><A HREF="#lbAJ">CAMBIAMENTI A COLLEGAMENTI SIMBOLICI E DIRECTORY</A><DD>
|
|
<DL>
|
|
<DT id="14"><A HREF="#lbAK">Passare da un collegamento simbolico ad una directory</A><DD>
|
|
<DT id="15"><A HREF="#lbAL">Passare da una directory a un collegamento simbolico</A><DD>
|
|
</DL>
|
|
<DT id="16"><A HREF="#lbAM">INTEGRAZIONE NEI PACCHETTI</A><DD>
|
|
<DT id="17"><A HREF="#lbAN">AMBIENTE</A><DD>
|
|
<DT id="18"><A HREF="#lbAO">VEDERE ANCHE</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:04 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|