Impedire l'aggiornamento di un pacchetto: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
 
(38 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
==Introduzione==
==Introduzione==
Apt-file � un potente motore di ricerca in grado di indicare a quale pacchetto appartiene un determinato file... sembra una cosa da poco, ma non sempre � cos�... soprattutto quando si ha a che fare con le compilazioni da sorgenti.
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.


==Installazione==
Per marcare un pacchetto come "hold" sono possibili diverse strade: [[apt-mark]], [[aptitude]], [[dpkg]] (sconsigliato).
Niente di pi� semplice, ovviamente
<pre>
# apt-get install apt-file
</pre>
 
 
==Configurazione==
 
Non necessita di modifiche...
Nel file sono presenti due sezioni:
# dove collocare i file archivio e come rinominarli (all'interno del file � presente uno specchietto riassuntivo delle variabili utilizzabili...
# le sintassi dei comandi utilizzati per scaricare i file.
Queste direttive, salvo casi particolari, non necessitano di modifiche.
 
==Utilizzo==
 
Una volta installata, dobbiamo aggiornare la lista dei file.
Per fare questo � sufficiente dare il seguente comando:
<pre>
# apt-file update
</pre>
cos� verranno scaricate le liste...


'''Attenzione''': sono file piuttosto corposi, fino a 8Mb...quindi vi consiglio di non usarlo con una normale connessione dial-up...
== apt-mark ==
Questo programma è fornito con la suite [[APT|apt]], per cui è sufficiente un:
<pre># apt-mark hold nomepacchetto/i</pre>
per contrassegnare come "hold" uno o più pacchetti.<br/>
Ad esempio con:
<pre># apt-mark hold vrms xorg</pre>
si impedirà l'aggiornamento del pacchetto <code>vrms</code> e del [[metapacchetto]] <code>xorg</code> . <br/>


Vediamo, ora, le principali funzioni:
Per sbloccare il/i pacchetto/i:
<pre>
<pre># apt-mark unhold nomepacchetto/i</pre>
# apt-file update
</pre>
Aggiorna gli archivi dei contenuti dei pacchetti.


Per visualizzare la lista dei pacchetti con status "hold":
<pre># apt-mark showhold</pre>


<pre>
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:
# apt-file purge
Status: '''hold''' ok installed
</pre>
Rimuove tutti gli archivi di apt-file scaricati.


== aptitude ==
Per marcare uno o più pacchetti come "hold", il comando è:
<pre># aptitude hold nomepacchetto/i</pre>


<pre>
Per rimuovere lo stato di "hold":
# apt-file search <testo>
<pre># aptitude unhold nomepacchetto/i</pre>
</pre>
Cerca, e stampa a video l'elenco dei pacchetti che contengono <testo>.


Per visualizzare la lista dei pacchetti bloccati:
<pre># aptitude search ~ahold</pre>


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>
<pre>
# apt-file list <nomepacchetto>
...
State: 2
...
</pre>
</pre>
Stampa a video il contenuto dei pacchetti corrispondenti a <nomepacchetto>.
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.
 


tra le opzioni disponibili, ricordo quelle principali (di uso comune...)
== dpkg ==
; --ignore-case | -i : Permette di effettuare ricerca case-insensitive
{{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/>
; --regexp | -x : Tratta come un pattern di una espressione regolare.
Utilizzare "apt-mark" che, essendo un wrapper agli esatti comandi qui descritti, permette di compiere l'operazione in tutta sicurezza.}}
; --package-only : Mosta solo il nome del pacchetto, e non quello dei file, utile quando si esegue una ricerca usando come un nome molto comune.


Con [[dpkg]], si esporta la lista dei pacchetti selezionati:
<pre># dpkg --get-selections > selections.txt</pre>


== Esempio ==
Poi si modifica il file risultante <code>selections.txt</code>, cambiando la linea contenente il nome del pacchetto che si vuole tenere  in "hold", per esempio nel caso di <code>mysql-server</code>, da questo:
<pre>mysql-server install</pre>
a quest'altro:
<pre>mysql-server hold</pre>
Successivamente si salva il file, e ricarica il tutto dentro il database di <code>dpkg</code> con:
<pre># dpkg --set-selections < selections.txt</pre>


Per cercare in quale pacchetto � contenuto un eseguibile si pu� usare:
== 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]].


<pre>
== Pinning ==
# apt-file search bin/nome-eseguibile
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).
</pre>


trover� tutti i pacchetti che contengono file che comincino per ''nome-eseguibile'' e che siano in una directory che finisce per bin (come <tt>/bin/</tt>, <tt>/sbin/</tt>, <tt>/usr/bin</tt>, <tt>/usr/sbin</tt>).
{{Autori
|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
}}


---- [[User:MaXeR|MaXeR]]
[[Categoria:Apt]]
[[Categoria:Apt]]

Versione attuale delle 10:42, 28 mar 2015

Debian-swirl.png 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

Warning.png ATTENZIONE
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.

Utilizzare "apt-mark" che, essendo un wrapper agli esatti comandi qui descritti, permette di compiere l'operazione in tutta sicurezza.


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 Swirl-auth60.png Debianized 60%
Estesa da:
Verificata da:
S3v 22:15, 12 mar 2014 (CET)
HAL 9000 11:15, 31 ago 2014 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized