Impedire l'aggiornamento di un pacchetto: differenze tra le versioni
S3v (discussione | contributi) m (→Introduzione) |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
==Introduzione== | ==Introduzione== | ||
A volte per motivi di affidabilità o stabilità è necessario mantenere una specifica versione di un pacchetto precedentemente installato. | A volte per motivi di affidabilità o stabilità è necessario mantenere una specifica versione di un [[pacchetto]] precedentemente installato. | ||
Lo scopo di questo Tip è 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/> | Lo scopo di questo Tip è 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/> | ||
Riga 17: | Riga 17: | ||
Per sbloccare il pacchetto: | Per sbloccare il pacchetto: | ||
<pre># apt-mark unhold nomepacchetto</pre> | <pre># apt-mark unhold nomepacchetto</pre> | ||
Le operazioni di "hold" e "unhold" richiedono che sia specificato il nome di un solo pacchetto alla volta. | |||
Per visualizzare la lista dei pacchetti con status "hold": | Per visualizzare la lista dei pacchetti con status "hold": | ||
Riga 25: | Riga 26: | ||
Per contrassegnare un pacchetto come "hold", il comando è: | Per contrassegnare un pacchetto come "hold", il comando è: | ||
<pre># aptitude hold nomepacchetto</pre> | <pre># aptitude hold nomepacchetto</pre> | ||
Si si vuole contrassegnare come "hold" due o più pacchetti, a differenza di "apt-mark", è possibile farlo utilizzando il comando una sola volta. Ad esempio, per due pacchetti: | |||
<pre># aptitude hold pacchetto1 pacchetto2</pre> | |||
Per rimuovere lo stato di "hold": | Per rimuovere lo stato di "hold": | ||
Riga 33: | Riga 36: | ||
Notare che [[aptitude]] ha un proprio file in cui è conservato lo stato dei pacchetti, <code>/var/lib/aptitude/pkgstates</code>, per cui potrebbe capitare di contrassegnare un pacchetto come "hold" ma senza che [[apt-get]] se ne accorga.<br/> | Notare che [[aptitude]] ha un proprio file in cui è conservato lo stato dei pacchetti, <code>/var/lib/aptitude/pkgstates</code>, per cui potrebbe capitare di contrassegnare un pacchetto come "hold" ma senza che [[apt-get]] se ne accorga.<br/> | ||
Si consiglia questo metodo solo se | 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 == |
Versione delle 16:29, 12 set 2014
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 questo Tip è 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
Questo programma è fornito con la suite apt, per cui è sufficiente un:
# apt-mark hold nomepacchetto
Ad esempio con:
# apt-mark hold vrms
si impedirà l'aggiornamento del pacchetto vrms
.
Per sbloccare il pacchetto:
# apt-mark unhold nomepacchetto
Le operazioni di "hold" e "unhold" richiedono che sia specificato il nome di un solo pacchetto alla volta.
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
.
aptitude
Per contrassegnare un pacchetto come "hold", il comando è:
# aptitude hold nomepacchetto
Si si vuole contrassegnare come "hold" due o più pacchetti, a differenza di "apt-mark", è possibile farlo utilizzando il comando una sola volta. Ad esempio, per due pacchetti:
# aptitude hold pacchetto1 pacchetto2
Per rimuovere lo stato di "hold":
# aptitude unhold nomepacchetto
Per visualizzare la lista dei pacchetti bloccati:
# aptitude search ~ahold
Notare che aptitude ha un proprio file in cui è conservato lo stato dei pacchetti, /var/lib/aptitude/pkgstates
, per cui potrebbe capitare di contrassegnare un pacchetto come "hold" ma senza che apt-get se ne accorga.
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 |