web-dev-qa-db-ja.com

PPAに高い優先度を割り当てる

あるPPAに別のPPAよりも高い優先度を割り当てる方法を見つけようとしています。私はこのフォーラムでたくさんの答えを見ましたが、どれも私の問題を解決しませんでした。

一部のサーバーには2つのPPAソースがあり、それらは/etc/apt/sources.list.dの個別のファイルに保存されます。これらのリポジトリのいくつかは、同じパッケージ(名前の点では)を提供しますが、異なるバージョンと異なるバイナリを提供します。あるレポを別のレポに優先させる方法はありますか?

apt_preferences tutorialを読みましたが、これ以上わかりにくくなることはなく、質問に対する答えが見つかりませんでした。これが状況です。 WEには次のソースがあります。

$ 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

ここで、nginx-source.listコンテンツは次のとおりです。

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

およびRuby-ng-experimental-source.listコンテンツは次のとおりです。

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

これらのソースは両方とも異なるバージョンなどのnginx-fullパッケージを提供します。Ruby-ng-experimental-source.listが出力の上にある優先順位をリストすると、そのリポジトリからnginx-fullがインストールされます。

$ 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

Nginx-source.listにリストされているレポを、リストのトップにあるレポジトリよりも優先するにはどうすればよいですか?私は次のようなものを試しました:

$ 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

しかし、それは両方のソースの優先順位を同じ数に変更しました-またはそのようなものですか?したがって、これは優先順位を変更しておらず、nginx-fullはまだ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

誰もが私がやろうとしていることを達成する方法を知っていますか?

13
gyre

/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

ファイルを作成した後、おそらくapt-get updateを実行する必要があります。

簡単な答え:pinning-priorityを0未満に設定し、o = LP-PPA- *を設定します。

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

Apt_preferences-manpageからの引用:

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

詳細: http://manpages.ubuntu.com/manpages/raring/en/man5/apt_preferences.5.html および https://help.ubuntu.com/community/ PinningHowto

3
Clausi