Priorizar repositórios no Ubuntu

3

Temos algumas fontes de PPA em alguns de nossos servidores, e nos colocamos em /etc/apt/sources.list.d . Alguns desses repositórios fornecem os mesmos pacotes (em termos de nomes), mas versões diferentes e possivelmente binários diferentes. Existe uma maneira de como podemos PRIORIZAR um repo sobre outro?

Eu dei uma leitura ao tutorial apt_preferences, mas não poderia ser mais obscuro e não encontrei as respostas para a minha pergunta. Aqui está a situação. Temos as seguintes fontes:

$ ls -l /etc/apt/sources.list.d 
total 12
-rw-r--r-- 1 root root 66 Jan  2 16:50 nginx-source.list
-rw-r--r-- 1 root root 84 Jan  2 16:49 ruby-ng-experimental-source.list

em que nginx-source.list :

deb     http://ppa.launchpad.net/nginx/stable/ubuntu precise main

e ruby-ng-experimental-source.list :

deb     http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu precise main

Ambas as fontes fornecem pacotes nginx-full de versões diferentes, etc. Quando eu listo as prioridades, ruby-ng-experimental-source.list está no topo da saída, portanto o nginx-full é instalado a partir desse diretório:

$ apt-cache policy nginx-full                                 
nginx-full:
  Installed: 1:1.2.3-1~38~precise1
  Candidate: 1:1.2.6-1~43~precise1
  Version table:
     1:1.2.6-1~43~precise1 0
        500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages
 *** 1:1.2.3-1~38~precise1 0
        100 /var/lib/dpkg/status
     1.4.1-1ppa0~precise 0
        500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages
     1.1.19-1ubuntu0.1 0
        500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages
     1.1.19-1 0
        500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages

Como priorizo o repo listado em nginx-source.list?

Eu tentei algo assim:

$ cat /etc/apt/preferences
Package: nginx-full
Pin: origin http://ppa.launchpad.net/nginx/stable/ubuntu
Pin-Priority: 1000

Package: nginx-full
Pin: origin http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu
Pin-Priority: 100

Mas isso mudou as prioridades de TODAS as fontes - ou algo assim?

$ apt-cache policy nginx-full  
nginx-full:
  Installed: 1:1.2.3-1~38~precise1
  Candidate: 1:1.2.6-1~43~precise1
  Package pin: (not found)
  Version table:
     1:1.2.6-1~43~precise1 1000
        500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages
 *** 1:1.2.3-1~38~precise1 1000
        100 /var/lib/dpkg/status
     1.4.1-1ppa0~precise 1000
        500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages
     1.1.19-1ubuntu0.1 1000
        500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages
     1.1.19-1 1000
        500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages

Obrigado pelas respostas!

    
por gyre 10.05.2013 / 18:16

1 resposta

3

Priorizar via Pin: origin não funciona no seu caso porque espera um nome de host como argumento:

Pin: origin ppa.launchpad.net

Como os dois repos estão em ppa.launchpad.net , isso não ajudará você.

Você pode encontrar o motivo pelo qual você recebe a versão inferior aqui:

link

O número da versão 1.4.1-1ppa0~precise está faltando a parte da época, então isso é interpretado pelo apt como 0:1.4.1-1ppa0~precise , que é menor que 1:1.2.6-1~43~precise .

Você poderia, portanto, tentar fixar o número da versão:

Pin: version 0:*

Outra forma seria fixar a opção release com o nome do emissor do repo:

Pin: release o=<issuer>

Para descobrir o valor correto para <issuer> em seus diferentes repositórios, execute apt-cache policy sem argumentos.

    
por 11.05.2013 / 15:51