Przypisuj PPA wyższy priorytet

13

Próbuję wymyślić, jak przypisać wyższy priorytet jednemu PPA niż innemu PPA. Przejrzałem kilka odpowiedzi na tym forum, ale żadna z nich nie rozwiązuje mojego problemu.

Na niektórych naszych serwerach mamy dwa źródła PPA, w których umieszczamy osobne pliki /etc/apt/sources.list.d. Niektóre z tych repozytoriów zapewniają te same pakiety (pod względem nazw), ale różne wersje i prawdopodobnie różne pliki binarne. Czy istnieje sposób, w jaki sposób PRIORYTETOWAĆ jedno repo nad drugim?

Przeczytałem samouczek apt_preferences, ale nie mogło być bardziej niejasne i nie znalazłem odpowiedzi na moje pytanie. Oto sytuacja. Mamy następujące źródła:

$ 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

gdzie nginx-source.listtreść jest:

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

a ruby-ng-experimental-source.listtreść to:

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

Oba te źródła dostarczają pełny pakiet różnych wersji nginx itp. Gdy wymienię priorytety, ruby-ng-experimental-source.list znajduje się na górze wyników, stąd nginx-full jest instalowany z tego repozytorium:

$ 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

Jak ustawić priorytet repo wymienionego w nginx-source.list nad tym, który jest teraz na górze listy? Próbowałem czegoś takiego:

$ 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

Ale to zmieniło priorytety obu źródeł na tę samą liczbę - czy coś takiego? Więc to NIE zmieniło priorytetów, a nginx-full wciąż jest instalowany z Brightbox PPA

$ 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

Czy ktoś ma jakiś pomysł, jak osiągnąć to, co próbuję zrobić?

milosgajdos
źródło

Odpowiedzi:

15

Oto przykład /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

Prawdopodobnie będziesz musiał uruchomić apt-get updatepo utworzeniu pliku.

GM-Script-Writer-62850
źródło
/ etc / apt / preferences nie istnieje 13.04, chociaż /etc/apt/preferences.d/ istnieje, ale jest pustym katalogiem.
Jeszcze inny użytkownik
1
Plik nie jest dostępny, po prostu go utworzysz
GM-Script-Writer-62850
3

Krótka odpowiedź: Ustaw priorytet przypinania na mniej niż 0 i ustaw o = LP-PPA- *, np

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

Cytat z apt_preferences-manpage:

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

Więcej informacji: http://manpages.ubuntu.com/manpages/raring/en/man5/apt_preferences.5.html i https://help.ubuntu.com/community/PinningHowto .

Clausi
źródło