Impedire l'aggiornamento di un pacchetto: differenze tra le versioni
S3v (discussione | contributi) (aggiornamento: apt-mark & aptitude) |
S3v (discussione | contributi) |
||
(19 versioni intermedie di 2 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
==Introduzione== | |||
A volte per motivi di affidabilità o stabilità è necessario mantenere una specifica versione di un [[pacchetto]] precedentemente installato. | |||
Lo scopo di questa guida è proprio quello di congelare gli aggiornamenti di un pacchetto in modo da poter tranquillamente eseguire un <code>apt-get upgrade</code> senza aver timore di compromettere il nostro sistema.<br/> | |||
È importante sottolineare che lo status di "hold" di un pacchetto non si applicherà alle sue [[dipendenze]] e che potrebbe impedire l'aggiornamento di altre applicazioni da esso dipendenti se queste richiedono l'aggiornamento del pacchetto bloccato ad una versione successiva a quella installata. | |||
Per marcare un pacchetto come "hold" sono possibili diverse strade: [[apt-mark]], [[aptitude]], [[dpkg]] (sconsigliato). | |||
== apt-mark == | == apt-mark == | ||
Questo programma è fornito con la suite | Questo programma è fornito con la suite [[APT|apt]], per cui è sufficiente un: | ||
<pre># apt-mark hold nomepacchetto</pre> | <pre># apt-mark hold nomepacchetto/i</pre> | ||
per contrassegnare come "hold" uno o più pacchetti.<br/> | |||
Ad esempio con: | Ad esempio con: | ||
<pre># apt-mark hold vrms</pre> | <pre># apt-mark hold vrms xorg</pre> | ||
si impedirà l'aggiornamento del pacchetto <code>vrms</code> . <br/> | si impedirà l'aggiornamento del pacchetto <code>vrms</code> e del [[metapacchetto]] <code>xorg</code> . <br/> | ||
Per sbloccare il pacchetto: | Per sbloccare il/i pacchetto/i: | ||
<pre># apt-mark unhold nomepacchetto</pre> | <pre># apt-mark unhold nomepacchetto/i</pre> | ||
Per visualizzare la lista dei pacchetti con status "hold": | Per visualizzare la lista dei pacchetti con status "hold": | ||
<pre># apt-mark showhold</pre> | <pre># apt-mark showhold</pre> | ||
Apt-mark è un wrapper di "dpkg --set-selections", per cui il file su cui opera è <code>/var/lib/dpkg/status</code> . | Apt-mark è un wrapper di "dpkg --set-selections", per cui il file su cui opera è <code>/var/lib/dpkg/status</code> . In questo file, lo status di "hold" è evidenziato dalla seguente riga: | ||
Status: '''hold''' ok installed | |||
== aptitude == | == aptitude == | ||
Per | Per marcare uno o più pacchetti come "hold", il comando è: | ||
<pre># aptitude hold nomepacchetto</pre> | <pre># aptitude hold nomepacchetto/i</pre> | ||
Per rimuovere lo stato di "hold": | Per rimuovere lo stato di "hold": | ||
<pre># aptitude unhold nomepacchetto</pre> | <pre># aptitude unhold nomepacchetto/i</pre> | ||
Per visualizzare la lista dei pacchetti bloccati: | Per visualizzare la lista dei pacchetti bloccati: | ||
<pre># aptitude search ~ahold</pre> | <pre># aptitude search ~ahold</pre> | ||
Notare che | Notare che [[aptitude]] ha un proprio file in cui è conservato lo stato di "hold" dei pacchetti, <code>/var/lib/aptitude/pkgstates</code>, per cui potrebbe capitare di marcare un pacchetto come "hold" ma senza che [[apt-get]] se ne accorga.<br/> | ||
Lo status di "hold" per il pacchetto sarà contrassegnato, all'interno di questo file, da: | |||
<pre> | |||
... | |||
State: 2 | |||
... | |||
</pre> | |||
Si consiglia questo metodo solo se si utilizza <u>esclusivamente</u> 'aptitude'. In caso si utilizzi anche 'apt-get', ricorrere ad <code>apt-mark</code> per evitare di imbattersi in comportamenti imprevisti. | |||
== dpkg == | == dpkg == | ||
{{Warningbox| | {{Warningbox|Le operazioni che verranno descritte sono pericolose e potenzialmente nefaste per l'intero sistema nel caso in cui si commettessero errori durante la modifica dei file o nel caso in cui gli editor utilizzati manifestassero problemi di salvataggio.<br/> | ||
Utilizzare "apt-mark" che, essendo un wrapper agli esatti comandi qui descritti, permette di compiere l'operazione in tutta sicurezza.}} | |||
Con | Con [[dpkg]], si esporta la lista dei pacchetti selezionati: | ||
<pre># dpkg --get-selections > selections.txt</pre> | <pre># dpkg --get-selections > selections.txt</pre> | ||
Riga 47: | Riga 57: | ||
Successivamente si salva il file, e ricarica il tutto dentro il database di <code>dpkg</code> con: | Successivamente si salva il file, e ricarica il tutto dentro il database di <code>dpkg</code> con: | ||
<pre># dpkg --set-selections < selections.txt</pre> | <pre># dpkg --set-selections < selections.txt</pre> | ||
== Dowgrade di un pacchetto == | == Dowgrade di un pacchetto == | ||
Nel caso si abbia la necessità di dover utilizzare un pacchetto ad una versione precedente a quella attualmente utilizzata, è possibile effettuare un [[downgrade]]. | Nel caso si abbia la necessità di dover utilizzare un pacchetto ad una versione precedente a quella attualmente utilizzata, è possibile effettuare un [[downgrade]]. | ||
== Pinning == | |||
I metodi descritti in precedenza sono equivalenti all'utilizzo di una configurazione di [[pinning]] per il pacchetto con "Pin-Priority: -1" (o qualunque altro numero negativo). | |||
{{Autori | {{Autori | ||
|Autore=[[Utente:Keltik|Keltik]] | |Autore=[[Utente:Keltik|Keltik]] | ||
|Verificata_da= | |||
:[[Utente:S3v|S3v]] 22:15, 12 mar 2014 (CET) | |||
:[[Utente:HAL 9000|HAL 9000]] 11:15, 31 ago 2014 (CEST) | |||
|Numero_revisori=2 | |||
}} | }} | ||
[[Categoria:Apt]] | [[Categoria:Apt]] |
Versione attuale delle 10:42, 28 mar 2015
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
A volte per motivi di affidabilità o stabilità è necessario mantenere una specifica versione di un pacchetto precedentemente installato.
Lo scopo di questa guida è proprio quello di congelare gli aggiornamenti di un pacchetto in modo da poter tranquillamente eseguire un apt-get upgrade
senza aver timore di compromettere il nostro sistema.
È importante sottolineare che lo status di "hold" di un pacchetto non si applicherà alle sue dipendenze e che potrebbe impedire l'aggiornamento di altre applicazioni da esso dipendenti se queste richiedono l'aggiornamento del pacchetto bloccato ad una versione successiva a quella installata.
Per marcare un pacchetto come "hold" sono possibili diverse strade: apt-mark, aptitude, dpkg (sconsigliato).
apt-mark
Questo programma è fornito con la suite apt, per cui è sufficiente un:
# apt-mark hold nomepacchetto/i
per contrassegnare come "hold" uno o più pacchetti.
Ad esempio con:
# apt-mark hold vrms xorg
si impedirà l'aggiornamento del pacchetto vrms
e del metapacchetto xorg
.
Per sbloccare il/i pacchetto/i:
# apt-mark unhold nomepacchetto/i
Per visualizzare la lista dei pacchetti con status "hold":
# apt-mark showhold
Apt-mark è un wrapper di "dpkg --set-selections", per cui il file su cui opera è /var/lib/dpkg/status
. In questo file, lo status di "hold" è evidenziato dalla seguente riga:
Status: hold ok installed
aptitude
Per marcare uno o più pacchetti come "hold", il comando è:
# aptitude hold nomepacchetto/i
Per rimuovere lo stato di "hold":
# aptitude unhold nomepacchetto/i
Per visualizzare la lista dei pacchetti bloccati:
# aptitude search ~ahold
Notare che aptitude ha un proprio file in cui è conservato lo stato di "hold" dei pacchetti, /var/lib/aptitude/pkgstates
, per cui potrebbe capitare di marcare un pacchetto come "hold" ma senza che apt-get se ne accorga.
Lo status di "hold" per il pacchetto sarà contrassegnato, all'interno di questo file, da:
... State: 2 ...
Si consiglia questo metodo solo se si utilizza esclusivamente 'aptitude'. In caso si utilizzi anche 'apt-get', ricorrere ad apt-mark
per evitare di imbattersi in comportamenti imprevisti.
dpkg
Con dpkg, si esporta la lista dei pacchetti selezionati:
# dpkg --get-selections > selections.txt
Poi si modifica il file risultante selections.txt
, cambiando la linea contenente il nome del pacchetto che si vuole tenere in "hold", per esempio nel caso di mysql-server
, da questo:
mysql-server install
a quest'altro:
mysql-server hold
Successivamente si salva il file, e ricarica il tutto dentro il database di dpkg
con:
# dpkg --set-selections < selections.txt
Dowgrade di un pacchetto
Nel caso si abbia la necessità di dover utilizzare un pacchetto ad una versione precedente a quella attualmente utilizzata, è possibile effettuare un downgrade.
Pinning
I metodi descritti in precedenza sono equivalenti all'utilizzo di una configurazione di pinning per il pacchetto con "Pin-Priority: -1" (o qualunque altro numero negativo).
Guida scritta da: Keltik | Debianized 60% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |