.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "dpkg-maintscript-helper 1" .TH dpkg-maintscript-helper 1 "2022-10-15" "1.21.9" "dpkg suite" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOME" .IX Header "NOME" dpkg-maintscript-helper \- aggira limiti noti di dpkg negli script del manutentore .SH "SINTASSI" .IX Header "SINTASSI" \&\fBdpkg-maintscript-helper\fR \fIcomando\fR [\fIparametro\fR...] \fB\-\-\fR \fIparametro-script-manut\fR... .SH "COMANDI E PARAMETRI" .IX Header "COMANDI E PARAMETRI" .IP "\fBsupports\fR \fIcomando\fR" 4 .IX Item "supports comando" .PD 0 .IP "\fBrm_conffile\fR \fIfileconf\fR [\fIversione-prec\fR [\fIpacchetto\fR]]" 4 .IX Item "rm_conffile fileconf [versione-prec [pacchetto]]" .IP "\fBmv_conffile\fR \fIvecchio-fileconf\fR \fInuovo-fileconf\fR [\fIversione-prec\fR [\fIpacchetto\fR]]" 4 .IX Item "mv_conffile vecchio-fileconf nuovo-fileconf [versione-prec [pacchetto]]" .IP "\fBsymlink_to_dir\fR \fIpercorso\fR \fIvecchia-destinaz\fR [\fIversione-prec\fR [\fIpacchetto\fR]]" 4 .IX Item "symlink_to_dir percorso vecchia-destinaz [versione-prec [pacchetto]]" .IP "\fBdir_to_symlink\fR \fIpercorso\fR \fInuova-destinaz\fR [\fIversione-prec\fR [\fIpacchetto\fR]]" 4 .IX Item "dir_to_symlink percorso nuova-destinaz [versione-prec [pacchetto]]" .PD .SH "DESCRIZIONE" .IX Header "DESCRIZIONE" Questo programma \(`e progettato per essere eseguito dall'interno di script dei manutentori per effettuare alcuni compiti che \fBdpkg\fR non pu\(`o (ancora) gestire in modo nativo a causa di decisioni progettuali oppure per limitazioni attuali. .PP Molti di questi compiti richiedono azioni coordinate da parte di diversi script dei manutentori (\fBpreinst\fR, \fBpostinst\fR, \fBprerm\fR, \fBpostrm\fR). Per evitare sbagli basta mettere la stessa chiamata in tutti gli script e il programma adatter\(`a automaticamente il suo comportamento sulla base della variabile d'ambiente \fB\s-1DPKG_MAINTSCRIPT_NAME\s0\fR e sugli argomenti per gli script dei manutentori che devono essere passati dopo un doppio trattino. .SH "PARAMETRI COMUNI" .IX Header "PARAMETRI COMUNI" .IP "\fIversione-prec\fR" 4 .IX Item "versione-prec" Definisce la pi\(`u recente versione del pacchetto il cui aggiornamento dovrebbe attivare l'operazione. \(`E importante calcolare correttamente il valore di \fIversione-prec\fR in modo che le operazioni siano effettuate in modo corretto anche se l'utente ha ricompilato il pacchetto con una versione locale. Se \fIversione-prec\fR \(`e vuota o viene omessa, allora l'operazione viene tentata ad ogni aggiornamento (notare: \(`e pi\(`u sicuro fornire la versione e far s\(`i che l'operazione venga tentata una sola volta). .Sp Se il file di configurazione non \(`e stato fornito per diverse versioni, e si sta ora cercando di modificare gli script del manutentore per ripulire il file obsoleto, \fIversione-prec\fR 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\(`o \(`e vero similmente per tutte le altre azioni. .Sp Per esempio, per un file di configurazione rimosso nella versione \fB2.0\-1\fR di un pacchetto, \fIversione-prec\fR dovrebbe essere impostata a \fB2.0\-1~\fR. Ci\(`o far\(`a s\(`i che il file di configurazione sia rimosso anche se l'utente ha ricompilato la versione precedente \fB1.0\-1\fR come \fB1.0\-1local1\fR. Oppure un pacchetto che passa un percorso da un collegamento simbolico (fornito nella versione \fB1.0\-1\fR) ad una directory (fornita nella versione \fB2.0\-1\fR), ma che effettua l'effettivo cambiamento nello script del manutentore nella versione \fB3.0\-1\fR, dovrebbe impostare \fIversione-prec\fR a \fB3.0\-1~\fR. .IP "\fBpacchetto\fR" 4 .IX Item "pacchetto" The package name owning the pathname(s). When the package is \(lqMulti\-Arch: same\(rq this parameter must include the architecture qualifier, otherwise it should \fBnot\fR usually include the architecture qualifier (as it would disallow cross-grades, or switching from being architecture specific to architecture \fBall\fR or vice versa). If the parameter is empty or omitted, the \fB\s-1DPKG_MAINTSCRIPT_PACKAGE\s0\fR and \fB\s-1DPKG_MAINTSCRIPT_ARCH\s0\fR environment variables (as set by \fBdpkg\fR when running the maintainer scripts) will be used to generate an arch-qualified package name. .IP "\fB\-\-\fR" 4 .IX Item "--" Tutti i parametri degli script dei manutentori devono essere passati al programma dopo \fB\-\-\fR. .SH "COMPITI RELATIVI AI FILE DI CONFIGURAZIONE" .IX Header "COMPITI RELATIVI AI FILE DI CONFIGURAZIONE" Quando aggiorna un pacchetto, \fBdpkg\fR non rimuover\(`a automaticamente un file di configurazione (un file di configurazione per il quale \fBdpkg\fR dovrebbe preservare i cambiamenti dell'utente) se non \(`e presente nella versione pi\(`u nuova. Ci sono due ragioni principali per questo comportamento. La prima \(`e 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 \(`e 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. .PP Ci\(`o significa che se un pacchetto deve rinominare o rimuovere un file di configurazione, deve farlo esplicitamente e \fBdpkg-maintscript-helper\fR pu\(`o essere usato per implementare in modo pulito la cancellazione e lo spostamento di file di configurazione all'interno di script dei manutentori. .SS "Rimozione di un file di configurazione" .IX Subsection "Rimozione di un file di configurazione" Note: This can be replaced in most cases by the \f(CW\*(C`remove\-on\-upgrade\*(C'\fR flag in \fIDEBIAN/conffiles\fR (since dpkg 1.20.6), see \fBdeb\-conffiles\fR\|(5). .PP 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. .PP Tutto ci\(`o \(`e implementato mettendo il seguente frammento shell negli script del manutentore \fBpreinst\fR, \fBpostinst\fR e \fBpostrm\fR. .Sp .RS 4 dpkg-maintscript-helper rm_conffile \e \fIconffile\fR \fIprior-version\fR \fIpackage\fR \*(-- \*(L"$@\*(R" .RE .PP \&\fIfileconf\fR \(`e il nome del file di configurazione da rimuovere. .PP Attuale implementazione: in \fBpreinst\fR, controlla se il file di configurazione \(`e stato modificato e lo rinomina in \fIfileconf\fR\fB.dpkg\-remove\fR (se non modificato) o \fIfileconf\fR\fB.dpkg\-backup\fR (se modificato). In \fBpostinst\fR, quest'ultimo file viene rinominato in \fIfileconf\fR\fB.dpkg\-bak\fR e mantenuto per riferimento dato che contiene le modifiche dell'utente ma il primo viene rimosso. Se l'aggiornamento del pacchetto fallisce, \fBpostrm\fR reinstalla il file di configurazione originale. Durante l'eliminazione completa, \fBpostrm\fR elimina anche il file \fB.dpkg\-bak\fR fino ad allora preservato. .SS "Rinominare un file di configurazione" .IX Subsection "Rinominare un file di configurazione" Se un file di configurazione viene spostato da una posizione ad un'altra, \(`e necessario assicurarsi di spostare qualsiasi modifica fatta dall'utente. Questo pu\(`o sembrare a prima vista un semplice cambiamento dello script \fBpreinst\fR, tuttavia ci\(`o avrebbe come risultato che \fBdpkg\fR chiederebbe all'utente di approvare le modifiche al file di configurazione anche se egli non ne \(`e responsabile. .PP Un cambio di nome pulito pu\(`o essere implementato mettendo il seguente frammento shell negli script del manutentore \fBpreinst\fR, \fBpostinst\fR e \fBpostrm\fR. .Sp .RS 4 dpkg-maintscript-helper mv_conffile \e \fIold-conffile\fR \fInew-conffile\fR \fIprior-version\fR \fIpackage\fR \*(-- \*(L"$@\*(R" .RE .PP \&\fIvecchio-fileconf\fR e \fInuovo-fileconf\fR sono il nome vecchio e quello nuovo del file di configurazione da rinominare. .PP Attuale implementazione: \fBpreinst\fR controlla se il file di configurazione \(`e stato modificato; se lo \(`e stato viene lasciato al suo posto altrimenti viene rinominato in \fIvecchio-fileconf\fR\fB.dpkg\-remove\fR. Durante la configurazione, \fBpostinst\fR rimuove \fIvecchio-fileconf\fR\fB.dpkg\-remove\fR e rinomina \fIvecchio-fileconf\fR in \fInuovo-fileconf\fR se \fIvecchio-fileconf\fR \(`e ancora disponibile. In caso di aggiornamento o installazione falliti, \fBpostrm\fR rinomina \fIvecchio-fileconf\fR\fB.dpkg\-remove\fR nuovamente in \fIvecchio-fileconf\fR, se necessario. .SH "CAMBIAMENTI A COLLEGAMENTI SIMBOLICI E DIRECTORY" .IX Header "CAMBIAMENTI A COLLEGAMENTI SIMBOLICI E DIRECTORY" Quando si aggiorna un pacchetto, \fBdpkg\fR non modifica automaticamente un collegamento simbolico in una directory o viceversa. Le retrocessioni di versione non sono supportate e il percorso verr\(`a lasciato come \(`e. .SS "Passare da un collegamento simbolico ad una directory" .IX Subsection "Passare da un collegamento simbolico ad una directory" Se si passa da un collegamento simbolico ad una directory reale, \(`e necessario assicurarsi prima dello spacchettamento che il collegamento simbolico venga rimosso. Ci\(`o pu\(`o sembrare a prima vista una semplice modifica allo script \fBpreinst\fR, tuttavia ci\(`o risulterebbe in alcuni problemi nel caso di personalizzazioni locali dell'amministratore sul collegamento simbolico o in caso di retrocessione del pacchetto. .PP Un cambio di nome pulito pu\(`o essere implementato mettendo il seguente frammento shell negli script del manutentore \fBpreinst\fR, \fBpostinst\fR e \fBpostrm\fR. .Sp .RS 4 dpkg-maintscript-helper symlink_to_dir \e \fIpathname\fR \fIold-target\fR \fIprior-version\fR \fIpackage\fR \*(-- \*(L"$@\*(R" .RE .PP \&\fIpercorso\fR \(`e il nome assoluto del vecchio collegamento simbolico (il percorso sar\(`a una directory al termine dell'installazione) e \fIvecchia-destinaz\fR \(`e il nome della destinazione del vecchio collegamento simbolico \fIpercorso\fR. Pu\(`o essere sia assoluto sia relativo alla directory che contiene \fIpercorso\fR. .PP Attuale implementazione: \fBpreinst\fR controlla se il collegamento simbolico esiste e punta a \fIvecchia-destinaz\fR, se non \(`e cos\(`i allora viene lasciato al suo posto, altrimenti viene rinominato in \fIpercorso\fR\fB.dpkg\-backup\fR. Durante la configurazione \fBpostinst\fR rimuove \fIpercorso\fR\fB.dpkg\-backup\fR se questo \(`e ancora un collegamento simbolico. In caso di aggiornamento o installazione falliti, \fBpostrm\fR rinomina \fIpercorso\fR\fB.dpkg\-backup\fR nuovamente in \fIpercorso\fR se necessario. .SS "Passare da una directory a un collegamento simbolico" .IX Subsection "Passare da una directory a un collegamento simbolico" Se si passa da una directory reale a un collegamento simbolico, \(`e necessario assicurarsi prima dello spacchettamento che la directory venga rimossa. Ci\(`o pu\(`o sembrare a prima vista una semplice modifica allo script \fBpreinst\fR, tuttavia ci\(`o risulterebbe in alcuni problemi nel caso in cui la directory contenga file di configurazione, nomi di percorso di propriet\(`a di altri pacchetti, nomi di percorso creati localmente, oppure in caso di retrocessione del pacchetto. .PP Un passaggio pulito pu\(`o essere implementato mettendo il seguente frammento shell negli script del manutentore \fBpreinst\fR, \fBpostinst\fR e \fBpostrm\fR. .Sp .RS 4 dpkg-maintscript-helper dir_to_symlink \e \fIpathname\fR \fInew-target\fR \fIprior-version\fR \fIpackage\fR \*(-- \*(L"$@\*(R" .RE .PP \&\fIpercorso\fR \(`e il nome assoluto della vecchia directory (il percorso sar\(`a un collegamento simbolico al termine dell'installazione) e \fInuova-destinaz\fR \(`e il nome del nuovo collegamento simbolico \fIpercorso\fR. Pu\(`o essere sia assoluto sia relativo alla directory che contiene \fIpercorso\fR. .PP Attuale implementazione: \fBpreinst\fR controlla se la directory esiste, non contiene file di configurazione, percorsi di propriet\(`a di altri pacchetti o percorsi creati localmente; se non \(`e cos\(`i \(`e lasciata al suo posto, altrimenti viene rinominata in \fIpercorso\fR\fB.dpkg\-backup\fR e viene creata una nuova directory vuota chiamata \fIpercorso\fR marcata con un file in modo che dpkg possa tenerne traccia. Durante la configurazione \fBpostinst\fR finisce il passaggio se \fIpercorso\fR\fB.dpkg\-backup\fR \(`e ancora una directory e \fIpercorso\fR \(`e 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 \fInuova-destinaz\fR/, sostituisce la directory contrassegnata \fIpercorso\fR ora vuota con un collegamento simbolico a \fInuova-destinaz\fR e rimuove \fIpercorso\fR\fB.dpkg\-backup\fR. in caso di aggiornamento o installazione falliti, \fBpostrm\fR rinomina \fIpercorso\fR\fB.dpkg\-backup\fR nuovamente in \fIpercorso\fR se necessario. .SH "INTEGRAZIONE NEI PACCHETTI" .IX Header "INTEGRAZIONE NEI PACCHETTI" Quando si usa uno strumento di aiuto alla pacchettizzazione, controllare se ha l'integrazione nativa con \fBdpkg-maintscript-helper\fR, che pu\(`o rendere la vita pi\(`u semplice. Vedere ad esempio \fBdh_installdeb\fR(1). .PP Dato che \fBdpkg-maintscript-helper\fR viene usato in \fBpreinst\fR, il suo uso incondizionato richiede una pre-dipendenza per assicurare che sia stata gi\(`a spacchettata la versione richiesta di \fBdpkg\fR. La versione richiesta dipende dal comando usato: per \fBrm_conffile\fR e \fBmv_conffile\fR \(`e 1.15.7.2, per \fBsymlink_to_dir\fR e \fBdir_to_symlink\fR \(`e 1.17.14: .Sp .Vb 1 \& Pre\-Depends: dpkg (>= 1.17.14) .Ve .PP In molti casi per\(`o l'operazione effettuata dal programma non \(`e critica per il pacchetto e invece di usare una pre-dipendenza si pu\(`o chiamare il programma solo se si sa che il comando richiesto \(`e supportato dalla versione di \fBdpkg\fR attualmente installata: .Sp .RS 4 if dpkg-maintscript-helper supports \fIcommand\fR; then dpkg-maintscript-helper \fIcommand\fR ... fi .RE .PP Il comando \fBsupports\fR restituisce 0 in caso di successo e 1 altrimenti. Il comando \fBsupports\fR controlla se le variabili d'ambiente impostate da dpkg e richiesta dallo script sono presenti e considera un fallimento se l'ambiente non \(`e sufficiente. .SH "AMBIENTE" .IX Header "AMBIENTE" .IP "\fB\s-1DPKG_ROOT\s0\fR" 4 .IX Item "DPKG_ROOT" If set, it will be used as the filesystem root directory. .IP "\fB\s-1DPKG_ADMINDIR\s0\fR" 4 .IX Item "DPKG_ADMINDIR" If set, it will be used as the \fBdpkg\fR data directory. .IP "\fB\s-1DPKG_COLORS\s0\fR" 4 .IX Item "DPKG_COLORS" Sets the color mode (since dpkg 1.19.1). The currently accepted values are: \fBauto\fR (default), \fBalways\fR and \fBnever\fR. .SH "VEDERE ANCHE" .IX Header "VEDERE ANCHE" \&\fBdh_installdeb\fR(1).