web-dev-qa-db-fra.com

Même paquet de 2 PPA différents dans sources.list.d; Comment forcer l'installation depuis un PPA spécifique?

Le problème:

Disons que j'ai un PPA pour un logiciel (par exemple, Blender par exemple; http://ppa.launchpad.net/thomas-schiex/blender/ubunt ) qui contient, pour certaines raisons, un Python3.6 version.

Ce que je veux réaliser:

Disons que je veux "un meilleur" paquet Python3.6, par exemple à partir d'un ppa dédié python, dans mon cas; http://ppa.launchpad.net/jonathonf/python-3.6/ubunt

La question:

Comment apt a-t-il choisi le paquet à installer et y a-t-il un moyen de dire à apt de l'installer à partir d'un ppa souhaité sur les autres?
Je pense qu’il choisira le paquet le plus récent (je me trompe?), Mais si, pour certaines raisons, je veux conserver une version plus ancienne et spécifique?

L'exemple avec python3.6 est "seulement" un exemple ici, cela peut être utile pour tous les paquets .

Note à propos du doublon:
Même si la réponse dans les liens suggérés dans les commentaires est la même, les points d’entrée, c’est-à-dire "la question", sont notés exactement de la même manière et de nombreuses personnes peuvent trouver la réponse via ce résultat de recherche au lieu du autre. Donc, à mon humble avis et à proprement parler, la réponse est un peu un doublon, pas la question.

5
s.k

Comme vous l'avez deviné, apt va installer la dernière version disponible dans vos sources.

Par exemple:

$ apt-cache madison firefox

   firefox | 61.0.1+build1-0ubuntu0.18.04.1 | http://archive.ubuntu.com/ubuntu bionic-updates/main AMD64 Packages
   firefox | 61.0.1+build1-0ubuntu0.18.04.1 | http://security.ubuntu.com/ubuntu bionic-security/main AMD64 Packages
   firefox | 59.0.2+build1-0ubuntu1 | http://archive.ubuntu.com/ubuntu bionic/main AMD64 Packages

Comme vous pouvez le constater, il existe deux versions différentes de Firefox à installer, vérifions celle qui va être installée:

$ apt-cache policy firefox | head -3
firefox:
  Installed: (none)
  Candidate: 61.0.1+build1-0ubuntu0.18.04.1

Comme vous pouvez le voir, la dernière version va être installée (c'est le candidat à l'installation)

Vous pouvez utiliser:

Sudo apt install package-name=version

par exemple:

Sudo apt install firefox=59.0.2+build1-0ubuntu1

installer une ancienne version d'un logiciel.

Au lieu de pining , vous pouvez apt-mark pour empêcher sa mise à niveau:

Sudo apt-mark hold firefox
6
Ravexina