Molto spesso capita di voler installare un pacchetto che non si trova ancora nella release stable oppure che quello della stable è molto “vecchio”. Il software della stable non viene aggiornato, eccezion fatta per gli aggiornamenti della sicurezza;  il software della testing e della unstable viene al contrario aggiornato frequentemente, con una maggiore frequenza per la unstable. Oltre queste tre, ci sarebbero anche la oldstable (la vecchia stable, precedente all’attuale stable e aggiornata periodicamente) e la experimental (una versione altamente sperimentale), ma di scarsissima diffusione rispetto alle altre (e che vi sconsiglio caldamente).

Quindi se anche voi siete nella situazione di dover installare un pacchetto unstable dovete usare correttamente il pinning dei pacchetti. Ad esempio io ho voluto installare esniper ma la versione nella stable è la 2.18 e chiaramente non funziona viste le frequenti modifiche alle pagine web di Ebay. Allora le soluzioni sono di compilare manualmente il pacchetto partendo dai sorgenti oppure di scaricare il pacchetto precompilato del repository unstable (nel caso si opti per la compilazione del tool esniper bisogna assicurarsi di avere tutte le librerie devel di cURL).

Vi riporto un po’ di link di riferimento per il pinnig:

  1. A short introduction to apt-pinning
  2. Apt-pinning
  3. APT uso avanzato:_mixare releases diverse

Di seguito invece i comandi  e le configurazioni che io ho impostasto sul mio NSLU2 su cui è installata una Debian Lenny:

goku:/var/lib/apt/lists# cat ftp.it.debian.org_debian_dists_lenny_Release | head  -12
Origin: Debian
Label: Debian
Suite: oldstable
Version: 5.0.8
Codename: lenny
Date: Sat, 05 Feb 2011 11:52:42 UTC
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 5.0.8 Released 22 January 2011
MD5Sum:
 58224633e5dce3e9b37731332b0c1170    46265 Contents-udeb.gz
 f44897b98ff13591feefd16b28ededde 13567055 Contents-alpha.gz

Modifico il file /etc/apt/source.list aggiungendo i repository Testing e Unstable.

goku:/etc/apt# cat sources.list
# deb http://ftp.it.debian.org/debian/ lenny main

deb http://ftp.it.debian.org/debian/ lenny main
deb-src http://ftp.it.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

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

# Unstable
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib

Ora creo il file /etc/apt/preferences (e /etc/apt/apt.conf ) forzando il pachetto esniper alla versione unstable con la massima priorità evitando di ritrovarmi una marea di pacchetti aggiornati alla release unstable (ulteriori informazioni possono essere ricavate da man apt_preferences).

goku:/etc/apt# cat preferences
Package: *
Pin: release a=oldstable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Package: *
Pin: release a=unstable
Pin-Priority: 600

Package: esniper
Pin: release a=unstable
Pin-Priority: 1001

Aggiornamento dei repository ( apt-get clean && apt-get update ) e verifica delle priorità:

goku:/etc/apt# apt-cache policy
Package files:
 100 /var/lib/dpkg/status
 release a=now
 600 http://ftp.it.debian.org unstable/contrib Packages
 release o=Debian,a=unstable,l=Debian,c=contrib
 origin ftp.it.debian.org
 600 http://ftp.it.debian.org unstable/non-free Packages
 release o=Debian,a=unstable,l=Debian,c=non-free
 origin ftp.it.debian.org
 600 http://ftp.it.debian.org unstable/main Packages
 release o=Debian,a=unstable,l=Debian,c=main
 origin ftp.it.debian.org
 650 http://ftp.it.debian.org testing/contrib Packages
 release o=Debian,a=testing,l=Debian,c=contrib
 origin ftp.it.debian.org
 650 http://ftp.it.debian.org testing/non-free Packages
 release o=Debian,a=testing,l=Debian,c=non-free
 origin ftp.it.debian.org
 650 http://ftp.it.debian.org testing/main Packages
 release o=Debian,a=testing,l=Debian,c=main
 origin ftp.it.debian.org
 700 http://volatile.debian.org lenny/volatile/main Packages
 release o=volatile.debian.org,a=oldstable,l=debian-volatile,c=main
 origin volatile.debian.org
 700 http://security.debian.org lenny/updates/main Packages
 release v=5.0,o=Debian,a=oldstable,l=Debian-Security,c=main
 origin security.debian.org
 700 http://ftp.it.debian.org lenny/main Packages
 release v=5.0.8,o=Debian,a=oldstable,l=Debian,c=main
 origin ftp.it.debian.org
