it-swarm-ja.com

PPAから特定のパッケージの更新のみを許可することは可能ですか?

必要なXパッケージを含むPPAを追加したが、使用したり更新を受信したくないYパッケージも追加したとします。同じPPAから特定のパッケージの更新を受信し、他のパッケージの同じPPAからの更新を拒否する方法を教えてください。

特定のパッケージを持っているいくつかのPPAでこれが起こったので、ステップバイステップの例は良いでしょうが、まだ更新したくない他のすべての束を追加します。

19
Luis Alvarado

「ピン止め」と呼ばれるものを使用します

PPAからパッケージfooをインストールすると仮定すると、ほぼ確実にPPAから依存関係もインストールする必要があります。

ただし、他のプログラムがある場合は、ピン留めで使用するリポジトリを指定できます。

buntu wiki pinning を参照してください

そのページにPPAを固定する例があります

https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA

Wikiページから:

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
16
Panther

まず、誤って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」)をインストールしたくありません。だから私は現在の状況を次の方法で確認できます:

[email protected]:~$ 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コマンド自体は、すべてのソースに関する情報を表示します。 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]?

必要なパッケージのみがアップグレードされるため、「はい」と言ってうれしいです。

7
Rob Fisher