Je souhaite installer un seul paquet (et ses dépendances, mais uniquement dans la mesure où ceux-ci ne sont pas satisfaisants 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, j'aimerais 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 afin que tout reste à Wheezy. Cependant, cela ne tombe pas 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 courez apt-get -u update
suivi de apt-get -u install kpcli/jessie
, alors je m'attends à ce que 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 complètement à jour de Wheezy.) Sinon, si la priorité des broches est trop basse, je m'attendrais à ce que rien ne se passe. Sur mon système, apt-get souhaite plutôt mettre à jour plusieurs centaines de paquets.
Que faut-il exactement pour installer ce seul paquet d'une version de Jessie tout en laissant intacte le reste de mon système Wheezy?
Notez que dans ce cas particulier, le logiciel est en fait écrit en Perl, il n’ya donc pas de compilation en binaire ou quelque chose du genre; Cependant, il existe une poignée de dépendances de modules Perl. Par conséquent, une alternative possible serait d'installer le fichier .deb (téléchargé manuellement) en utilisant quelque chose qui seul (1) 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 la plaine dpkg -i
ne fait pas. Cependant, malgré toutes les recherches que j'ai effectuées à plusieurs reprises et qui n'ont pas abouti à un guide simple à suivre, une solution générique (qui fonctionne aussi bien pour les paquets binaires compilés) serait très utile. .
Réponses:
Pour chaque entrée (stable, testing, unstable), vous avez la priorité NIP 500. Vous ne devez pas utiliser NIP> 1000. J'utilise 1001 uniquement lorsque je souhaite rétrograder quelque chose. J'ai les entrées testing + sid + expérimentales spécifiées dans
/etc/apt/sources.list
le/etc/apt/preferences
fichier suivant :La valeur 500 est la valeur par défaut pour unstable. Essayons donc de vérifier iceweasel:
Donc, si j'essayais d'installer Iceweasel, il serait téléchargé à partir de la branche testing car il avait la priorité la plus haute.
Essayez de changer les priorités pour:
la source
sudo apt-get -u install kpcli/jessie
me donne toujours316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.
avec vos priorités suggérées. Si je le faisapt-cache policy perl
(l’un des paquets qu’il souhaite mettre à niveau), il indique 5.18.1-5 comme candidat à la priorité 500 et installe 5.14.2-21 + deb7u1 également à la priorité 500. On dirait presque, pour une raison quelconque, apt ne relève pas les priorités ...Package: kpcli*
(plutôt quePackage: kpcli
) et ensuite unPackage: *
Pin: release o=Debian
Pin-Priority: -10
à la fin. Ensuite, bien sûr, il existe des dépendances difficiles conduisant à des versions de Perl uniquement disponibles dans Jessie, qui nécessite à son tour une nouvelle libc6! Honnêtement, je ne suis pas sur le point de suivre cette voie, mais cela m'a au moins permis d'obtenir le résultat recherché. Merci!Il y a en fait un moyen de le faire sans utiliser d'épingler / priorités du tout. Au lieu de cela, vous pouvez spécifier la version par défaut à partir de laquelle vous installerez les packages, qui seront ensuite utilisés sauf indication contraire à l'aide du paramètre target release. Cela fonctionne de la même manière si vous souhaitez uniquement installer les packages sélectionnés, par exemple, des backports.
Je montrerai cela pour installer des paquets de Stretch dans Jessie, car ce sont les versions actuelles de stable / testing, mais cela fonctionne de la même manière pour installer les paquets de Jessie dans Wheezy comme cela avait été demandé à l’origine.
Premièrement, ajoutez stretch comme référentiel, par exemple dans
/etc/apt/sources.list.d/stretch.list
:Ensuite, pour définir la version par défaut, créez un fichier
/etc/apt/apt.conf.d/default-release
contenant:(Dans Wheezy, je pense
apt.conf.d
n’existait pas et vous auriez besoin de mettre cet extrait dans/etc/apt/apt.conf
).Ensuite, installer un paquet à partir des tests est aussi simple que de
aptitude -t stretch install kpcli
ne pas avoir à vous soucier de vos priorités.Remarque: @amc a souligné dans les commentaires que si vous utilisez
apt
au lieu deaptitude
, vous devez utiliser"stable"
commeDefault-Release
au lieu de"jessie"
. Merci! (Bien sûr, vous pouvez également utiliseraptitude
ce paramètre.)la source
The value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
Pin: release a=wheezy
devrait êtrePin: release n=wheezy
, peut-être.De la page de manuel :
Donc c'est correct!
la source