Pinned packages:
 esniper -> 2.24.0-1

Ecco il risultato finale in cui viene installato esniper da unstable mentre il generico update prende i pacchetti dalla stable (ora oldstable in quanto la versione attuale stable di Debian è squeeze e non più lenny)

goku:/etc/apt# apt-get -t unstable install esniper
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
 esniper
0 upgraded, 1 newly installed, 0 to remove and 283 not upgraded.
Need to get 44.5kB of archives.
After this operation, 143kB of additional disk space will be used.
Get:1 http://ftp.it.debian.org testing/main esniper 2.24.0-1 [44.5kB]
Fetched 44.5kB in 0s (98.8kB/s)
Selecting previously deselected package esniper.
(Reading database ... 25373 files and directories currently installed.)
Unpacking esniper (from .../esniper_2.24.0-1_armel.deb) ...
Processing triggers for man-db ...
Setting up esniper (2.24.0-1) ...
goku:/etc/apt# apt-get update
Hit http://volatile.debian.org lenny/volatile Release.gpg
Hit http://volatile.debian.org lenny/volatile Release
Hit http://ftp.it.debian.org lenny Release.gpg
Hit http://ftp.it.debian.org testing Release.gpg
Hit http://security.debian.org lenny/updates Release.gpg
Hit http://ftp.it.debian.org unstable Release.gpg
Hit http://ftp.it.debian.org lenny Release
Hit http://security.debian.org lenny/updates Release
Hit http://ftp.it.debian.org testing Release
Ign http://volatile.debian.org lenny/volatile/main Packages/DiffIndex
Hit http://ftp.it.debian.org unstable Release
Ign http://volatile.debian.org lenny/volatile/main Sources/DiffIndex
Hit http://volatile.debian.org lenny/volatile/main Packages
Hit http://volatile.debian.org lenny/volatile/main Sources
Ign http://ftp.it.debian.org lenny/main Packages/DiffIndex
Ign http://ftp.it.debian.org lenny/main Sources/DiffIndex
Hit http://ftp.it.debian.org lenny/main Packages
Ign http://security.debian.org lenny/updates/main Packages/DiffIndex
Hit http://ftp.it.debian.org lenny/main Sources
Ign http://security.debian.org lenny/updates/main Sources/DiffIndex
Get:1 http://ftp.it.debian.org testing/main Packages/DiffIndex [2038B]
Get:2 http://ftp.it.debian.org testing/non-free Packages/DiffIndex [2023B]
Get:3 http://ftp.it.debian.org testing/contrib Packages/DiffIndex [1609B]
Hit http://security.debian.org lenny/updates/main Packages
Hit http://ftp.it.debian.org unstable/main Packages/DiffIndex
Hit http://ftp.it.debian.org unstable/non-free Packages/DiffIndex
Hit http://ftp.it.debian.org unstable/contrib Packages/DiffIndex
Hit http://security.debian.org lenny/updates/main Sources
Fetched 5670B in 29s (189B/s)
Reading package lists... Done
goku:/etc/apt# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
 linux-image-2.6.26-2-ixp4xx
The following packages will be upgraded:
 libcups2 libsvn1 libwbclient0 samba samba-common samba-doc smbclient smbfs
 subversion swat winbind
11 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 29.3MB of archives.
After this operation, 344kB of additional disk space will be used.
Do you want to continue [Y/n]?

[ad name=”HTML”]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.