Comment installer un seul paquet à partir d'un test Debian ou d'unstable sur stable?

41

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 updatesuivi 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 -ine 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. .

un CVn
la source
4
Le moyen habituel de gérer cela consiste à effectuer un backport - en reconstruisant le paquet à partir des sources Debian sur Wheezy. Le paquet que vous utilisez semble être en Perl (ou du moins en dépend), il n’est donc probablement pas difficile de faire un backport. Si vous voulez plus de détails, s'il vous plaît dites-le. Je pourrais probablement vous fournir une solution si vous en avez vraiment besoin.
Faheem Mitha

Réponses:

15

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.listle /etc/apt/preferencesfichier suivant :

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

La valeur 500 est la valeur par défaut pour unstable. Essayons donc de vérifier iceweasel:

# 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é à partir de la branche testing car il avait la priorité la plus haute.

Essayez de changer les priorités pour:

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

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910
Mikhail Morfikov
la source
sudo apt-get -u install kpcli/jessieme donne toujours 316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.avec vos priorités suggérées. Si je le fais apt-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 ...
CVn
OK, j'ai quelque chose. On dirait que le truc était d'utiliser Package: kpcli*(plutôt que Package: kpcli) et ensuite un Package: * 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!
un CVn
25

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:

deb http://ftp.debian.org/debian stretch main

Ensuite, pour définir la version par défaut, créez un fichier /etc/apt/apt.conf.d/default-releasecontenant:

APT::Default-Release "jessie";

(Dans Wheezy, je pense apt.conf.dn’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 kpcline pas avoir à vous soucier de vos priorités.

Remarque: @amc a souligné dans les commentaires que si vous utilisez aptau lieu de aptitude, vous devez utiliser "stable"comme Default-Releaseau lieu de "jessie". Merci! (Bien sûr, vous pouvez également utiliser aptitudece paramètre.)

Florian Jacob
la source
… Cela ressemble à une façon très astucieuse de faire cela. Pourquoi n'est-ce pas officiellement accepté?
JamesTheAwesomeDude
1
Je reçoisThe value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
Steven Penny
1
vous devez utiliser "stable" / "testing" / etc. au lieu de "jessie" / "stretch" pour la version par défaut et lorsque vous utilisez apt
amc
6

Pin: release a=wheezydevrait être Pin: release n=wheezy, peut-être.

De la page de manuel :

L'enregistrement suivant attribue une priorité élevée à toutes les versions de paquet appartenant à une distribution dont le nom de code est "jessie".

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

Donc c'est correct!

utilisateur65646
la source
3
Est-ce que cela n'installe pas TOUS les paquets de Jessy?
rubo77