Sources de paquets : les bases
Cet article a pour but de décrire une branche du système de gestion de paquets APT : les sources de paquets.
Définition
Les différents paquets proposés à l'installation sont placés sur des serveurs appelés les « dépôts », et c'est en définissant à quels dépôts votre système aura accès que vous délimiterez la diversité et les versions des programmes disponibles à l'installation sur votre Debian.
Cette liste de dépôts auquel votre système a accès est contenue dans un fichier essentiel à toute Debian : le fichier sources.list (/etc/apt/sources.list) ou le dossier (/etc/apt/sources.list.d/).
Le contenu du fichier sources.list
architecture du fichier sources.list
Voici à quoi ressemble un fichier sources.list :
## Debian unstable - dépôts officiels deb http://ftp.fr.debian.org/debian/ unstable main ## Debian testing - dépôts officiels deb http://ftp.fr.debian.org/debian/ testing main deb http://security.debian.org/ testing/updates main ## Debian stable - dépôts officiels deb http://ftp.fr.debian.org/debian/ stable main deb http://ftp.fr.debian.org/debian/ stable-updates main deb http://security.debian.org/ stable/updates main
Les lignes commençant par des dièses sont des commentaires, et ne sont pas prises en compte par APT.
Les lignes nous intéressant ici sont celles de la forme suivante :
deb http://ftp.fr.debian.org/debian/ stable main
Décortiquons donc celle que je viens de vous donner en exemple :
La première partie, « deb », peut exister sous deux formes : « deb » ou « deb-src ». Le choix entre ces deux formes sera expliqué dans la partie sur les codes-source des paquets
Suit une adresse Web, « http://ftp.fr.debian.org/debian/ », qui est tout simplement l'adresse du dépôt où APT pourra aller piocher des paquets.
Chaque dépôt donne généralement accès à une grande quantité de paquets, dans différentes versions. La suite de la ligne sert donc à définir lesquels de ces paquets nous souhaitons utiliser sur notre système. Le choix de ces termes sera expliqué dans la partie sur les branches.
Petite précision : en cas de version de paquet identique se trouvant dans plusieurs dépôts déclarés dans le sources.list, APT téléchargera le paquet depuis le dépôt renseigné en premier dans le sources.list. Ce comportement n'a normalement aucune influence sur le système.
sources.list : Debian stable
Ce fichier sources.list vous donnera accès à une Debian « Wheezy », la version stable à l'heure de l'écriture de ces lignes.
Recommandé si vous découvrez Debian :
## Debian Wheezy - dépôts officiels deb http://ftp.fr.debian.org/debian/ wheezy main deb http://ftp.fr.debian.org/debian/ wheezy-updates main deb http://security.debian.org/ wheezy/updates main
Si vous utilisez Debian pour la première fois, vous pouvez vous arrêter ici et aurez un système parfaitement stable et fonctionnel.
les branches
La suite de cet article poussera un peu plus loin la description du fonctionnement du système de sources de paquets, et cette partie demandera d'assimiler quelques notions essentielles avant de la mettre en application.
Sur le même modèle que le précédent, voici un fichier sources.list vous donnant accès à la version Sid (« unstable ») de Debian :
## Debian unstable - dépôts officiels deb http://ftp.fr.debian.org/debian/ unstable main ## Debian testing - dépôts officiels deb http://ftp.fr.debian.org/debian/ testing main deb http://security.debian.org/ testing/updates main ## Debian stable - dépôts officiels deb http://ftp.fr.debian.org/debian/ stable main deb http://ftp.fr.debian.org/debian/ stable-updates main deb http://security.debian.org/ stable/updates main
Vous pouvez remarquer que cette fois-ci j'ai ajouté les dépôts stable et testing, alors qu'on veut un système en Sid.
La raison en est simple : un paquet peut à tout moment disparaître de Sid, ou y être trop bogué pour être utilisable. Avec les dépôts des versions stable et testing en plus, le système ira automatiquement y chercher les paquets ayant disparu de Sid.
Une autre différence est notable avec le premier fichier sources.list proposé : la version des branches (stable/testing/unstable) n'est plus déclarée avec les noms de code de ces branches (« Wheezy », « Jessie », etc.) mais avec leur appellation générique (« stable », « testing », etc.).
Déclarer « wheezy » dans le premier fichier sources.list permet au système de ne piocher des paquets qu'en version Wheezy, même quand cette dernière ne sera plus la version stable de Debian. De cette façon, le système ne se mettra pas à jour automatiquement vers la nouvelle stable lors de sa sortie sans que vous n'y soyez préparés.
Déclarer « stable » dans ce deuxième fichier sources.list permet le comportement contraire : lorsqu'une nouvelle version stable sortira, votre système ira y prendre ses paquets automatiquement, sans que vous n'ayez à changer quoi que ce soit à votre fichier sources.list. Ce n'est cette fois-ci pas un problème, un utilisateur de Debian Sid devant de toutes façons se tenir prêt à des mises-à-jour régulières (sinon quotidiennes, au moins hebdomadaires).
choisir une branche
Stable, testing, unstable, sont ce qu'on appelle des branches de Debian. Ce sont ces branches qui définissent à quelles versions des paquets le système aura accès.
Wheezy, Jessie, Sid, sont les noms de versions de Debian, et s'ils correspondent à une branche à un moment donné, cela change au cours du temps.
Voici un index des différentes versions de Debian pour vous aider à faire votre choix :
- jessie *La prochaine version de debian;
- wheezy * l'actuelle version stable ;
- squeeze * Debian GNU/Linux 6.0 (Squeeze) — l'actuelle version oldstable sortie le 6 février 2011 ;
- lenny * Debian GNU/Linux 5.0 (Lenny) — version stable obsolète ;
- etch * Debian GNU/Linux 4.0 (Etch) — version stable obsolète ;
- sarge * Debian GNU/Linux 3.1 (Sarge) — version stable obsolète ;
- woody * Debian GNU/Linux 3.0 (Woody) — version stable obsolète ;
- potato * Debian GNU/Linux 2.2 (Potato) — version stable obsolète ;
- slink * Debian GNU/Linux 2.1 (Slink) — version stable obsolète ;
- hamm * Debian GNU/Linux 2.0 (Hamm) — version stable obsolète.
La branche testing
La branche testing peut paraître un choix attirant, étant parfois présentée comme un compromis entre la stabilité de la stable et les versions de paquets récentes de l'unstable. C'est une erreur !
Cette branche n'est pas prévue pour un usage normal, et est uniquement proposée à des fins de test pour la conception de la future stable.
Si vous tenez tout de même à l'utiliser, il faut toujours garder en ligne de compte que des paquets peuvent à tout moment en disparaître. Il ne faut donc jamais déclarer uniquement cette branche dans votre sources.list ! Il est important d'y ajouter les sources de la version stable ou de la version unstable pour qu'APT puisse automatiquement aller y chercher les paquets qui disparaîtraient de testing, sans quoi votre système de paquets pourrait se trouver bloqué à tout moment par un paquet essentiel ayant quitté (temporairement ou non) les dépôts de la testing.
les paquets propriétaires
Les sources.list proposés précédemment dans cet article ne vous permettront pas d'installer des paquets dont le code n'est pas libre sur votre machine.
Si jamais vous en avez besoin, il faut remplacer le « main » en fin de chaque ligne par « main contrib non-free ».
Exemple de ligne pour n'installer que des paquets libres :
deb http://ftp.fr.debian.org/debian/ stable main
Exemple de ligne pour installer des paquets libres et des paquets propriétaires :
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
les codes-source des paquets
Les sources.list précédents permettent d'installer des paquets mais pas d'accéder à leurs sources.
Pour avoir accès aux sources des paquets, il suffit de copier les lignes commençant par « deb » en remplaçant ce dernier par « deb-src ».
Exemple de ligne ne permettant que d'installer des paquets :
deb http://ftp.fr.debian.org/debian/ stable main
Exemple de lignes permettant d'installer des paquets et d'accéder à leur code source :
deb http://ftp.fr.debian.org/debian/ stable main deb-src http://ftp.fr.debian.org/debian/ stable main
apt-p2p
apt-p2p est un programme qui vous permet d'utiliser le système collaboratif de pair à pair pour télécharger vos paquets.
De cette façon, l'utilisation de la bande passante des dépôts est allégée : c'est une manière simple et facile de participer à votre mesure au projet Debian !
Pour l'installer, rien de plus simple, les instructions se trouvent par ici : apt-p2p
utiliser un CD-ROM comme dépôt
Il est tout a fait possible d'utiliser un CD-ROM, DVD ou clé USB en complément ou à la place des dépôts sur Internet. Pour ajouter un CD-ROM, insérez-le dans votre lecteur et utilisez la commande suivante :
# apt-cdrom add
Vous pouvez utiliser l'option -d si vous utilisez un point de montage « exotique » ou si vous utilisez une clé USB.
Extrait du man de apt-cdrom:
-d, --cdrom Point de montage ; spécifie l'emplacement de montage du CD. Ce point de montage doit être spécifié dans /etc/fstab et correctement configuré. Élément de configuration : Acquire::cdrom::mount.
le dépôt Backports
Les dépôts Backports (rétroportages en français) fournissent des versions plus récentes de certains paquets présents en stable pouvant être installés sur une stable.
Si vous voulez y avoir accès, voici un sources.list permettant d'installer une Debian Wheezy et d'y ajouter ponctuellement des paquets des dépôts backports, en fonction de vos besoins :
## Debian Wheezy - dépôts officiels deb http://ftp.fr.debian.org/debian/ wheezy main deb http://ftp.fr.debian.org/debian/ wheezy-updates main deb http://security.debian.org/ wheezy/updates main ## Debian Wheezy - rétroportages deb http://ftp.fr.debian.org/debian/ wheezy-backports main
Avec ce sources.list, vous obtiendrez une Wheezy identique à celle obtenue avec le premier sources.list proposé.
Mais vous pourrez installer des paquets plus récents si le besoin s'en fait sentir.
Exemple avec iceweasel :
apt-get install -t wheezy-backports iceweasel
Une fois un paquet mis-à-jour vers une version des dépôts backports, il continuera à suivre les mises-à-jour de ces dépôts sans action supplémentaire de votre part.
les dépôts tiers, le fichier preferences
Dans certains cas particuliers, vous pourriez avoir à ajouter des dépôts tiers à votre sources.list, par exemple si vous voulez installer un paquet qui n'est pas présent dans les dépôts officiels de Debian.
Il est essentiel dans ce cas de comprendre l'utilité et le fonctionnement du fichier preferences (/etc/apt/preferences) si vous ne voulez pas casser votre système en mélangeant différentes versions de paquets incompatibles.
les priorités
Chaque dépôt a une priorité qui lui est propre, par défaut 500. Cette priorité est assignée aux paquets venant de ce dépôt.
Le système installera toujours la version de paquet ayant la priorité la plus élevée, ou en cas d'égalité la version la plus élevée.
Un exemple :
legoth@Janus:~$ apt-cache policy libavcodec52 libavcodec52: Installé : 4:0.5.8-1 Candidat : 4:0.5.8-1 Table de version : 5:0.7.12-0.0 0 400 http://debian-multimedia.tryphon.eu/ squeeze/main i386 Packages *** 4:0.5.8-1 0 500 http://security.debian.org/ squeeze/updates/main i386 Packages 100 /var/lib/dpkg/status 4:0.5.6-3 0 500 http://ftp.fr.debian.org/debian/ squeeze/main i386 Packages
Le paquet libavcodec52 est proposé à au système en 3 versions différentes : 5:0.7.12-0.0, 4:0.5.8-1 et 4:0.5.6-3.
Lors de l'installation de ce paquet, le système regarde d'abord les priorités assignées à chaque version :
_5:0.7.12-0.0 : priorité de 400
_4:0.5.8-1 : priorité de 500
_4:0.5.6-3 : priorité de 500
Il doit donc choisir entre les versions ayant la priorité la plus élevée, ici 500, soit : 4:0.5.8-1 et 4:0.5.6-3.
Ici il va choisir la version 4:0.5.8-1, car elle est plus élevée (c'est tout simplement un nombre plus grand) que 4:0.5.6-3.
le fichier preferences
Le fichier preferences ressemble à ceci :
Package: libc6 Pin: release o=Debian, a=stable Pin-Priority: 1000 Package: libc6 Pin: release o=Debian, a=stable-updates Pin-Priority: 1000 Package: * Pin: release o=Debian, a=stable Pin-Priority: 500 Package: * Pin: release o=Unofficial Multimedia Packages, a=stable Pin-Priority: 400 Package: * Pin: release o=Debian, a=unstable Pin-Priority: 300 Package: * Pin: release o=Unofficial Multimedia Packages, a=unstable Pin-Priority: 200
Chaque partie comporte trois lignes : "Package" qui définit un ou des paquets à qui assigner une priorité particulière, "Pin" donne les caractéristiques du dépôt d'origine des paquets auquel assigner cette priorité, "Pin-Priority" définit cette priorité.
Pour prendre l'exemple du fichier preferences cité ici, le premier "paragraphe" assigne un priorité de 1000 à la version du paquet nommé libc6 venant d'un dépôt nommé "Debian" et dont la branche est "stable", tandis que le dernier assigne une priorité de 200 à tous les paquets ("*" signifie tous les paquets) issus d'un dépôt nommé "Unofficial Multimedia Packages" et dont la branche est "unstable".
Comme exemple, voici un couple sources.list/preferences donnant accès à une Debian stable et aux paquets des dépôts Debian Multimedia :
## Debian Wheezy - dépôts officiels deb http://ftp.fr.debian.org/debian/ wheezy main deb http://ftp.fr.debian.org/debian/ wheezy-updates main deb http://security.debian.org/ wheezy/updates main ## Debian Multimedia deb http://mirror.home-dn.net/debian-multimedia wheezy main
Package: * Pin: release o=Unofficial Multimedia Packages Pin-Priority: 400
Ce couple sources.list/preferences a basiquement un comportement identique au premier sources.list présenté, mais permet en plus d'installer des paquets qui ne sont présents que dans les dépôts Multimedia, comme par exemple Avidemux.
Cette page liste un grand nombre de dépôts tiers que vous pouvez utiliser dans votre sources.list : My Debian sources.list
La page suivante décrit de manière plus avancée le système d'étiquetage des paquets : L'étiquetage de paquets via le fichier /etc/apt/preferences
Sujets liés
« Dynamic mmap ran out of room »
Vv222 (discussion) 19 octobre 2012 à 16:42 (CEST)