Debian: impedisce che un determinato file venga sovrascritto durante l'aggiornamento del pacchetto


9

Capisco che un pacchetto ha due componenti: confige datafile. Durante l'aggiornamento del pacchetto (ovvero l'aggiornamento della sicurezza) i datafile possono essere sovrascritti, ma i configfile devono sempre rimanere gli stessi. Anche i configfile sono di solito dentro /etce datadentro /usr. A volte, tuttavia, la distinzione è sfocata.

Nel mio caso, ho modificato il file icona per Icedove(Thunderbird):

/usr/share/applications/icedove.desktop

Ora, ogni volta che c'è un Icedoveaggiornamento (Thunderbird), le mie modifiche vengono sovrascritte con il file predefinito (anche se non è cambiato tra gli aggiornamenti).

C'è un modo per impedire che questo particolare file venga sovrascritto?

Impostarlo su immutabile con chattr +i icedove.desktopnon è una buona idea, in quanto produce errori durante l'aggiornamento del pacchetto.


2
@don_crissti Tecnicamente la posizione corretta è $XDG_DATA_HOME/applications/icedove.desktop, sebbene di solito questa impostazione predefinita sia il percorso di ricerca menzionato. La specifica della directory di base XDG fornisce anche un percorso di ricerca $XDG_DATA_DIRSper le sostituzioni a livello di sistema. Una spiegazione più dettagliata di come si applicano le directory di base XDG in questo caso è nella mia risposta .
Thomas Nyman,

Risposte:


7

Mentre la risposta di Wurtel risponde alla domanda come formulata, considerando lo sfondo della domanda rivela che questo è l'ennesimo caso di un problema XY .

In questo caso particolare, /usr/share/applications/icedove.desktopnon dovrebbe essere modificato in primo luogo, ma un file di configurazione locale che sovrascrive la configurazione predefinita dovrebbe essere collocato in una posizione adatta. I sistemi conformi a freedesktop.org sono conformi alle specifiche della directory di base XDG , il cui scopo è precisamente quello di eliminare la necessità di modificare i file di configurazione che vengono sovrascritti durante gli aggiornamenti del pacchetto.

Se la configurazione deve essere estesa a tutto il sistema, il locale icedove.desktopdeve essere posizionato nella applicationssottodirectory per un percorso di ricerca che precede /usr/sharein $XDG_DATA_DIRS. Il valore predefinito di questa variabile di ambiente è /usr/local/share/:/usr/share/, ma il valore effettivo varia tra le distribuzioni. Perché in questo caso la configurazione deve essere locale nella posizione corretta /usr/local/share/applications/icedove.desktop, sebbene si tenga presente che potrebbero essere presenti sostituzioni specifiche della distribuzione che potrebbero avere la preferenza rispetto alle configurazioni in usr/local/share.

D'altra parte, se la configurazione è rientrata per essere specifica dell'utente, il locale icedove.desktopdeve essere posizionato applicationsnella posizione indicata da $XDG_DATA_HOME. In genere $HOME/.local/share, per impostazione predefinita , questo dovrebbe essere il percorso del file di configurazione $HOME/.local/share/applications/icedove.desktop.


10

Vuoi l' dpkg-divertutilità.

dpkg-divert --divert /usr/share/applications/icedove.desktop.packaged --rename /usr/share/applications/icedove.desktop

1
Questo potrebbe aiutare gli altri: "Non tentare di deviare un file che è di vitale importanza per il funzionamento del sistema - quando si utilizza dpkg-divert c'è un tempo, dopo che è stato deviato ma prima che dpkg abbia installato la nuova versione, quando il file lo fa non esiste. "da debian.org/doc/debian-policy/ap-pkg-diversions.html
ore 2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.