Je veux installer un seul paquet (et ses dépendances, mais seulement dans la mesure où elles ne sont pas satisfaisantes dans Wheezy) de Debian Jessie sur mon système Wheezy, sans mettre à niveau "tout et l'évier de la cuisine" vers les versions de Jessie. Plus précisément, je voudrais installer kpcli , qui est disponible dans Jessie mais pas dans Wheezy.
Tout ce que j'ai trouvé indique que je devrais ajouter les référentiels Jessie à ma liste de sources, définir l'épinglage pour tout garder à Wheezy et ne prendre que le seul paquet de Jessie, et il se mettra à peu près en place. Cependant, cela ne se met pas en place pour moi. Si je crée /etc/apt.d/sources.list.d/jessie.list avec le contenu suivant:
deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main
puis créez /etc/apt/preferences.d/jessie avec:
Package: *
Pin: release a=wheezy
Pin-Priority: 1001
Package: kpcli
Pin: release a=jessie
Pin-Priority: 450
et exécutez apt-get -u update
suivi de apt-get -u install kpcli/jessie
, puis je m'attends à ce qu'apt-get récupère kpcli et peut-être une petite poignée d'autres paquets de Jessie, et laisse le reste de mon système installé intact. (Mon système est une installation entièrement à jour de Wheezy.) Alternativement, si j'ai la priorité des broches trop faible, je m'attendrais à ce qu'il ne fasse rien. Au contraire, sur mon système, apt-get veut mettre à jour plusieurs centaines de paquets.
Quoi, exactement, est nécessaire pour installer uniquement ce seul paquet d'une version Jessie tout en laissant le reste de mon système Wheezy intact?
Notez que dans ce cas particulier, le logiciel est en fait écrit en Perl donc il n'y a pas de compilation en binaire ou quelque chose du genre; cependant, il existe une poignée de dépendances du module Perl. Par conséquent, une alternative possible serait d'installer le .deb (téléchargé manuellement) en utilisant quelque chose qui (1) seulement permet de spécifier une seule archive .deb locale à installer, comme dpkg -i
, Et (2) gère les dépendances de manière intelligente, ce que dpkg -i
ne fait pas. Cependant, pour toutes les recherches que j'ai faites à plusieurs reprises et qui n'ont pas réussi à trouver un guide simple à suivre pour le faire, une solution générique (qui fonctionne également pour les packages binaires et compilés) serait idéale .
Pour chaque entrée (stable, test, instable), vous avez une priorité de broche 500. Vous ne devez pas utiliser une broche> 1000. J'utilise 1001 uniquement lorsque je veux rétrograder quelque chose. J'ai des entrées testing + sid + experimental spécifiées dans /etc/apt/sources.list
et les suivants /etc/apt/preferences
fichier:
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900
Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130
La valeur 500 est par défaut pour unstable. Alors, essayons de vérifier la belette:
# apt-cache policy iceweasel
iceweasel:
Installed: (none)
Candidate: 17.0.10esr-1~deb7u1
Version table:
26.0-1 0
130 http://ftp.pl.debian.org/debian/ experimental/main AMD64 Packages
24.2.0esr-1 0
500 http://ftp.pl.debian.org/debian/ sid/main AMD64 Packages
17.0.10esr-1~deb7u1 0
900 http://ftp.pl.debian.org/debian/ testing/main AMD64 Packages
Donc, si j'essayais d'installer iceweasel, il serait téléchargé depuis la branche testing car il a la priorité la plus élevée.
Essayez de changer les priorités pour:
Package: *
Pin: release a=wheezy
Pin-Priority: 900
Package: kpcli
Pin: release a=jessie
Pin-Priority: 910
Il existe en fait un moyen de le faire sans utiliser d'épinglage/priorités. À la place, vous pouvez spécifier la version par défaut à partir de laquelle vous installerez les packages, qui sera ensuite utilisée, sauf indication contraire, à l'aide du paramètre de version cible. Cela fonctionne de la même manière si vous souhaitez uniquement installer les packages sélectionnés, par exemple backports.
Je vais le montrer pour installer les packages de Stretch dans Jessie, car ce sont les stables/tests actuels, mais cela fonctionne de la même manière pour installer les packages Jessie dans Wheezy comme cela avait été demandé à l'origine.
Tout d'abord, ajoutez stretch comme référentiel, par exemple dans /etc/apt/sources.list.d/stretch.list
:
deb http://ftp.debian.org/debian stretch main
Ensuite, pour définir la version par défaut, créez un fichier comme /etc/apt/apt.conf.d/default-release
contenant:
APT::Default-Release "jessie";
(À Wheezy, je pense que apt.conf.d
n'existait pas et vous auriez besoin de mettre cet extrait dans /etc/apt/apt.conf
).
Ensuite, l'installation d'un package à partir de testing est aussi simple que aptitude -t stretch install kpcli
sans que vous ayez à vous soucier des priorités.
Remarque: @amc a souligné dans les commentaires que si vous utilisez apt
au lieu de aptitude
, vous devez utiliser "stable"
comme Default-Release
au lieu de "jessie"
. Je vous remercie! (Bien sûr, vous pouvez également utiliser aptitude
avec ce paramètre.)
Pin: release a=wheezy
devrait être Pin: release n=wheezy
, peut être.
Depuis la page de manuel :
L'enregistrement suivant attribue une priorité élevée à toutes les versions de package appartenant à n'importe quelle distribution dont le nom de code est "Jessie".
Package: * Pin: release n=jessie Pin-Priority: 900
C'est donc correct!