Ubuntu Weekly Recipe

第314回 PPA(Personal Package Archive)の登録及び抹消操作の便利ツール

この記事を読むのに必要な時間:およそ 4 分

apt-add-repository

apt-add-repositoryは新規リポジトリの登録,リポジトリの登録解除をするソフトウェアで,標準でインストールされていますす。GUI画面での操作ではなく,コマンドラインから操作します。software-properties-gtk同様,このツールも,PPAのみならず,登録済みリポジトリの削除操作ができてしまう点に注意してください。

Ubuntu Japanese Teamのリポジトリをインストールするには,以下を実行します。

$ sudo apt-add-repository ppa:japaneseteam/ppa
 Providing packages which are useful for Japanese Ubuntu users and are not accepted into the Ubuntu archive for some reason. This PPA will be mirrored by servers located in Japan.
 詳しい情報: https://launchpad.net/~japaneseteam/+archive/ppa
[ENTER] を押すと続行します。ctrl-c で追加をキャンセルできます

gpg: 鍵輪「/tmp/tmpytva_o/secring.gpg」ができました
gpg: 鍵輪「/tmp/tmpytva_o/pubring.gpg」ができました
gpg: 鍵CDC1D865をhkpからサーバーkeyserver.ubuntu.comに要求
gpg: /tmp/tmpytva_o/trustdb.gpg: 信用データベースができました
gpg: 鍵CDC1D865: 公開鍵“Launchpad PPA for Ubuntu Japanese Team”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
OK

リポジトリの情報を更新したので,以下のコマンドを実行してパッケージ情報を更新すると,リポジトリ内のパッケージがインストール可能になります。

$ sudo apt-get update

PPAを削除するには,-rオプションを使います。

$ sudo apt-add-repository -r ppa:japaneseteam/ppa

ppa-purge

さて,software-properties-gtkもapt-add-repositoryも,PPAの登録を抹消することができます。このとき,PPAからインストールしたパッケージはそのまま保持されます。これは困った事態を引き起こします。

パッケージ管理システムが,PPAからインストールしたパッケージと,それ以外からインストールできるパッケージを比較した結果,PPAからインストールしたパッケージをそのまま維持してしまうことがあります。この場合,Ubuntu公式リポジトリのアップデートを利用することができなくなります。該当するパッケージを一旦アンインストールして再インストールするという方法が思いつきますが,パッケージの依存関係により芋づる式に重要パッケージもアンインストールしてしまうという事態を考えることができます。

そこで登場するのが,ppa-purgeというソフトウェアです。ppa-purgeは指定したPPAの登録を抹消する機能を持つソフトウェアです注4⁠。削除と同時に,PPAからインストールしたパッケージを「可能な限り」現在有効なリポジトリにあるパッケージに置きかえます。

ppa-purgeをインストールするには,Ubuntuソフトウェアセンターで「ppa-purge」を検索し,インストールしてください。端末で操作する場合は,以下のコマンドを実行します。

$ sudo apt-get install ppa-purge

ppa-purgeはGUI画面で操作できないので,端末から操作します。基本的には以下のコマンドとなります。

$ sudo ppa-purge ppa:ppaのowner名/ppaの名前

たとえば,先ほど有効にしたjapaneseteamのppaリポジトリを削除するには以下を実行します。

$ sudo ppa-purge ppa:japaneseteam/ppa
Updating packages lists
PPA to be removed: japaneseteam ppa
Package revert list generated:
 im-setup-helper/saucy ubuntu-defaults-ja/saucy unzip/saucy

Disabling japaneseteam PPA from
/etc/apt/sources.list.d/japaneseteam-ppa-saucy.list
Updating packages lists
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: 'im-setup-helper' のリリース 'saucy' が見つかりませんでした
E: 'ubuntu-defaults-ja' のリリース 'saucy' が見つかりませんでした
"im-setup-helper" パッケージのアーカイブ "saucy" が見つかりません
"ubuntu-defaults-ja" パッケージのアーカイブ "saucy" が見つかりません
"im-setup-helper" パッケージのアーカイブ "saucy" が見つかりません
"ubuntu-defaults-ja" パッケージのアーカイブ "saucy" が見つかりません
以下のパッケージがダウングレードされます:
  unzip
0 個のパッケージを更新, 0 個を新たにインストール, 1 個をダウングレード, 0 個を削除予定,0 個が更新されていない。
アーカイブ 193 k バイト中 0  バイトを取得する必要があります。 展開後に 35.8 k バイトのディスク領域が新たに消費されます。
dpkg: 警告: unzip を 6.0-10~5.52~ja1 から 6.0-9ubuntu1 にダウングレードしています
(データベースを読み込んでいます ... 現在 453291 個のファイルとディレクトリがインストールされています。)
unzip 6.0-10~5.52~ja1 を (.../unzip_6.0-9ubuntu1_amd64.deb で) 置換するための準備をしています ...
unzip を展開し,置換しています...
mime-support のトリガを処理しています ...
man-db のトリガを処理しています ...
unzip (6.0-9ubuntu1) を設定しています ...

PPA purged successfully using aptitude fallback

出力からは,PPAでしか提供されていない「im-setup-helper⁠⁠,⁠ubuntu-defaults-ja」は維持され,⁠unzip」はUbuntu公式リポジトリのものがインストールされていることがわかります。

注4)
ppa-pargeそのものはbashスクリプトです。内部ではオプションのパース,インストールされているパッケージの一覧の作成,削除対象となるパッケージ名の抽出,配列の処理など,役立つ技が使われています。興味のある方は/usr/sbin/ppa-purgeを見てみると良いでしょう。

まとめ

Ubuntuのパッケージは通常,Ubuntuの公式リポジトリで配布されています。これに対し,様々な事情で有志がパッケージを提供していることがあります。launchpad.netにはPPAという仕組みがあり,このようなパッケージの配布元として利用することができます。システムにPPAを登録したり,登録を抹消するソフトウェアとして,software-properties-gtk,apt-add-repository,ppa-purgeを使うことができます。

著者プロフィール

坂本貴史(さかもとたかし)

Ubuntuのマルチメディア編集環境であるUbuntu Studioのユーザ。主にUbuntu日本コミュニティとUbuntu Studioコミュニティで活動。いつかユーザ同士で合作するのが夢。