Des fois, je veux vérifier d'où viennent mes paquets. C'est déjà ce que fait apt-show-versions, mais en se concentrant uniquement sur l'aspect distribution (stable/testing/unstable) et non pas sur le site d'où vient le paquet. De plus, je voulais pouvoir préciser un ordre entre les distributions (quand un paquet est à la fois dans unstable et testing, je veux qu'il apparaisse comme venant de testing; quand il est dans un dépôt local que j'ai créé, je veux qu'il apparaisse comme venant de ce dépôt, même s'il est une copie de unstable ou d'experimental).

Du coup, j'ai écrit mon premier programme (sérieux) en Python. La documentation est en anglais.

package_origins [options]

-h|--help
This help text
-l|--list
Just list available distributions
-c|--count
Just display package count by origin
-t|--tabular
Use tabular output format for origin display
-C|--columns=integer
Set the number of columns of the output
-L|--lines=integer
Set the maximal number of packages that can be displayed
-o|--order=string
Set the order in which packages are in the distributions. This is a space-jointed string of stanzas like alias1=site1/archive1 where alias1 is the display name of a distribution of name archive1 at site1.

Le programme lit aussi les dénominations dans un fichier ~/.package_origins sous la même forme, mais avec une origine par ligne. De multiples options -o peuvent être utilisées (elles sont accolées).

Un exemple de fonctionnement:

./package_origins -o 'stable=ftp.fr.debian.org/stable testing=ftp.fr.debian.org/testing unstable=ftp.fr.debian.org/unstable experimental=ftp.fr.debian.org/experimental  multimedia=www.debian-multimedia.org/unstable' -L 20 --columns 40 
,--------------------------------------.
| stable |
`--------------------------------------'
Too many packages (189). Use --tabular or --lines=X (x>=189).
,--------------------------------------.
| testing |
`--------------------------------------'
Too many packages (1529). Use --tabular or --lines=X (x>=1529).
,--------------------------------------.
| unstable |
`--------------------------------------'
Too many packages (317). Use --tabular or --lines=X (x>=317).
,--------------------------------------.
| experimental |
`--------------------------------------'
calendar-google-provider
calendar-timezones enigmail
,--------------------------------------.
| multimedia |
`--------------------------------------'
Too many packages (33). Use --tabular or --lines=X (x>=33).
,--------------------------------------.
| other |
`--------------------------------------'
emacs-snapshot emacs-snapshot-bin-common
emacs-snapshot-common emacs-snapshot-nox
fixkeyboard lipn-archive-keyring
nvidia-kernel-2.6.26-2-amd64
nvidia-kernel-2.6.30-2-amd64
nvidia-kernel-2.6.31-1-amd64
pbuilder-utils rftg rftg-data
,--------------------------------------.
| installed |
`--------------------------------------'
Too many packages (55). Use --tabular or --lines=X (x>=55).