man-pages/it/man1/dpkg-maintscript-helper.1.html
2021-03-31 01:06:50 +01:00

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">&nbsp;</A>
<H2>NOME</H2>
dpkg-maintscript-helper - aggira limiti noti di dpkg negli script del
manutentore
<A NAME="lbAC">&nbsp;</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">&nbsp;</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">&nbsp;</A>
<H2>DESCRIZIONE</H2>
<P>
Questo programma &egrave; progettato per essere eseguito dall'interno di script dei
manutentori per effettuare alcuni compiti che <B>dpkg</B> non pu&ograve; (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&agrave; 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">&nbsp;</A>
<H2>PARAMETRI COMUNI</H2>
<DL COMPACT>
<DT id="1"><I>versione-prec</I><DD>
Definisce la pi&ugrave; recente versione del pacchetto il cui aggiornamento
dovrebbe attivare l'operazione. &Egrave; 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> &egrave; vuota o viene omessa, allora l'operazione
viene tentata ad ogni aggiornamento (notare: &egrave; pi&ugrave; sicuro fornire la
versione e far s&igrave; che l'operazione venga tentata una sola volta).
<P>
Se il file di configurazione non &egrave; 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&ograve; &egrave; 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&ograve;
far&agrave; s&igrave; 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">&nbsp;</A>
<H2>COMPITI RELATIVI AI FILE DI CONFIGURAZIONE</H2>
<P>
Quando aggiorna un pacchetto, <B>dpkg</B> non rimuover&agrave; automaticamente un file
di configurazione (un file di configurazione per il quale <B>dpkg</B> dovrebbe
preservare i cambiamenti dell'utente) se non &egrave; presente nella versione pi&ugrave;
nuova. Ci sono due ragioni principali per questo comportamento. La prima &egrave;
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 &egrave; 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&ograve; significa che se un pacchetto deve rinominare o rimuovere un file di
configurazione, deve farlo esplicitamente e <B>dpkg-maintscript-helper</B> pu&ograve;
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">&nbsp;</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&ograve; &egrave; implementato mettendo il seguente frammento shell negli script
del manutentore <B>preinst</B>, <B>postinst</B> e <B>postrm</B>.
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;rm_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>fileconf</I>&nbsp;<I>versione-prec</I>&nbsp;<I>pacchetto</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>fileconf</I> &egrave; il nome del file di configurazione da rimuovere.
<P>
Attuale implementazione: in <B>preinst</B>, controlla se il file di
configurazione &egrave; 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">&nbsp;</A>
<H3>Rinominare un file di configurazione</H3>
<P>
Se un file di configurazione viene spostato da una posizione ad un'altra, &egrave;
necessario assicurarsi di spostare qualsiasi modifica fatta
dall'utente. Questo pu&ograve; sembrare a prima vista un semplice cambiamento dello
script <B>preinst</B>, tuttavia ci&ograve; avrebbe come risultato che <B>dpkg</B>
chiederebbe all'utente di approvare le modifiche al file di configurazione
anche se egli non ne &egrave; responsabile.
<P>
Un cambio di nome pulito pu&ograve; essere implementato mettendo il seguente
frammento shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e
<B>postrm</B>.
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;mv_conffile&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>vecchio-fileconf</I>&nbsp;<I>nuovo-fileconf</I>&nbsp;<I>versione-prec</I>&nbsp;<I>pacchetto</I>&nbsp;--&nbsp;&quot;$@&quot;
<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 &egrave;
stato modificato; se lo &egrave; 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> &egrave; 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">&nbsp;</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&agrave; lasciato come &egrave;.
<A NAME="lbAK">&nbsp;</A>
<H3>Passare da un collegamento simbolico ad una directory</H3>
Se si passa da un collegamento simbolico ad una directory reale, &egrave;
necessario assicurarsi prima dello spacchettamento che il collegamento
simbolico venga rimosso. Ci&ograve; pu&ograve; sembrare a prima vista una semplice
modifica allo script <B>preinst</B>, tuttavia ci&ograve; 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&ograve; essere implementato mettendo il seguente
frammento shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e
<B>postrm</B>.
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;symlink_to_dir&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>percorso</I>&nbsp;<I>vecchia-destinaz</I>&nbsp;<I>versione-prec</I>&nbsp;<I>pacchetto</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>percorso</I> &egrave; il nome assoluto del vecchio collegamento simbolico (il
percorso sar&agrave; una directory al termine dell'installazione) e
<I>vecchia-destinaz</I> &egrave; il nome della destinazione del vecchio collegamento
simbolico <I>percorso</I>. Pu&ograve; 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 &egrave; cos&igrave; 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 &egrave; 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">&nbsp;</A>
<H3>Passare da una directory a un collegamento simbolico</H3>
Se si passa da una directory reale a un collegamento simbolico, &egrave; necessario
assicurarsi prima dello spacchettamento che la directory venga rimossa. Ci&ograve;
pu&ograve; sembrare a prima vista una semplice modifica allo script <B>preinst</B>,
tuttavia ci&ograve; risulterebbe in alcuni problemi nel caso in cui la directory
contenga file di configurazione, nomi di percorso di propriet&agrave; di altri
pacchetti, nomi di percorso creati localmente, oppure in caso di
retrocessione del pacchetto.
<P>
Un passaggio pulito pu&ograve; essere implementato mettendo il seguente frammento
shell negli script del manutentore <B>preinst</B>, <B>postinst</B> e <B>postrm</B>.
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;dir_to_symlink&nbsp;\
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>percorso</I>&nbsp;<I>nuova-destinaz</I>&nbsp;<I>versione-prec</I>&nbsp;<I>pacchetto</I>&nbsp;--&nbsp;&quot;$@&quot;
<P>
<I>percorso</I> &egrave; il nome assoluto della vecchia directory (il percorso sar&agrave; un
collegamento simbolico al termine dell'installazione) e <I>nuova-destinaz</I> &egrave;
il nome del nuovo collegamento simbolico <I>percorso</I>. Pu&ograve; 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&agrave; di altri pacchetti o
percorsi creati localmente; se non &egrave; cos&igrave; &egrave; 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> &egrave; ancora una directory e <I>percorso</I>
&egrave; 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">&nbsp;</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&ograve; rendere la
vita pi&ugrave; 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&agrave;
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> &egrave; 1.15.7.2, per
<B>symlink_to_dir</B> e <B>dir_to_symlink</B> &egrave; 1.17.14:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;<B>Pre-Depends:</B>&nbsp;dpkg&nbsp;(&gt;=&nbsp;1.17.14)
<P>
In molti casi per&ograve; l'operazione effettuata dal programma non &egrave; critica per
il pacchetto e invece di usare una pre-dipendenza si pu&ograve; chiamare il
programma solo se si sa che il comando richiesto &egrave; supportato dalla versione
di <B>dpkg</B> attualmente installata:
<P>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;dpkg-maintscript-helper&nbsp;supports&nbsp;<I>comando</I>;&nbsp;then
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dpkg-maintscript-helper&nbsp;<I>comando</I>&nbsp;...
<BR>&nbsp;&nbsp;&nbsp;&nbsp;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 &egrave; sufficiente.
<A NAME="lbAN">&nbsp;</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">&nbsp;</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">&nbsp;</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>