Impedisci la disinstallazione di un pacchetto in APT


8

In breve, voglio essere in grado di impostare il pacchetto in abcmodo che:

  1. apt-get remove abc dovrebbe fallire.
  2. apt-get purge abc dovrebbe fallire.
  3. apt-get upgrade abc dovrebbe funzionare.

Se le dipendenze del pacchetto cambiano in modo che abcdebbano essere disinstallate durante un dist-upgradesono felice di essere costretto a fare qualcosa e poi di dist-upgradenuovo.


Ho creato un metapacchetto essenziale da cui dipende abc, ma è stato rimosso comunque ... Penso che devi ricompilare l' abcambientazione Essential: yese Priority: requiredindebian/control
Teresa e Junior

@TeresaeJunior Strange, un pacchetto essenziale a defseconda abcdovrebbe funzionare. È stato defrimosso? Aiuta se fai def Priority: required?
Gilles 'SO- smetti di essere malvagio' il

@Gilles Esattamente, ho impostato sia Essential: yese Priority: requireded è stato rimosso senza avvisi. Ho creato questo piccolo script per creare il pacchetto, se vuoi dare un'occhiata: paste.org/44184
Teresa e Junior

Vedo che è Essential: yesstato ignorato, quindi equivsnon è sufficiente per quello ... Forse se il pacchetto viene creato debuild, ci proverò.
Teresa e Junior,

Risposte:


5

Non è proprio nulla per "bloccare" un pacchetto per impedire la rimozione, ma consentire l'aggiornamento.

È possibile inserire un picco in un pacchetto, non può essere eliminato, eliminato, aggiornato, leccato, qualsiasi cosa ...

Ma è un po 'più complicato della maggior parte delle cose.

Ad esempio, desideriamo bloccare Firefox: (useresti il ​​nome completo corretto del pacchetto, ovviamente)

echo firefox hold | dpkg --set-selections

che renderebbe immortale ' Firefox '. MA , neanche in questo stato può essere aggiornato.

Rimuovere lo stato di sospensione è un po 'più semplice, ma è una specie di gesto radicale:

dpkg --clear-selections

rimuove lo stato HOLD da TUTTO! Quindi, se si desidera contenere alcuni pacchetti, è meglio mantenere un elenco per riapplicare in seguito

In realtà è abbastanza piacevole e facile da eseguire usando aptitude o synaptics , in quanto hanno opzioni di menu per contenere / sbloccare un pacchetto, prendendosi cura di tutta la contabilità dietro le quinte per te. Consiglierei di usare uno di quelli (o uno dei tanti altri gestori di pacchetti che potresti incontrare)

Con Aptitude è possibile anche l'uso della riga di comando:

aptitude hold <package>
aptitude unhold <package>

Ricorda, tuttavia, dovrai " sbloccare " qualcosa se vuoi che venga aggiornato. Sebbene se usi il lato GUI di Aptitude, dovrebbe dirti se qualcosa che è tenuto è aggiornabile


1
apt-getdisinstallerà felicemente un pacchetto trattenuto.
bahamat,
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.