Sources de paquets : les bases

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

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 dans le répertoire /etc/apt/sources.list.d/ sous forme de plusieurs fichiers.

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 « Jessie », la version stable à l’heure de l’écriture de ces lignes.

Recommandé si vous découvrez Debian :

## Debian Jessie - dépôts officiels

 deb http://ftp.fr.debian.org/debian/ jessie main
#deb-src http://ftp.fr.debian.org/debian/ jessie main
 deb http://security.debian.org/ jessie/updates main
#deb-src http://security.debian.org/ jessie/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.

/!\ Attention : Le système de paquet est la base de Debian, en modifier les sources sans une bonne connaissance de ce que l’on fait peut rendre un système inutilisable !


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).

/!\ Attention : Avant d’utiliser une version autre que la version stable de Debian, assurez-vous de vous être documenté sur le paquet apt-listbugs !

Vous pouvez prendre quelques minutes avant de passer au choix de la branche / des branches

- Conseils aux nouveaux arrivants pour ne pas endommager leur système Debian

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 :

stretch * Debian GNU/Linux 9.0 (Stretch) — l’actuelle version stable sortie le 17 juin 2017;
jessie * Debian GNU/Linux 8.0 (Jessie) — l’actuelle version old stable sortie le 26 avril 2015;
wheezy * Debian GNU/Linux 7.0 (Wheezy) — version stable obsolète sortie le 4 mai 2013 ;
squeeze * Debian GNU/Linux 6.0 (Squeeze) — version stable obsolète 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.

/!\ Attention : Ce point de montage doit être spécifié dans le fichier /etc/fstab !

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

/!\ Attention : Cette partie ne concerne que ceux voulant installer une Debian stable !

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 une 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".

/!\ Attention : Il est important lors de l’ajout d’un dépôt tiers de lui assigner une priorité inférieure aux dépôts officiels Debian ! De cette façon votre système ira y chercher uniquement les paquets manquant aux dépôts officiels.

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://www.deb-multimedia.org/ 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.

/!\ Attention : La règle d’or du fichier preferences : Plus ce fichier est court, plus le comportement d’APT sera prévisible !

/!\ Attention : Ajouter un dépôt tiers est une des rares façons de nuire à la sécurité de son système ! N’ajoutez jamais de dépôt auquel vous ne faites pas une confiance absolue ! En cas de doute, n’hésitez pas à demander des renseignements sur le forum.

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

Problèmes de clés

« Dynamic mmap ran out of room »

Pour aller plus loin

la documentation officielle sur debian.org



source sur debian-fr.org : Sources.list au carré ou minimaliste

source sur debian-fr.org : Sources de paquets : les bases (sources.list)

source sur debian-fr.org : Sources de paquets : les bases - DISCUSSION -

source interne : Sources.list


Création de l’article :

Vv222 (discussion) 19 octobre 2012 à 16:42 (CEST)

Dernière mise-à-jour :

Vv222 (discussion) 9 juin 2014 à 20:01 (CEST)