267 votes

Comment puis-je exécuter Debian stable mais installer certains paquets de testing ?

Dites que vous exécutez un serveur et que vous ne voulez pas passer de Stable (Lenny) à Testing (Squeeze) juste pour installer un ou deux paquets requis.

Quel est le meilleur moyen d'installer uniquement certains paquets de Testing ?

9 votes

Voici ce que dit la dernière documentation officielle : Paquets provenant de sources mixtes d'archives.

231voto

SineSwiper Points 2449

Beaucoup de personnes semblent avoir peur de mélanger stable avec testing, mais honnêtement, testing est assez stable en soi, et avec de bonnes préférences et vérifications de solution, vous pouvez éviter la "dérive de stabilité" qui met vos paquets principaux sur le chemin instable.

"Testing est assez stable ??", vous demandez. Oui. Pour qu'un paquet migre de instable à testing, il doit avoir zéro bugs ouverts pendant 10 jours consécutifs. Il est probable que, surtout pour les paquets les plus populaires, quelqu'un va soumettre un rapport de bogue pour une version instable si quelque chose ne va pas.

Même si vous ne voulez pas mélanger les environnements, c'est quand même bien d'avoir l'option là en cas de besoin d'une version plus récente que celle de stable.

Voici ce que je recommande pour mettre en place cela :

Tout d'abord, créez les fichiers suivants dans /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: fait installer une version sauf s'il y a une
# version disponible appartenant à la version cible ou si la version installée
# est plus récente

Paquet: *
Épingler: release a=stable
Priorité de l'épinglage: 900

testing.pref:

# 100 <= P < 500: fait installer une version sauf s'il y a une
# version disponible provenant d'une autre distribution ou si la version installée
# est plus récente

Paquet: *
Épingler: release a=testing
Priorité de l'épinglage: 400

unstable.pref:

# 0 < P < 100: fait installer une version uniquement s'il n'y a pas
# de version installée du paquet

Paquet: *
Épingler: release a=unstable
Priorité de l'épinglage: 50

experimental.pref:

# 0 < P < 100: fait installer une version uniquement s'il n'y a pas
# de version installée du paquet

Paquet: *
Épingler: release a=experimental
Priorité de l'épinglage: 1

(N'ayez pas peur des trucs instable/expérimental ici. Les priorités sont assez basses pour ne jamais installer automatiquement ces choses. Même la branche testing se comportera, car elle ne fera que installer les paquets que vous voulez voir en testing.)

Maintenant, créez un ensemble correspondant pour /etc/apt/sources.list.d:

stable.list: Copiez à partir de votre /etc/apt/sources.list original. Renommez l'ancien fichier en quelque chose comme sources.list.orig.

testing.list: Pareil que stable.list, sauf avec testing.

unstable.list: Pareil que stable.list, sauf avec unstable, et retirez les listes de sécurité.

experimental.list: Pareil que unstable.list, sauf avec experimental.

Vous pouvez également ajouter un oldstable dans sources.lists.d et preferences.d (utilisez une priorité de 1), bien que ce label tende à expirer et disparaître avant le prochain cycle stable. Dans des cas comme celui-ci, vous pouvez utiliser http://archive.debian.org/debian/ et "coder en dur" la version de Debian (etch, lenny, etc.).

Pour installer la version testing d'un paquet, utilisez simplement aptitude install lib-foobar-package/testing, ou plongez simplement dans l'interface graphique d'aptitude et sélectionnez la version à l'intérieur des détails du paquet (appuyez sur entrée sur le paquet que vous regardez).

Si vous rencontrez des plaintes de conflits de paquets, regardez d'abord les solutions. Dans la plupart des cas, la première sera "ne pas installer cette version". Apprenez à utiliser les choix de résolution accepter/rejeter par paquet. Par exemple, si vous installez foobar-package/testing, et que la première solution est "ne pas installer foobar-package/testing", marquez ce choix comme rejeté, et les autres solutions ne suivront plus cette voie. Dans des cas comme ceux-ci, vous devrez probablement installer quelques autres paquets testing.

Si cela devient trop compliqué (comme essayer de mettre à jour libc ou le noyau ou un autre élément central du système énorme), vous pouvez soit rejeter ces voies de mise à jour, soit simplement revenir en arrière sur la mise à jour initiale. Rappelez-vous que cela n'installera des choses en testing/unstable que si vous l'autorisez.

EDIT : Correction de quelques épinglages de priorité et mise à jour de la liste.

126voto

pQd Points 29251

Dans /etc/apt/apt.conf.d, ajoutez le fichier suivant

99defaultrelease:

APT::Default-Release "stable";

dans /etc/apt/sources.list.d - ajoutez des URL pour les sources de test / instables

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

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

deb     http://security.debian.org/         testing/updates  main contrib non-free

exécutez

apt-get update

puis installez ce dont vous avez besoin avec

apt-get -t testing install something

Soyez très très prudent si vous installez des choses qui ont beaucoup de dépendances. Idéalement, ne le faites pas en production.

Vous pouvez également tenter votre chance sur backports ou un référentiel similaire.

59voto

Dave Veffer Points 933

apt_preferences

Définir le niveau par défaut auquel le système devrait effectuer une 'mise à niveau sécurisée' dans le fichier /etc/apt/preferences:
man apt_preferences

Il y a beaucoup de choses que vous pouvez faire avec apt_preferences mais pour des raisons de simplicité...

J'ai eu besoin d'installer un seul paquet (autoMysqlBackup) qui n'était disponible que dans Testing. La solution était d'ajouter ce qui suit à /etc/apt/preferences:

Explanation: Désinstaller ou ne pas installer de versions de paquets d'origine Debian
Explanation: autres que celles de la distro stable
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Avec plusieurs dépôts ajoutés à /etc/apt/sources.list, aptitude ne mettra à jour que vers votre version spécifiée même si des dépôts de versions ultérieures sont répertoriés (dans ce cas, 'stable').

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Donc pour installer ce paquet, vous n'avez qu'à faire:

$ aptitude install -t testing nomDuPaquet

19voto

Alexey Shcherbak Points 341

En ce qui concerne, le conseil général que j'ai toujours vu est "Ne mélangez pas stable avec rien d'autre." La plupart des tutoriels de systèmes mixtes concernent le mélange entre testing et unstable.

La raison semble être que si vous mélangez stable avec testing, des paquets très basiques (comme libc6) nécessiteront des mises à jour (pour installer des logiciels de testing), et une fois que ces paquets basiques passent en testing, tout le système peut dériver de cette façon.

Voici deux alternatives:

  1. Utilisez Backports.
  2. Installez une ligne source de testing, et essayez de construire la version ultérieure que vous voulez à partir de la source.

13voto

tomdeb Points 699

La documentation de debian est exhaustive sur le sujet et je conseille vivement de creuser car elle révélera vraiment la beauté du système debian.

Jetez un œil à Comment maintenir un système mixte, cela expliquera tout ce que vous devez savoir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X