Xパッケージが必要なPPAを追加したが、使用したり更新を受信したくないYパッケージも追加したとします。同じPPAから特定のパッケージの更新を受信し、他のパッケージの同じPPAからの更新を拒否する方法を教えてください。
特定のパッケージを持っているいくつかのPPAでこれが起こったので、ステップバイステップの例は良いでしょうが、まだ更新したくない他のすべての束を追加します。
Xパッケージが必要なPPAを追加したが、使用したり更新を受信したくないYパッケージも追加したとします。同じPPAから特定のパッケージの更新を受信し、他のパッケージの同じPPAからの更新を拒否する方法を教えてください。
特定のパッケージを持っているいくつかのPPAでこれが起こったので、ステップバイステップの例は良いでしょうが、まだ更新したくない他のすべての束を追加します。
回答:
「ピン止め」と呼ばれるものを使用します
PPAからパッケージfooをインストールすると仮定すると、ほぼ確実にPPAから依存関係もインストールする必要があります。
ただし、他のプログラムがある場合は、ピン留めで使用するリポジトリを指定できます。
Ubuntu Wikiのピン留めを参照してください
そのページにPPAを固定する例があります
https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA
apt-getのアップグレードを可能な限り簡単にするために、PPAのPin-Priorityを低く設定すると、不要なパッケージバージョンのインストールが停止します。設定すると、ubuntu-mozilla-daily PPAのパッケージは、他のリポジトリのパッケージとのコンテストでは、たとえそれらがより高いバージョンを持っているとしても、常に失われます。
ファイルを作成する /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400
ファイルに次を追加します。
Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400
次のコマンドを前後に使用して、Pin-Priorityが更新されたことを確認します。
apt-cache policy
apt-cache policy firefox-3.5
まず、誤ってPPAからパッケージをすでにアップグレードしている場合は、https://askubuntu.com/a/142808/103117特にppa-purgeの使用に関するセクションの回答を参照してください。私はすでにパッケージをアップグレードしており、apt-getは優先順位に関係なくダウングレードしないため、最初にアップグレードされたすべてのパッケージをパージしてから優先順位を修正し、PPAを再追加して必要なパッケージのみをアップグレードするのが最も簡単です。
優先順位/ピン留めシステムの詳細については、を参照してくださいman apt_preferences
。
パッケージが複数のソースから入手できる場合、各パッケージには優先順位が割り当てられ、で確認できますapt-cache policy <package name>
。たとえば、nathan-renniewaldock / ppa / ubuntuというPPAを使用していますが、そこからmysql-server-5.5(「パッケージY」)をインストールしたくありません。だから私は現在の状況を次のように確認できます:
rob@frodo:~$ apt-cache policy mysql-server-5.5
mysql-server-5.5:
Installed: 5.5.27-1~ppa1~precise
Candidate: 5.5.27-1~ppa1~precise
Version table:
*** 5.5.27-1~ppa1~precise 0
500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
そのため、すべてが優先度500であるため、manページによると、最も高いバージョン番号を持つものが選択されます。
たとえば、ddclient(「パッケージX」)のみをインストールし、他のパッケージはインストールしない場合、ddclientを除くPPA内のすべてのパッケージの優先度を下げます。というファイルを作成します/etc/apt/preferences.d/nathan-preferences
。そのディレクトリ内のすべてのファイルが読み取られ、ファイル名に関するいくつかのルールがあることに注意してください(英数字、ハイフン、ダッシュのみを含み、拡張子または.prefで終了してはなりません)。
最初に、PPAを識別する方法を知る必要があります。apt-cache policy
すべてのソースについて、自身のdispays情報のコマンド。PPAの名前に「nathan」が含まれていることがわかっているので、次のようにします。
$ apt-cache policy | grep nathan
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main
興味深い部分は「o = LP-PPA-nathan-renniewaldock」です。これは、次のように/etc/apt/preferences.d/nathan-prefsファイルで使用します。
Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400
Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500
これにより、PPAのすべてが優先度400に設定され、ddclientがデフォルトの500に戻ります。これで、動作することを確認できます。
$ apt-cache policy ddclient
ddclient:
Installed: 3.8.0-11.4ubuntu1
Candidate: 3.8.1-0~ppa1~precise
Package pin: 3.8.1-0~ppa1~precise
Version table:
3.8.1-0~ppa1~precise 500
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 3.8.0-11.4ubuntu1 500
500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
100 /var/lib/dpkg/status
したがって、ddclientの優先順位は500で、これは元のUbuntuパッケージと同じですが、nathan PPAは上位バージョンであるため、nathan PPAからインストールされます。それでは、他のパッケージがインストールされないようにしましょう。
$ apt-cache policy mysql-server
mysql-server:
Installed: 5.5.24-0ubuntu0.12.04.1
Candidate: 5.5.24-0ubuntu0.12.04.1
Version table:
5.5.27-1~ppa1~precise 0
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
100 /var/lib/dpkg/status
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
この場合、nathan PPAのパッケージの優先度は400であり、Ubuntuのパッケージよりも低いため、より高いバージョンであってもアップグレードされません。確認できます:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
ddclient
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.7 kB of archives.
After this operation, 11.3 kB of additional disk space will be used.
Do you want to continue [Y/n]?
必要なパッケージのみがアップグレードされるため、「はい」と言ってうれしいです。