Come impedire l'aggiornamento di un pacchetto specifico?

347

A causa di bug # 693758 vorrei impedire apt-get upgrade e Update Manager dall'aggiornamento del pacchetto "libgtk2.0-0".

Come può essere raggiunto?

    
posta Ivan 23.12.2010 - 18:29

12 risposte

506

Tenere

Ci sono quattro modi per trattenere i pacchetti: con dpkg, apt, aptitude o dselect.

dpkg

Metti in pausa un pacchetto:

echo "<package-name> hold" | sudo dpkg --set-selections

Rimuovi la sospensione:

echo "<package-name> install" | sudo dpkg --set-selections

Visualizza lo stato dei tuoi pacchetti:

dpkg --get-selections

Visualizza lo stato di un singolo pacchetto:

dpkg --get-selections | grep "<package-name>"

apt

Mantieni un pacchetto:

sudo apt-mark hold <package-name>

Rimuovi la sospensione:

sudo apt-mark unhold <package-name>

dselect

Con dselect, entra nella schermata [S] elect, trova il pacchetto che desideri conservare nel suo stato attuale e premi = o H . Le modifiche avranno effetto immediatamente dopo essere usciti dalla schermata [S] elect.

I seguenti approcci sono limitati in quanto il blocco / mantenimento di un pacchetto in aptitude o synaptic non ha effetto su apt-get / apt.

attitudine

Mantieni un pacchetto:

sudo aptitude hold <package-name>

Rimuovi la sospensione:

sudo aptitude unhold <package-name>

Blocco con Synaptic Package Manager

Vai a Gestore pacchetti Synaptic (Sistema & gt; Amministrazione & gt; Gestore pacchetti Synaptic).

Fai clic sul pulsante di ricerca e digita il nome del pacchetto.

Quando trovi il pacchetto, selezionalo e vai al menu Pacchetto e seleziona Blocca versione .

Il pacchetto ora non verrà mostrato nel gestore aggiornamenti e non verrà aggiornato.

    
risposta data hhlp 23.12.2010 - 19:04
43

Per mettere un pacchetto "pippo" in attesa:

echo "foo hold" | dpkg --set-selections

Nel tuo caso metteremo il vino in attesa:

sudo -i
echo "wine hold" | dpkg --set-selections

Per rimuovere la sospensione:

sudo -i
echo "wine install" | dpkg --set-selections
    
risposta data Panther 08.12.2011 - 21:15
30

Stavo cercando la stessa cosa e dopo molte ricerche ho scoperto che usando la seguente sintassi puoi vietare una versione specifica ma consentire il prossimo aggiornamento:

Package: compiz-plugins-main
Pin: version 1:0.9.7.0~bzr19-0ubuntu10.1
Pin-Priority: -1

Questo va nel file / etc / apt / preferences.

    
risposta data soger 22.07.2013 - 13:13
19

Installa synaptic utilizzando sudo apt-get install synaptic .

Esegui utilizzando gksudo synaptic e nella casella di ricerca individua il pacchetto che desideri bloccare, ovvero: gedit

DalmenupacchettoselezionaBloccaversione:

E questo è tutto, la versione attualmente installata al momento del blocco rimarrà installata anche durante gli aggiornamenti.

    
risposta data Bruno Pereira 08.12.2011 - 21:06
16

Impedire l'installazione di un pacchetto è chiamato "blocco del pacchetto" ed è molto semplice da fare:

echo package_name hold | dpkg --set-selections

... dove * nome_pacchetto * è il nome del pacchetto che si desidera impedire dall'installazione.

Nota: il comando sopra assume i privilegi di root. In altre parole, probabilmente dovrai digitare sudo su prima di eseguirlo.

    
risposta data RobotHumans 05.02.2011 - 02:18
5

Da qualche tempo apt-get è sostituito da apt , quindi ad esempio voglio impedire a Firefox di aggiornarsi alla versione superiore a 56, perché molti componenti aggiuntivi, come " Tab Groups " non funzionano più con il nuovo Firefox 57 (vedi" Aggiornamento di WebExtensions ").

È possibile contenere più di un pacchetto con un solo comando e utilizzare caratteri jolly.

Impedisci l'aggiornamento di Firefox

sudo apt-mark hold firefox firefox-locale-*

Se dovessi desiderare di scartarli in seguito, sarebbe il comando:

sudo apt-mark unhold firefox firefox-locale-*
    
risposta data rubo77 19.11.2017 - 08:45
4

I synaptic puoi bloccare la versione di un pacchetto specifico Non sono sicuro al 100% se questo modificherà apt-get ma fermerà definitivamente il gestore degli aggiornamenti.

Per bloccare un pacchetto selezionalo in synaptic, quindi apri il menu pacchetto e seleziona freeze version.

Spero che questo aiuti

modifica: questa domanda 16668 si occupa di una situazione simile

    
risposta data Allan 23.12.2010 - 18:35
3

Tutto quello che avresti sempre voluto sapere riguardo al "blocco" e "blocco" dei pacchetti a versioni specifiche: link

    
risposta data Jeff Ferland 23.12.2010 - 22:09
3

Vedi bug # 75332 , # 158981 e # 72.806 .

Il riepilogo è che hold a livello apt-get / aptitude non attiva lo stato hold in dpkg (vedi bug 72806 in particolare) e update-manager legge lo stato da dpkg.

la soluzione alternativa viene eseguita come root: % Co_de%

    
risposta data jasper 26.11.2012 - 08:24
1

Se hai installato Synaptic puoi selezionare il pacchetto e utilizzare il menu Pacchetto - & gt; Blocca la versione per impedirne l'aggiornamento.

Puoi installare Synaptic con sudo apt-get install synaptic. Personalmente ritengo che sia più utile del Software Center ... quindi, di nuovo, sono abbastanza vecchia scuola. :)

    
risposta data dinchamion 08.12.2011 - 21:06
1

Puoi usare su aptitude la "sovrascrittura specifica", come questa:

aptitude reinstall ~i oracle-java8-jre:

Questo è un uso una tantum di (non memorizzato per future installazioni), mantenere l'override specifico, per reinstallare tutti i pacchetti nel tuo sistema ma non oracle-java8-jre.

Se utilizzi un keep override specifico, il pacchetto si troverà momentaneamente in uno stato di conservazione in cui aptitude non tenterà di installarlo.

Una cosa molto buona se pensi che il tuo sistema sia stato compromesso come.

    
risposta data cabonamigo 18.05.2017 - 18:27
0

Occasionalmente si potrebbe desiderare di trattenere tutti i pacchetti attualmente installati. Ecco come.

Prima salva lo stato corrente, quindi puoi annullare:

dpkg --get-selections > current_selections.txt

Quindi, per trattenere tutti i pacchetti:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

Infine, quando si desidera tornare allo stato precedente:

dpkg --set-selections < current_selections.txt

Un caso d'uso per questo potrebbe essere quando si crea una VM o un'istantanea AMI Amazon per migrare da un QA all'ambiente di produzione.

    
risposta data JVW 14.01.2015 - 20:46

Leggi altre domande sui tag