web-dev-qa-db-fra.com

Comment puis-je exécuter Debian stable mais installer certains paquets à partir des tests?

Supposons que vous exécutez un serveur et que vous ne souhaitez pas passer à Testing (Squeeze) de Stable (Lenny) pour simplement installer un ou deux packages requis.

Quelle est la meilleure façon d'installer uniquement certains packages de Testing?

210
Gareth

apt_preferences

Définissez le niveau par défaut que le système doit "mettre à niveau en toute sécurité" 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'avais besoin d'installer un seul package (autoMysqlBackup) qui n'était disponible que dans Testing. La solution consistait à ajouter ce qui suit à/etc/apt/preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

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

Avec plusieurs référentiels ajoutés à /etc/apt/sources.list, aptitude ne sera désormais mis à niveau que vers votre version spécifiée, même si les référentiels des versions ultérieures sont répertoriés (dans ce cas, "stables").

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, tout ce que vous avez à faire est de:

$ aptitude install -t testing packageName 
49
Gareth

Beaucoup de gens semblent avoir peur de mélanger stable avec testing, mais franchement, le test est assez stable en soi, et avec des préférences et une vérification de la solution appropriées, vous pouvez éviter la "dérive de stabilité" qui met vos paquets de base sur le chemin instable.

"Les tests sont assez stables ??" , demandez-vous. Oui. Pour qu'un package migre d'instable vers testing, il doit avoir zéro bogue ouvert pendant 10 jours consécutifs. Les chances sont que, en particulier pour les packages 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, il est toujours agréable d'avoir l'option là-bas au cas où vous rencontriez quelque chose qui nécessite une version plus récente que celle de stable.

Voici ce que je recommande pour la configuration:

Créez d'abord les fichiers suivants dans /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

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

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

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

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(N'ayez pas peur des trucs instables/expérimentaux ici. Les priorités sont suffisamment basses pour ne jamais installer automatiquement ces trucs. Même la branche testing se comportera, car elle n'installera que les packages que vous voulez être lors des tests.)

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

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

testing.list: Identique à stable.list, sauf avec testing.

unstable.list: Identique à stable.list, sauf avec unstable, et supprimez les listes de sécurité.

experimental.list: Identique à 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 surnom ait tendance à expirer et à disparaître avant le prochain cycle stable. Dans de tels cas, vous pouvez utiliser http://archive.debian.org/debian/ et "hardcode" la version Debian (etch, lenny, etc.).

Pour installer la version de test d'un package, utilisez simplement aptitude install lib-foobar-package/testing, ou sautez 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 recevez des plaintes concernant des conflits de packages, examinez d'abord les solutions. Dans la plupart des cas, le premier sera "ne pas installer cette version". Apprenez à utiliser les choix de résolveur d'acceptation/rejet par package. 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 se tourneront plus jamais vers ce chemin. Dans de tels cas, vous devrez probablement installer quelques autres packages de test.

