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


Supposons que vous utilisez un serveur et que vous ne souhaitez pas effectuer la mise à niveau vers Testing (Squeeze) de Stable (Lenny) pour installer simplement un package requis ou deux.

Quel est le meilleur moyen d'installer uniquement certains packages à partir de Testing?


180
2018-06-09 07:53


origine


Voici ce que dit la dernière documentation officielle: Paquets provenant d'une source d'archives mixte. - Alexey


Réponses:


Beaucoup de gens semblent avoir peur de mélanger stabilité et test, mais franchement, le test est assez stable et, avec les préférences et la vérification des solutions appropriées, vous pouvez éviter la "dérive de stabilité" qui met vos packages centraux sur le chemin instable.

"Le test est assez stable ??", tu demandes. Oui. Pour qu'un paquet migre d'unstable à testing, il doit avoir zéro bogue ouvert pendant 10 jours consécutifs. Il y a des chances pour que, surtout pour les paquets les plus populaires, quelqu'un soumette 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 cette option au cas où vous rencontriez quelque chose qui nécessite une version plus récente que celle qui est dans stable.

Voici ce que je recommande pour mettre cela en place:

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

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

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

testing.pref:

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

unstable.pref:

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

experimental.pref:

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

(N'ayez pas peur des éléments instables / expérimentaux ici. Les priorités sont suffisamment faibles pour ne jamais installer automatiquement ces éléments. Même la branche testing se comportera, car elle ne fera qu'installer les packages que vous voulez installer. en test.)

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

security.list:

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

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

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

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

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

Vous pouvez remplacer le miroir steadfast.net par ce que vous voulez. Je recommanderais d'utiliser netselect-apt pour trouver le miroir le plus rapide, et l'utiliser pour votre premier choix. le ftp.us.debian.org peut être utilisé comme une sauvegarde. Il est également important d'utiliser les termes stable, testing, unstable, etc., au lieu de squeeze, wheezy, sid, etc., depuis stable est une cible mouvante et quand viendra le temps de passer à la dernière version stable, apt / aptitude le trouvera automatiquement.

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 "coder en dur" la version de Debian (Etch, Lenny, etc.).

Pour installer la version de test d'un paquet, utilisez simplement aptitude install lib-foobar-package/testing, ou simplement aller dans l'interface graphique d'aptitude et sélectionner la version dans les détails du paquet (appuyez sur la touche entrée du paquet que vous regardez).

Si vous recevez des plaintes concernant des conflits de paquets, 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 accept / rejet par paquet. Par exemple, si vous installez foobar-package / testing et que la première solution est "n’installez pas foobar-package / testing", indiquez ce choix comme étant rejeté et les autres solutions ne basculeront plus jamais vers ce chemin. Dans de tels cas, vous devrez probablement installer quelques autres packages de test.

Si cela devient trop poilu (comme si on essayait de mettre à jour libc, le noyau ou un autre système central énorme), alors vous pouvez soit rejeter ces chemins de mise à jour, soit simplement vous retirer complètement de la mise à jour initiale. Rappelez-vous que vous ne pourrez mettre à jour les choses à testing / unstable que si vous le permettez.


166
2018-04-23 02:38



Merci, j'ai utilisé cette méthode et tout fonctionne comme prévu! - Brad F Jacobs
J'essaie de l'utiliser, mais je ne parviens pas à résoudre les dépendances. Apparemment, ni apt-get, ni aptitude ne cherchera les dépendances dans les dépôts de test. Y a-t-il un moyen de résoudre cela? - Tamás Szelei
Avez-vous exécutez apt-get update après avoir créé les fichiers de configuration? - Flow
IMPORTANT: l’auteur a choisi une valeur de préférence d’épinglage pour stable / security qui est plus haute que la valeur de libération par défaut ... voir serverfault.com/a/653552/120130 pour plus d'informations - Alex Ryan
Cette réponse vient de briser mon système. Après une tentative de faire sudo apt-get updateJ'ai une erreur de mise à jour. Puis repris, ce qui m'a donné Xsession error, redémarré à nouveau, et maintenant je n'ai pas de gui. la /dev/sda1/ est maintenant plein. Génial. - luchonacho


Dans /etc/apt/apt.conf.d ajouter 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 éléments comportant de nombreuses dépendances. De préférence, ne le faites pas en production.

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


90
2018-06-09 07:57



