Atribuir maior prioridade ao PPA

13

Estou tentando descobrir como atribuir maior prioridade a um PPA em detrimento de outro PPA. Eu dei uma olhada no monte de respostas neste fórum, mas nenhuma delas resolve meu problema.

Temos duas fontes de PPA em alguns de nossos servidores, nas quais mantemos arquivos separados /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 PRIORIZAR um repo sobre outro?

Eu li o tutorial apt_preferences, mas não poderia ser mais obscuro e não encontrou as respostas para 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

onde o nginx-source.listconteúdo é:

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

e o ruby-ng-experimental-source.listconteúdo é:

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

Ambas as fontes fornecem um pacote nginx-full de versões diferentes, etc. Quando listo as prioridades, o ruby-ng-experimental-source.list está no topo da saída, portanto o nginx-full é instalado a partir desse repositó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 no nginx-source.list sobre o que está no topo da lista agora? 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 ambas as fontes para o mesmo número - ou algo assim? Portanto, isso NÃO mudou as prioridades e o nginx-full ainda está sendo instalado no PPA do brightbox

$ 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

Alguém tem alguma idéia de como conseguir o que estou tentando fazer?

milosgajdos
fonte

Respostas:

15

Aqui está um exemplo de /etc/apt/preferences

mint@mint ~ $ cat /etc/apt/preferences
Package: *
Pin: release o=linuxmint
Pin-Priority: 700

Package: *
Pin: origin packages.linuxmint.com
Pin-Priority: 700

Package: *
Pin: release o=Ubuntu
Pin-Priority: 500

Você provavelmente precisará executar apt-get updatedepois de criar o arquivo.

GM-Script-Writer-62850
fonte
O arquivo / etc / apt / preferências não existe no 13.04, embora o arquivo /etc/apt/preferences.d/ exista, mas seja um diretório vazio.
Ainda outro usuário
1
O arquivo não é o estoque que você acabou de criá-la
GM-Script-Writer-62850
3

Resposta curta: defina a prioridade de fixação para menos de 0 e defina o = LP-PPA- *, por exemplo

Package: nginx-full
Pin: release o=LP-PPA-brightbox-ruby-ng-experimental
Pin-Priority: -10

Citação de apt_preferences-manpage:

How APT Interprets Priorities
...
P < 0
prevents the version from being installed

Mais informações: http://manpages.ubuntu.com/manpages/raring/en/man5/apt_preferences.5.html e https://help.ubuntu.com/community/PinningHowto .

Clausi
fonte