A causa del bug # 693758 Vorrei impedire a apt-get upgrade
Update Manager di aggiornare il pacchetto "libgtk2.0-0".
Come si può ottenere questo?
disable packages from the auto-update
A causa del bug # 693758 Vorrei impedire a apt-get upgrade
Update Manager di aggiornare il pacchetto "libgtk2.0-0".
Come si può ottenere questo?
disable packages from the auto-update
Risposte:
Esistono quattro modi per trattenere i pacchetti: con dpkg, apt, aptitude o dselect.
Metti un pacchetto in attesa:
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>"
Tenere un pacchetto:
sudo apt-mark hold <package-name>
Rimuovi la sospensione:
sudo apt-mark unhold <package-name>
Mostra tutti i pacchetti in attesa:
sudo apt-mark showhold
Con dselect, accedi alla schermata [S] eletti, trova il pacchetto che desideri conservare nel suo stato attuale e premi =o H. Le modifiche diventeranno effettive immediatamente dopo essere usciti dalla schermata [S] eletti.
I seguenti approcci sono limitati nel fatto che bloccare / tenere un pacchetto all'interno di aptitude o synaptic non influenza apt-get / apt.
Tenere un pacchetto:
sudo aptitude hold <package-name>
Rimuovi la sospensione:
sudo aptitude unhold <package-name>
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 al menu Pacchetto e seleziona Blocca versione .
Quel pacchetto ora non verrà mostrato nel gestore aggiornamenti e non verrà aggiornato.
devscripts
, molti pacchetti vengono estratti come pacchetti consigliati. Poiché non ho bisogno di un mailserver (postfix), potrei disabilitare l'installazione eseguendolo echo postfix hold | sudo dpkg --set-selections
prima di eseguire sudo apt-get install devscripts
. Questa azione di blocco persiste solo per questa installazione, dopo l'installazione le selezioni vengono ripristinate.
apt-mark
non supporta hold
nella versione 0.7.25 (Ubuntu Lucid)
apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev
.
Per mettere in attesa un pacchetto "pippo":
echo "foo hold" | dpkg --set-selections
Nel tuo caso metteremo il vino in attesa:
sudo -i
echo "wine hold" | dpkg --set-selections
Per rimuovere il blocco:
sudo -i
echo "wine install" | dpkg --set-selections
apt-get install wine=1.2.3
. Essere in attesa impedisce apt-get (dist-)upgrade
di cambiarlo.
/var/cache/apt/archives
) è indipendente da prese, aggiornamenti e cose, quindi tutte le versioni che hai scaricato saranno lì fino a quando non apt-get [auto]clean
Stavo cercando la stessa cosa e dopo molte ricerche ho scoperto che usando la sintassi seguente puoi proibire una versione specifica ma consentire il prossimo aggiornamento:
Pacchetto: compiz-plugins-main Pin: versione 1: 0.9.7.0 ~ bzr19-0ubuntu10.1 Priorità pin: -1
Questo va nel file / etc / apt / preferenze.
Installa synaptic
usando sudo apt-get install synaptic
.
Esegui utilizzando gksudo synaptic
e nella casella di ricerca individua il pacchetto che desideri bloccare, ovvero:gedit
Dal menu del pacchetto selezionare Blocca versione :
E questo è tutto, la versione attualmente installata al momento del blocco rimarrà installata anche durante gli aggiornamenti.
Impedire che un pacchetto venga installato si chiama "pacchetto holding" ed è molto semplice da fare:
echo nome_pacchetto hold | dpkg --set-selections
... dove * nome_pacchetto * è il nome del pacchetto che si desidera impedire l'installazione.
Nota: il comando sopra presuppone i privilegi di root. In altre parole, probabilmente dovrai digitare sudo su
prima di eseguirlo.
s/sudo su/sudo -s/g
(o sudo -i
). ( -i
darà una shell di login, -s
no).
Dato che un po 'di tempo apt-get
viene sostituito da apt
, quindi ad esempio voglio impedire a Firefox di aggiornare alla versione precedente 56, perché molti componenti aggiuntivi, come "Gruppi di schede" non funzionano più con il nuovo Firefox 57 (vedi "WebExtensions" Aggiornare").
È possibile contenere più di un pacchetto con un solo comando e utilizzare caratteri jolly.
sudo apt-mark hold firefox firefox-locale-*
Se dovessi desiderare di slegarli in seguito, questo sarebbe il comando:
sudo apt-mark unhold firefox firefox-locale-*
Sinceramente puoi congelare la versione di un pacchetto specifico. Non sono sicuro al 100% se questo modificherà apt-get ma fermerà definitivamente Update Manager.
Per bloccare un pacchetto selezionalo in sinaptico, quindi apri il menu del pacchetto e seleziona congela versione.
Spero che sia di aiuto
modifica: Questa domanda 16668 riguarda una situazione simile
Tutto quello che avresti sempre voluto sapere su "trattenere" e "bloccare" i pacchetti su versioni specifiche: https://help.ubuntu.com/community/PinningHowto
Vedi bug # 75332 , # 158981 e # 72806 .
Il sommario è che hold a livello apt-get / aptitude non sta innescando lo stato hold in dpkg (vedi in particolare il bug 72806) e update-manager legge lo stato da dpkg.
la soluzione alternativa viene eseguita come root:
echo "package hold" | dpkg --set-selections
È possibile utilizzare su aptitude la "sostituzione specifica", in questo modo:
aptitude reinstall ~i oracle-java8-jre:
Questo è un solo utilizzo di (non memorizzato per future reinstallazioni), mantenere l'override specifico, per reinstallare tutti i pacchetti nel sistema ma non oracle-java8-jre.
Se si utilizza un override specifico di keep, il pacchetto sarà momentaneamente in uno stato di keep a aptitude non tenterà di installarlo.
Un'ottima cosa se pensi che il tuo sistema sia stato compromesso in qualche modo.
Se Synaptic è installato, è possibile selezionare il pacchetto e utilizzare il menu Pacchetto -> Blocca versione per impedirne l'aggiornamento.
È possibile installare Synaptic con sudo apt-get install synaptic. Personalmente lo trovo più utile del Software Center ... poi di nuovo, sono abbastanza vecchia scuola. :)
Occasionalmente si potrebbe voler trattenere tutti i pacchetti attualmente installati. Ecco come.
Innanzitutto salva lo stato corrente, in modo da poter annullare:
dpkg --get-selections > current_selections.txt
Quindi, per trattenere tutti i pacchetti:
dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections
Alla fine, quando vuoi tornare allo stato precedente:
dpkg --set-selections < current_selections.txt
Un caso d'uso per questo potrebbe essere quando si crea uno snapshot VM o Amazon AMI per migrare da un QA a un ambiente di produzione.
Aggiunta di dettagli ai commenti di @ soger relativi a Ubuntu 16.04.
Ubuntu 16.04 non ha un file / etc / apt / preferenze di default. Se non ne hai uno al momento, crea un nuovo file e popolalo con una stanza come descritto da @soger sopra per escludere il pacchetto dato e le sue dipendenze dagli aggiornamenti.
Successivamente, corri apt update
e sei GTG. : 0)
Ad esempio, ho un server Ubuntu 16.04.5 LTS con scheda video Intel integrata e una scheda NVidia. La scheda NVidia è l'unica utilizzata. Il server utilizza anche i driver CUDA. Ho avuto un problema in cui ho apt
continuato a insistere
va-driver-tutto
(Driver Intel) ha richiesto un aggiornamento, ma non è stato possibile determinare quale versione installare. Questo mi stava facendo impazzire e comunque non avevo bisogno dei driver Intel. Ho inserito questo testo nel file delle preferenze e scaricato flush, problema risolto.
Package: va-driver-all
Pin: release *
Pin-Priority: -1