Comment puis-je spécifier le référentiel à partir duquel un package sera installé? (instantané emacs)

27

Je veux installer emacs-snapshot depuis http://emacs.orebokech.com Mais il y a déjà un emacs-snapshot dans les référentiels d'Ubuntu.

Comment puis-je spécifier le référentiel à partir duquel un package sera installé?

elviejo79
la source

Réponses:

19

Vous pouvez spécifier un référentiel avec -toption. À titre d'exemple, j'ai ajouté le référentiel suivant /etc/apt/sources.listpour installer la dernière version d'Iceweasel:

deb http://mozilla.debian.net/ squeeze-backports iceweasel-release

Comme vous le savez, il y a le même paquet iceweaseldans le dépôt Debian officiel. Si je veux installer Iceweasel à partir de ce dépôt spécifique, je lance:

apt-get install -t squeeze-backports iceweasel

à partir de la page de manuel apt-get:

-t, --target-release, --default-release
           This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
           release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
           the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
           from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
           apt_preferences(5) manual page.

Je pense que c'est une meilleure solution,

Source: /ubuntu/27362/how-to-only-install-updates-from-a-specific-repository/57749#57749

hukko
la source
oui votre solution est meilleure que la mienne.
elviejo79
1
Que faire si vous ne souhaitez pas ajouter ladite source dans votre sources.list?
LittleNooby
12

J'ai trouvé une solution de contournement. J'ai d'abord eu besoin de trouver les dépôts qui avaient le pacakage:

$ apt-cache showpkg emacs-snapshot
Package: emacs-snapshot
Versions: 
1:20100111-1~lenny1 (/var/lib/apt/lists/emacs.orebokech.com_dists_lenny_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/emacs.orebokech.com_dists_lenny_main_binary-amd64_Packages
                  MD5: 906df684c212eabe267e6b5c2e8c2032

1:20090909-1 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-amd64_Packages
                  MD5: 906df684c212eabe267e6b5c2e8c2032


Reverse Depends: ...
...

Dans la section Versions:. Je vois les versions qui proviennent de différents référentiels:

  • 1: 20100111-1 ~ lenny1
  • 1: 20090909-1

Alors maintenant, nous disons simplement à apt ou aptitude d'installer cette version spécifique:

$ sudo aptitude install emacs-snapshot=1:20100111-1~lenny1

nom-package = nom_version

La victoire.

Je ne sais toujours pas comment utiliser un référentiel spécifique. Mais dans ce cas, une version spécifique était suffisante.

elviejo79
la source
1

Il existe un fichier de préférences pour apt. Je pense qu'il est situé sous / etc / apt, mais pas sûr à 100%. Là, vous pouvez définir une priorité plus élevée pour un package d'un référentiel que pour le même package du référentiel Ubunto. Pour la syntaxe exacte, recherchez dans man apt-get. Modifiez le fichier, puis installez comme d'habitude avec apt-get, il récupérera l'origine la plus prioritaire. Assurez-vous au préalable que le paquet de ce dépôt est compilé pour votre distribution (par exemple, un binaire Debian peut rechercher des dépendances aux mauvais endroits) et pour votre version du noyau (cela change assez souvent tout au long du cycle de vie d'une version d'Ubuntu). Sinon, c'est une question de hasard si cela fonctionne.

rumtscho
la source