Sensationnel. C'était rapide. Je postais afin de partager les informations que je venais de rencontrer! Joli! - Gareth
Je n'ai jamais utilisé la méthode apt.conf auparavant. Cela semble plus simple que la méthode du fichier de préférences, mais vous offre un contrôle moins précis. - Coops - Coops
La réponse doit être améliorée; cette config va complètement casser les choses maintenant que squeeze est devenu stable et que Lenny est devenu oldstable. - El Yobo
Plus utilisable, veuillez mettre à jour - Lothar
dans les dernières versions de debian, il n'y a pas de fichier apt.conf, mais éditez /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

Définissez le niveau par défaut que le système doit mettre à niveau dans le fichier / etc / apt / preferences:
man apt_preferences

Avec apt_preferences, vous pouvez faire beaucoup de choses, mais dans un souci de simplicité ...

J'avais besoin d'installer un seul package (autoMysqlBackup) disponible uniquement dans Testing. La solution consistait à ajouter ce qui suit dans / 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 mise à niveau que vers la version que vous avez spécifiée, même si les versions ultérieures sont répertoriées (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, il suffit de:

$ aptitude install -t testing packageName 

46
2018-06-09 08:04



C’est aussi une bonne méthode, pas aussi rapide que facile comme apt.conf, mais vous permet de contrôler toutes vos sources de manière relative. - Coops
C’est trop compliqué pour la tâche… Utiliser APT :: Default-Release définit la priorité des broches de la version sur 990 (comme vous le définissez sur 900) et l’épinglage négatif pour le reste n’est pas vraiment nécessaire. de toute façon, lors des mises à niveau distantes, le paquetage stable a toujours la priorité et dès que vous listez quelque chose de manière explicite sur la ligne de commande, sa priorité d'épinglage négative est généralement ignorée. - Raphaël Hertzog
Je ne sais pas comment vous répondre @Raphael. Cela semble être une façon très élégante de faire les choses. J'ai déjà utilisé pinning il y a quelques années, mais je ne l'ai jamais vraiment compris. Les exemples que j'ai utilisés ci-dessus proviennent directement de la page de manuel apt_preferences. - Gareth
Confirmez que cela fonctionne bien sur squeeze - tomfanning
@ Lothar: Cela fonctionne sous Debian 6. Ce n'est pas parce que le fichier n'existe pas que cela ne fonctionne pas. Créez simplement le fichier et ajoutez les paramètres. Extrait de la page de manuel: "S'il n'y a pas de fichier de préférences ou s'il n'y a aucune entrée dans le fichier qui s'applique à une version particulière, la priorité affectée à cette version est la priorité de la distribution à laquelle appartient cette version." - rzetterberg


La documentation de Debian est très étendue sur le sujet et je vous conseille vivement de creuser car elle dévoilera véritablement la beauté du système Debian.

Jettes un coup d'oeil à Comment garder un système mixte, cela expliquera tout ce que vous devez savoir.


12
2018-06-09 08:24



Cela semble être la même méthode que celle utilisée par @pQd dans la réponse. Elle ne s'applique donc pas à debian> = 6.0. De plus, le titre du lien dit "documentation obsolète" maintenant. Également le plus souvent lien seulement répondre. - dequis
Bien que @dequis ait raison en ce que le lien semble être obsolète, je viens de suivre les instructions de Debian 8 (test) pour installer un paquet d'unstable, et tout semble fonctionner parfaitement. Quelqu'un a-t-il un lien vers la documentation à jour? - domsson
C'est probablement ce que vous cherchez:debian.org/doc/manuals/debian-reference/… - tomdeb


Pour ce que cela 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 tutoriels sur les systèmes mixtes sont destinés aux tests de mélange et instables.

Le raisonnement semble être que si vous mélangez stabilité et test, des paquets très basiques (comme libc6) nécessiteront des mises à jour (afin d'installer des logiciels à partir de tests), et une fois que ces paquets de base passent aux tests, l'ensemble du système peut dériver de cette façon.

Voici deux alternatives:

  1. Utilisation Backports.
  2. Installez une ligne source à partir des tests et essayez de construisez la version la plus récente que vous voulez depuis le source.

10
2018-06-09 13:09



Je suis d'accord. J'ai juste essayé de mettre à jour libdvdread4 à partir d'un test en raison d'un bogue dans la version de Wheezy / stable. Il veut cependant importer la dernière libc. Je viens donc de récupérer le paquet source pour libdvdread4 chez stable et de le corriger avec le changement de source à une ligne et de le reconstruire. Bien mieux que de tirer dans toutes sortes de paquets de tests. Maintenant, tous les paquets sont toujours les "stables" et je n'ai que le changement d'une ligne dont j'ai besoin. - dgrant


Une autre façon, qui pourrait empêcher d’installer trop de dépendances à partir de Testing ou de Sid, est la suivante: vous demandez à apt-get d’obtenir le code source du paquet à partir de Testing ou de Sid et de créer un paquet pour votre système à l’aide des outils Debian (inutile 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 transférer en arrière-plan un paquet sid sur testing ou stable?

Installez le source Debian (et les outils de développement, en particulier   debhelper, devscripts et build-essential), puis construisez 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 debs résultants doivent être dans le répertoire courant et peuvent être   installé avec dpkg -i the.deb.


7
2018-03-13 17:02





Je le fais depuis longtemps pour pouvoir affirmer que le système est suffisamment sûr et peut être rendu pratique. Avec la configuration stable ci-dessous, la version stable sera installée par défaut, mais Aptitude vous permettra également de choisir la 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 ont besoin de backports et d'unstable ajoutés, en réduisant la priorité d'épinglage des paquets backports / unstable, et les paramètres d'affichage d'aptitude doivent être modifiés pour afficher l'épinglage.

  • Créer un '/etc/apt/apt.conf.d/10defaultrelease' et en faire le contenu comme suit:
Apt :: default-Release "stable";
  • Modifier votre '/etc/apt/sources.list' pour ajouter des sources unstable et backports afin qu'il ressemble à 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/
deb http://backports.debian.org/debian-backports squeeze-backports main

# instable
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

# non libre ex. soleil java
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • modifier etc/apt/preferences épingler un fichier - si le fichier n'existe pas, créez-le.
# Priorités d'épinglage du paquet
# Voir http://wiki.debian.org/AptPreferences et http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# Le NIP le plus élevé du shell shell est installé
#
# Les paramètres par défaut sont les suivants et s’ajoutent à nos 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 non installées et n'appartenant pas à la version cible
# 100 - pour les paquets déjà installés, cela signifie aussi les autres versions du même paquet
# 1 - pour les paquets expérimentaux; forfaits avec "NotAutomatic: yes"
#
# Nos épinglettes
# 400 - les backports pouvant être installés en toute sécurité sans qu'il soit nécessaire de mettre à jour d'autres packages
# 50 - Les paquets instables, l'installation imposée dans l'écran des détails, peuvent entraîner des conflits

Paquet: *
Pin: release n = squeeze-backports
Priorité de broche: 400

Paquet: *
Pin: relâchez a = instable
  • Créer '/etc/apt/apt.conf.d/100guiconf' et pour configurer Aptitude afin qu’il affiche des informations d’épinglage.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";

4
2018-02-04 22:59



Juste une mise à jour qui, en plus de ce qui précède, j'ai décidé d'exécuter tous mes packages système à partir des référentiels de développement 'testing'. Donc dans source.list il devrait dire nom de code jessie au lieu de squeeze. La politique de Debian testing est presque stable et les paquets sont presque aussi neufs que depuis le unstable dépôt. Je manque d'espace ici, alors jetez un coup d'œil à: wiki.debian.org/DebianReleases, wiki.debian.org/StableUpdates, et wiki.debian.org/StableProposedUpdates; les deux derniers sont des sources de référentiel supplémentaires. - Daniel Sokolowski


Si votre sélection de packages est plus complexe ou si l'installation est 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 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 lorsque seulement un ou deux packages sont en cours d'installation et j'utilise cette méthode pour automatiser et gérer les installations dans le 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 qu'il serve les fichiers du référentiel statique. Protégez éventuellement le référentiel avec un certificat de sécurité et une authentification de base.

Pour gérer automatiquement votre référentiel privé et extraire les mises à jour depuis l'amont, insérez ce qui précède dans un script et exécutez-le à partir d'un travail cron.

Pour configurer votre poste client, sur votre poste 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:password@private.repository.example.com/ 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 maintenir votre ordinateur client et extraire toutes les mises à jour de votre référentiel privé, sur votre ordinateur client:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

2
2017-07-06 18:53





Une autre option consiste à télécharger le paquet source à partir de testing. APT peut construire automatiquement le paquet source après l'avoir téléchargé. De cette façon, vos packages stables ne seront pas affectés par les tests de mise à jour. Le seul inconvénient est qu'il faudra plus de temps que le simple téléchargement et l'installation du paquet binaire.

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

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

Si vous souhaitez simplement suivre les tests en cours et non les tests à venir, remplacez "testing" par le nom de code actuel (à ce jour, il s'agit de "buster")


0
2018-02-16 03:15