Domanda Come prevenire l'aggiornamento di un pacchetto specifico?


Per colpa di bug # 693758 Mi piacerebbe prevenire apt-get upgrade e Update Manager dall'aggiornamento del pacchetto "libgtk2.0-0".

Come può essere realizzato?


324
2017-12-23 17:29


origine


@ hhlp: Ma questa domanda è una domanda su un pacchetto che non è mai stato installato. - Nathan Osman
@ George Edison - C'è anche un pacchetto che ti permette di non aggiornare il pacchetto. Sostenere un pacchetto in pratica significa che stai dicendo al gestore di pacchetti di mantenere la versione corrente a prescindere da cosa. Ciò è utile se la versione più recente di un programma attualmente funzionante si interrompe dopo un aggiornamento. (non puoi tenere un pacchetto che non è mai stato installato vedi anche la mia domanda è la stessa) .... l'ho provato in questo momento - vedi ha detto disable packages from the auto-update - hhlp


risposte:


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 stiva:

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

Mostra lo stato dei tuoi pacchetti:

dpkg --get-selections

Mostra lo stato di un singolo pacchetto:

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

adatto

Tieni un pacco:

sudo apt-mark hold <package-name>

Rimuovi la stiva:

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] Elegge.


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

Tieni un pacco:

sudo aptitude hold <package-name>

Rimuovi la stiva:

sudo aptitude unhold <package-name>

Blocco con Synaptic Package Manager

Vai a Gestore pacchetti Synaptic (Sistema> Amministrazione> Gestore pacchetti Synaptic).

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

Quando trovi il pacchetto, selezionalo e vai su Pacchetto menu e selezionare Blocca la versione.

Synaptic menu

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


474
2017-12-23 18:04



Questo funziona anche per impedire l'installazione di un pacchetto. Durante l'installazione devscripts, molti pacchetti sono estratti come pacchetti consigliati. Poiché non ho bisogno di un server di posta (postfix), potrei disabilitare l'installazione eseguendo echo postfix hold | sudo dpkg --set-selections prima di correre sudo apt-get install devscripts. Questa azione di attesa persiste solo per questa installazione, dopo l'installazione le selezioni vengono ripristinate. - Lekensteyn
Inoltre, vale la pena sottolineare che le sospensioni dei pacchetti interrompono talvolta gli aggiornamenti e le patch creando una situazione in cui non esiste una soluzione legale adatta a una dipendenza. Se il pacchetto foo ha una dipendenza == <o <= su libbar, apt rifiuterà di aggiornare libbar e foo. Con il passare del tempo, queste dipendenze a cascata potrebbero aumentare fino a bloccare un numero elevato di aggiornamenti, inclusi importanti aggiornamenti di sicurezza. Dovrai rimuovere la sospensione e consentire l'aggiornamento, oppure ricostruire i pacchetti che stai tenendo contro le versioni più recenti delle sue dipendenze, se ciò accade. - Stephanie
Solo una nota: apt-mark non supporta hold nella versione 0.7.25 (Ubuntu Lucid) - Joril
Ciò è particolarmente utile quando si tenta di trattenere i driver grafici. Per gli utenti ATI, apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev. - earthmeLon
Attualmente synaptic e aptitude bloccano solo i pacchetti all'interno di quei programmi. "Qualcos'altro che fa gli aggiornamenti dei pacchetti (leggi: Update Manager, apt-get, aptitude, ecc.) Lo ignora." A partire dal questa domanda. - holocronweaver


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 stiva:

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

43
2017-12-08 20:15



Nota anche che mentre un pacchetto è in attesa, tu può installa una versione specifica tramite apt-get install wine=1.2.3. Essere in attesa impedisce apt-get (dist-)upgrade dal cambiarlo. - rcoup
@ rcoup Se hai una vecchia versione in attesa, e poi esegui manualmente l'aggiornamento a una nuova versione senza rimuovere la sospensione mentre descrivi, la vecchia versione sarà conservata nella cache in modo che tu possa tornare ad essa? - cxrodgers
@cxrodgers la cache locale (tipicamente /var/cache/apt/archives) è indipendente da prese e aggiornamenti e cose, quindi tutte le versioni che hai scaricato saranno lì fino a quando non corri apt-get [auto]clean - rcoup


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

Pacchetto: compiz-plugins-main
Pin: versione 1: 0.9.7.0 ~ bzr19-0ubuntu10.1
Pin-Priority: -1

Questo va nel file / etc / apt / preferences.


28
2017-07-22 11:13



Questo è un modo molto migliore di prevenire gli aggiornamenti a tempo indeterminato - Eero Aaltonen
Con questo metodo, penso, le probabilità sono maggiori per evitare che l'adware di Ubuntu come Ubuntu o l'icona di Amazon venga reinstallato con il prossimo aggiornamento della versione ... - Daniel Alder


Installare synaptic utilizzando sudo apt-get install synaptic.

Esegui usando gksudo synaptic e nella casella di ricerca individuare il pacchetto che si desidera bloccare, cioè: gedit

enter image description here

Dal menu del pacchetto selezionare Blocca versione:

enter image description here

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


19
2017-12-08 20:06



Per favore guarda "La versione di Lock non è così intelligente come sembra. Dovrebbe fare ciò che dice sul barattolo, bloccare la versione ... Ma si blocca solo all'interno di Synaptic. Qualsiasi altra cosa che faccia gli aggiornamenti del pacchetto (leggi: Update Manager , apt-get, aptitude, ecc.). Questo è probabilmente un comportamento bacato, quindi mi aspetterei che venga risolto in tempo. " a partire dal askubuntu.com/questions/9607/what-does-lock-version-do. Qual è lo stato attuale? Se qualcosa è bloccato in Synaptic, gli altri gestori di pacchetti "onoreranno" il blocco?
vasa1: A partire dalla versione 0.75.13, ancora no :( Lo stesso problema con aptitude. - syockit


Prevenire l'installazione di un pacchetto si chiama "holding del pacchetto" ed è molto semplice da fare:

eco nome del pacchetto tenere premuto dpkg --set-selezioni

... 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.


16
2018-02-05 01:18



Perfezionare Questo era la risposta. Grazie. - asoundmove
s/sudo su/sudo -s/g (o sudo -i). (-i darà una shell di login, -s non lo farò). - derobert


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

È possibile contenere più di un pacchetto con un 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-*

5
2017-11-19 07:45





In 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 del pacchetto e seleziona freeze version.

Spero che questo ti aiuti

modifica: questo domanda 16668 si occupa di una situazione simile


4
2017-12-23 17:35





Tutto quello che avresti sempre voluto sapere su "tenere" e "appuntare" i pacchetti su versioni specifiche: https://help.ubuntu.com/community/PinningHowto


3
2017-12-23 21:09





Vedi bug # 75332, # 158.981 e # 72.806.

Il sommario è 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.

soluzione alternativa viene eseguita come root: echo "package hold" | dpkg --set-selections


3
2017-11-26 07:24