3 581
contributi
(nuova sezione con dpkg-divert e dpkg-override) |
|||
Riga 8: | Riga 8: | ||
Questa guida vuole offire soltanto una panoramica generale agli usi più comuni di questo potente strumento, ma non ha alcuna pretesa di esaustività e si rimanda alle pagine di manuale per tutti gli altri dettagli. | Questa guida vuole offire soltanto una panoramica generale agli usi più comuni di questo potente strumento, ma non ha alcuna pretesa di esaustività e si rimanda alle pagine di manuale per tutti gli altri dettagli. | ||
Si sconsiglia caldamente però l'uso di questo strumento per l'installazione e la rimozione di pacchetti, salvo sia impossibile effettuare la stessa operazione con [[APT]], in quanto non gestisce le dipendenze e ciò potrebbe compromettere il funzionamento del sistema. Invece può essere impiegato senza rischi per ricerche sul contenuto dei pacchetti installati o per visualizzare informazioni a essi relative, in genere agendo come frontend per le opzioni più comuni di <code>dpkg-query</code> e <code>dpkg-deb</code>, anch'essi contenuti nel pacchetto '''dpkg''', essenziale per il funzionamento di Debian. | Si sconsiglia caldamente però l'uso di questo strumento per l'installazione e la rimozione di pacchetti, salvo sia impossibile effettuare la stessa operazione con [[APT]], in quanto non gestisce le dipendenze e ciò potrebbe compromettere il funzionamento del sistema. Invece può essere impiegato senza rischi per ricerche sul contenuto dei pacchetti installati o per visualizzare informazioni a essi relative, in genere agendo come frontend per le opzioni più comuni di <code>dpkg-query</code> e <code>dpkg-deb</code>, anch'essi contenuti nel pacchetto '''dpkg''', essenziale per il funzionamento di Debian e che mette a disposizione molti altri comandi utili, i più importanti dei quali saranno affrontati brevemente. | ||
== Pacchetti installati == | == Pacchetti installati == | ||
Riga 227: | Riga 227: | ||
# apt-get --fix-broken install</pre> | # apt-get --fix-broken install</pre> | ||
Si noti che è molto pericoloso, se mette fuori uso pacchetti essenziali, ed è sempre raccomandabile effettuare prima una scelta tra i pacchetti con [[APT]], ripiegando su <code>dpkg</code> solo come ultima risorsa. | Si noti che è molto pericoloso, se mette fuori uso pacchetti essenziali, ed è sempre raccomandabile effettuare prima una scelta tra i pacchetti con [[APT]], ripiegando su <code>dpkg</code> solo come ultima risorsa. | ||
== Modifiche ai file installati o ai loro permessi == | |||
Un [[pacchetto]] contiene i file che verranno installati sul proprio sistema, ed eventuali cambiamenti apportati a questi file potrebbero essere sovrascritti da [[APT]] alla successiva installazione o al successivo aggiornamento. In questa sezione vedremo come apportare cambiamenti permanenti con [[privilegi di amministratore]], segnalandoli al package manager <code>dpkg</code> in modo che siano ripristinati a ogni aggiornamento e nuova installazione. | |||
{{Warningbox | Entrambe le operazioni possono rendere inutilizzabile il sistema, se si sposta o si modifica un file necessario, e compromettere quello delle altre applicazioni. L'uso di questi comandi sono pertanto consigliati ai soli utenti esperti, e sempre prestando molta attenzione.}} | |||
=== Diversioni === | |||
Per modificare un file di sistema, o uno che si trova in una directory di sistema, e impedirne la sovrascrittura al successivo aggiornamento è possibile creare una diversione con il comando <code>dpkg-divert</code>, contenuto nel pacchetto '''dpkg'''. | |||
Non possono essere effettuate sulle directory, ma soltanto su file regolari, eseguibili e non. Inoltre bisogna utilizzare percorsi assoluti (ossia che partono dalla radice /) per indicare il percorso del file da deviare e la sua nuova destinazione. Se si modifica soltanto il nome, lasciando il resto del suo percorso invariato, è equivalente a rinominare il file. | |||
Per tutte le opzioni si rimanda al manuale (<code>man dpkg-divert</code>). | |||
{{Suggerimento | Si ricorda che per i file di configurazione quest'operazione non è necessaria, in quanto non sono sovrascritti di default da [[APT]], senza chiedere conferma all'amministratore durante un aggiornamento, e quelli rigenerati dispongono quasi sempre di metodi specifici per la loro personalizzazione. | |||
Inoltre piuttosto che sovrascrivere degli eseguibili di sistema è consigliabile aggiungere nuovi file, con lo stesso nome, in <code>/usr/local/bin</code> (oppure <code>/usr/local/sbin</code>) per nascondere quelli presenti in <code>/bin</code> e <code>/usr/bin<code> (oppure <code>/sbin</code> e <code>/usr/sbin</code>) nella quasi totalità dei casi.}} | |||
==== Crea nuova diversione ==== | |||
* Rinomina o sposta un file di sistema, non ancora installato o senza applicare le modifiche: | |||
<pre># dpkg-divert --divert /percorsodiversione/nuovonomefile /percorso/nomefile</pre> | |||
Le modifiche saranno effettive al momento dell'installazione del pacchetto o al suo aggiornamento, e ogni file che sarebbe installato in <code>/percorso/nomefile</code> sarà invece scritto in <code>/percorsodiversione/nuovonomefile</code>. | |||
* Rinomina o sposta un file di sistema già installato, applicando subito le modifiche: | |||
<pre># dpkg-divert --divert /percorsodiversione/nuovonomefile --rename /percorso/nomefile</pre> | |||
È stato sufficiente aggiungere l'opzione <code>--rename</code>. | |||
* Rinomina o sposta un file di sistema già installato, permettendone la creazione da parte di un dato pacchetto: | |||
<pre># dpkg-divert --package nomepacchetto --divert /percorsodiversione/nuovonomefile --rename /percorso/nomefile</pre> | |||
È utile per permettere l'installazione di un proprio pacchetto (''nomepacchetto''), senza tener conto della diversione creata, che influenzerà tutti gli altri e impedirà la sovrascrittura del proprio file. | |||
==== Visualizza diversioni ==== | |||
* Visualizza tutte le diversioni: | |||
<pre>$ dpkg-divert --list</pre> | |||
Si noti che anche i pacchetti del sistema fanno uso di questo metodo, quindi è normale non trovare soltanto le proprie modifiche e infatti si consiglia di tenerne traccia anche altrove. | |||
* Visualizza le diversioni di un dato file: | |||
<pre>$ dpkg-divert --list /percorso/nomefile</pre> | |||
* Visualizza tutte le diversioni di un dato pattern (con caratteri jolli <code>*</code>, <code>?</code>, <code>[</code>...<code>]</code>): | |||
<pre>$ dpkg-divert --list "stringa"</pre> | |||
==== Rimuovi diversione ==== | |||
* Rimuovi una diversione, senza applicare le modifiche (va indicato il percorso originale, non quello della diversione): | |||
<pre># dpkg-divert --remove /percorso/nomefile</pre> | |||
Alla successiva installazione o aggiornamento la propria diversione sarà ignorata, ma nessun cambiamento sarà apportato al sistema fino ad allora. Questo comando è utile solo per annullare una diversione che non è mai stata applicata. | |||
* Rimuovi una diversione, applicando subito le modifiche (va indicato il percorso originale, non quello della diversione): | |||
<pre># dpkg-divert --rename --remove /percorso/nomefile</pre> | |||
=== Sovrascrivi permessi === | |||
Per modificare l'utente proprietario, il suo gruppo o i permessi del file (si legga [[Filesystem:_i_permessi_sui_files|questa guida]] per maggiori informazioni) si può impostare un'azione da eseguire ogni volta che è invocato <code>dpkg</code> per modificare il sistema, e quindi anche dopo ogni esecuzione di uno dei programmi di [[APT]]. Per farlo si ricorre a <code>dpkg-statoverride</code>, sempre distribuito nel pacchetto '''dpkg'''. | |||
Le modifiche si possono apportare a qualsiasi file, directory comprese, che devono essere specificati con un percorso assoluto. | |||
{{Suggerimento | Conservare in un file le modifiche effettuate, e i valori precedenti, visto che '''non''' saranno ripristinabili in automatico, a meno di ripetere l'installazione di un pacchetto.}} | |||
Per tutte le opzioni si rimanda al manuale (<code>man dpkg-statoverride</code>). | |||
==== Imposta nuovo utente, gruppo e permessi ==== | |||
* Imposta utente e gruppo proprietari del file, e i suoi nuovi permessi, per file non ancora installati oppure senza apportare le modifiche: | |||
<pre># dpkg-statoverride --add nomeutente nomegruppo permessi /percorso/nomefile</pre> | |||
Le modifiche saranno apportate alla successiva installazione o aggiornamento del pacchetto che installerebbe il file specificato sul sistema. I valori ''nomeutente'' e ''nomegruppo'' sono i nomi che saranno usati come proprietari del file (per la forma numerica utilizzare "#UID" e "#GID"), mentre ''permessi'' va espresso in forma ottale (per esempio: "744" per rimuovere scrittura ed esecuzione a tutti gli utenti, meno al proprietario; per maggiori informazioni si legga <code>man chmod</code>, la forma ottale è la stessa). | |||
* Imposta utente e gruppo proprietari di un file già installato nel sistema, e i suoi nuovi permessi, rendendo effettive fin da subito le modifiche: | |||
<pre># dpkg-statoverride --update --add nomeutente nomegruppo permessi /percorso/nomefile</pre> | |||
È stato sufficiente aggiungere l'opzione <code>--update</code>. | |||
==== Visualizza le personalizzazioni ==== | |||
* Visualizza tutti i cambiamenti a utente, gruppo e permessi (a prescindere che siano effettivi per le proprie modifiche): | |||
<pre>$ dpkg-statoverride --list</pre> | |||
Sono restituite anche le personalizzazioni effettuate dal sistema, alcune regolabili con <code>dpkg-reconfigure</code>. Anche per questo si consiglia di segnalare a parte le proprie modifiche. | |||
* Visualizza i cambiamenti apportati a un dato file: | |||
<pre>$ dpkg-statoverride --list /percorso/nomefile</pre> | |||
* Visualizza tutti i cambiamenti apportati ai file di un dato pattern (caratteri jolly: <code>*</code>, <code>?</code>, <code>[</code>...<code>]</code>): | |||
<pre>$ dpkg-statoverride --list "stringa"</pre> | |||
==== Rimuovi personalizzazione ==== | |||
* Rimuovi una propria personalizzazione da un dato file: | |||
<pre># dpkg-statoverride --remove /percorso/nomefile</pre> | |||
Si noti che tale modifica '''non''' ripristina utente, gruppo e permessi ai suoi valori originari, ma si limita a rimuovere l'azione memorizzata da <code>dpkg</code>, così che non sia più applicata in successive installazioni e aggiornamenti dei pacchetti contenenti il file scelto. Per renderle effettive è necessario [[Filesystem:_i_permessi_sui_files|intervenire manualmente]], oppure forzare la reinstallazione del pacchetto che conteneva il file. | |||
Per ripristinare utente, gruppo e permessi del file, cerco il pacchetto da reinstallare: | |||
<pre>$ dpkg --search /percorso/nomefile</pre> | |||
E ne forzo la reinstallazione con [[apt-get]]: | |||
<pre># apt-get --reinstall install nomepacchetto</pre> | |||
== Architetture == | == Architetture == | ||
Riga 267: | Riga 355: | ||
== Manuale == | == Manuale == | ||
<code>man dpkg</code><br/> | <code>man dpkg</code><br/> | ||
<code>man dpkg-reconfigure</code><br/> | |||
<code>man dpkg-query</code><br/> | <code>man dpkg-query</code><br/> | ||
<code>man dpkg-deb</code><br/> | <code>man dpkg-deb</code><br/> | ||
<code>man dpkg- | <code>man dpkg-divert</code><br/> | ||
<code>man dpkg-statoverride</code><br/> | |||
{{Autori | {{Autori |
contributi