Si cela devient trop poilu (comme s'il essayait de mettre à niveau libc ou le noyau ou un autre énorme système de base), alors vous pouvez soit rejeter ces chemins de mise à niveau soit simplement revenir de la mise à niveau initiale. N'oubliez pas que cela ne mettra à niveau les éléments vers testing/unstable que si vous le permettez.

EDIT: correction de quelques broches prioritaires et mise à jour de la liste.

187
Brendan Byrd

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

99defaultrelease:

APT::Default-Release "stable";

dans /etc/apt/sources.list.d - ajouter des URL pour tester/sources 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

courir

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. Ne le faites de préférence pas en production.

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

102
pQd

Pour ce que ça vaut, le conseil général que j'ai toujours vu est "Ne mélangez pas stable avec quoi que ce soit." La plupart des didacticiels sur les systèmes mixtes sont destinés à mélanger les tests et les tests instables.

Le raisonnement semble être que si vous mélangez stable avec testing, des packages très basiques (comme libc6) nécessiteront des mises à jour (afin d'installer le logiciel à partir de testing), et une fois que ces packages de base passeront à testing, le système entier pourra dériver de cette façon.

Voici deux alternatives:

  1. Utilisez Backports .
  2. Installez une ligne source à partir des tests et essayez de construire la version ultérieure que vous voulez à partir de la source .
13
Telemachus

La documentation debian est vaste sur le sujet et je conseille fortement de creuser car elle dévoilera vraiment la beauté du système debian.

Jetez un oeil à Comment garder un système mixte , il vous expliquera tout ce que vous devez savoir.

12
tomdeb

Une autre façon, qui pourrait empêcher d'installer trop de dépendances de Testing ou Sid, est la suivante: vous dites à apt-get d'obtenir la source du paquet à partir de Testing ou Sid et de créer un paquet pour votre système à l'aide des outils Debian (pas besoin de bricoler manuellement avec des sources).

Citant d'ici:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Comment puis-je rétroporter un paquet sid vers testing ou stable?

Installez la source Debian (et les outils de développement, en particulier debhelper, devscripts et build-essential), puis compilez le paquet.

Pas à pas:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Les deb résultants doivent être dans le répertoire courant et peuvent être installés avec dpkg -i the.deb.

7
gerlos

Je le fais depuis longtemps pour être sûr de pouvoir dire qu'il est suffisamment sûr et peut être pratique. Avec la configuration ci-dessous, la version stable sera installée par défaut, mais Aptitude vous permettra également de choisir une version rétroportée ou instable si vous le souhaitez:

enter image description here

Il y a quatre choses à modifier, la version d'épinglage par défaut doit être définie, les sources doivent être rétroportées et instables ajoutées, ce qui réduit la priorité d'épinglage des backports/packages instables, et les paramètres d'affichage d'aptitude doivent être modifiés pour afficher l'épinglage.

  • Créez un '/ etc/apt/apt.conf.d/10defaultrelease' et créez son contenu comme suit:
 Apt :: default-Release "stable"; 
  • Modifiez votre '/ etc/apt/sources.list' pour ajouter des sources instables et rétroportées afin qu'elles ressemblent à ceci:
 # deb cdrom: [Debian GNU/Linux 6.0.0 _Squeeze_ - Multi-architecture officielle AMD64/i386 NETINST # 1 20110205-14: 45]/squeeze main 
 
 deb http : //ftp.us.debian.org/debian/ squeeze main 
 deb-src http://ftp.us.debian.org/debian/ squeeze main 
 
 deb http://security.debian.org/ squeeze/updates main 
 deb-src http://security.debian.org/ squeeze/updates main 
 
 # squeeze-update , auparavant connu sous le nom de "volatile" 
 deb http://ftp.us.debian.org/debian/ squeeze-updates main 
 deb-src http://ftp.us.debian.org/debian/squeeze-updates main 
 
 # squeeze backports 
 # http://backports.debian.org/Instructions/[.____.[dede http: // backports. debian.org/debian-backports squeeze-backports main 
 
 # unstable 
 # http://wiki.debian.org/AptPreferences[.____. E5Edeb http: // ftp.us.debian.org/debian/ unstable main 
 deb-src http://ftp.us.debian.org/debian/ unstable main 
 
 # non libre ex . Sun Java 
 # Deb http://ftp.us.debian.org/debian/ squeeze non libre 
 # Deb-src http://ftp.us.debian.org/debian/ presser non libre 
  • Éditer etc/apt/preferences épingler le fichier - si le fichier n'existe pas, créez-le.
 # Priorités d'épinglage de packages 
 # Voir http://wiki.debian.org/AptPreferences et http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences 
 # 
 # Dans l'écrou Shell le plus élevé PIN s'installe 
 # 
 # Le défaut par défaut est le suivant qui s'ajoute à notre paramètres: 
 # 990 - pour les versions qui ne sont pas installées mais appartiennent à notre paramètre `APT :: Default-Relase" stable "`. 
 # 500 - pour les versions qui ne sont pas installées et qui le font n'appartiennent pas à la version cible 
 # 100 - pour les packages déjà installés, cela signifie également d'autres versions du même package 
 # 1 - pour les packages expérimentaux; les packages avec "NotAutomatic: yes" 
 # 
 # Nos pinnings 
 # 400 - backports qui peuvent être installés en toute sécurité sans avoir besoin de mettre à jour d'autres packages 
 # 50 - packages instables, installation forcée dans l'écran de détails, peut entraîner des conflits 
 
 Package: * 
 Broche: relâcher n = squeeze-backports 
 Pin-P riorité: 400 
 
 Emballage: * 
 Broche: relâchez a = instable 
  • Créez '/ etc/apt/apt.conf.d/100guiconf' et configurez Aptitude pour qu'il affiche les informations d'épinglage.
 Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i"; 
4
Daniel Sokolowski

Si votre sélection de packages est plus complexe ou si l'installation sera répétée sur plusieurs machines, vous pouvez envisager de configurer un référentiel privé qui reflète un sous-ensemble des référentiels officiels. Cela nécessite un peu de travail pour configurer le référentiel mais la récompense est facile à maintenir avec un strict minimum de configuration sur chaque client et des résultats reproductibles lors de la réalisation de dizaines d'installations. Je trouve cela utile même lorsqu'un seul ou deux packages sont installés, et j'utilise cette méthode pour automatiser et maintenir les installations cloud. Un seul serveur sur un VPS bon marché peut gérer des dizaines de référentiels privés.

Pour configurer votre serveur de référentiel privé:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,AMD64 -distribution=stretch -component=roundcube -label="Your Name" -Origin="Your Name" stretch-roundcube

Configurez ensuite le serveur Web de votre choix pour servir les fichiers du référentiel statique. Peut-être protéger le référentiel avec un certificat de sécurité et une authentification de base.

Pour maintenir automatiquement votre référentiel privé et récupérer les mises à jour en amont, placez ce qui précède dans un script et exécutez à partir d'une tâche cron.

Pour configurer votre machine client, sur votre machine client:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:[email protected]/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Pour gérer votre machine client et récupérer toutes les mises à jour de votre référentiel privé, sur votre machine client:

# Update.
apt-get update

# Upgrade.
apt-get upgrade
2
Monica For CEO

Une autre option consiste à télécharger à la place le package source de testing. APT peut construire automatiquement le paquet source après l'avoir téléchargé. De cette façon, vos paquets stables ne seront pas affectés par les tests de mises à jour. Le seul compromis est que cela prendra plus de temps que le simple téléchargement) et installer le paquet binaire.

Pour configurer APT pour télécharger les packages source à partir des tests, ajoutez simplement:

deb-src http://<your debian mirror here> testing main

Si vous voulez simplement suivre les tests actuels et non les tests futurs, remplacez "testing" par le nom de code actuel (à ce jour, c'est "buster")

1
temy