Testing on demand

Lun, 11/12/2017 - 00:42
Ritratto di mcortese

Testing on demand

Inviato da mcortese 0 commenti

Ci sono ottime ragioni per rimanere sulla versione stabile di Debian. Ce ne sono di altrettanto valide per decidere di seguire la testing. Per chi vuole tenere il piede in due scarpe, esiste una terza via: mantenere la maggior parte dei pacchetti alla versione stabile e ricorrere alla testing solo per alcuni selezionati software di cui è richiesta la versione più nuova. Mi piace chiamare questa configurazione "testing on demand".

Il primo passo è far sapere ad Apt che la testing esiste. Invece di sporcare il file /etc/apt/sources.list io preferisco creare un file specifico con un nome significativo (testing-on-demand.list) nella directory /etc/apt/sources.list.d. Serve una sola riga:

deb http://ftp.it.debian.org/debian/ testing main non-free contrib

Un file chiamato testing-on-demand nella directory /etc/apt/preferences.d imposta la giusta priorità:

# Allow packages from testing only if they don't exist in stable
Package: *
Pin: release a=testing
Pin-Priority: 100

Dopo il solito update, aptitude registra correttamente l'esistenza di versioni più nuove dei pacchetti installati, ma non fa nulla per cercare di aggiornarli. Un esempio lo dimostra:

$ aptitude versions evolution
i A 3.22.6-1+deb9u1    stable     500
p A 3.26.2-1           testing    100
La versione in stable, pur essendo inferiore a quella in testing, ha una priorità maggiore ed è quindi quella installata.

Poiché aptitude non considera le versioni in testing come un aggiornamento rispetto a quelle in stable, i pacchetti con una nuova versione in testing non appariranno tra quelli aggiornabili. Per selezionarli bisogna ricorrere alle potenti capacità di ricerca e filtraggio di aptitude.

Tanto per cominciare, questo comando elenca tutti i pacchetti presenti in testing:

aptitude search '?archive(testing)'

Questo tutti i pacchetti presenti in testing che hanno almeno una versione installata:
aptitude search '?archive(testing)?installed'

Questo tutti i pacchetti presenti in testing che hanno una versione installata che non è quella in testing:
aptitude search '?narrow(?not(?installed),?archive(testing))?installed'

Per fortuna aptitude ammette una sintassi più concisa:

aptitude search '~S !~i ~Atesting ~i'
Inoltre gli stessi pattern di ricerca possono essere usati come filtro dopo aver premuto l in modalità interattiva.

Per fare qualcosa di più costruttivo basta aggiungere più termini alla ricerca.

Ad esempio, supponiamo di voler aggiornare l'ambiente GNOME alla versione 3.26 in testing sporcando il meno possibile la nostra stable. L'approccio che sceglierei è di lanciare aptitude in modalità interattiva e impostare questo filtro:

?narrow(?not(?installed),?version(3\.26))?installed
oppure, in versione abbreviata:
~S !~i ~V3\.26 ~i
Da notare che il punto va preceduto dalla barra rovesciata per evitare che sia interpretato come un carattere jolly.

A questo punto l'installazione dei singoli pacchetti va seguita a mano, risolvendo uno per uno gli inevitabili conflitti che emergeranno.

Io mi fermo qui, sperando di essere stato di ispirazione. A qualcuno vengono in mente altri casi esemplari?