Ubuntuの開発の中心的サイトであるLaunchpad には、Personal Package Archive(以下PPA)という機能があります。今回はPPAを利用したパッケージの導入と、自作のカスタムパッケージの提供の仕方を紹介します。
PPAとは
Ubuntuをはじめ、多くのディストリビューションでは「パッケージ」という単位でソフトウェアを管理しています。Ubuntuの場合はdeb形式のパッケージをaptというツールで管理していますが、こういったパッケージ管理システムが動作しているシステムへソフトウェアを追加する場合は、手動でソースからインストールするのではなくパッケージを利用することが推奨されています。
Ubuntuの開発チームがパッケージを提供しているソフトウェアならばリポジトリからapt-getやSynapticでパッケージをインストールすることができます。ですが独自にパッチを当てたソフトウェアや、公式にはパッケージが提供されていない最新版を導入したいという場合もあると思います。通常であればローカルでパッケージを作成しdpkgコマンドでインストールすることになります(連載第16回 参照)が、これではSynapticを利用した自動的な依存関係の解決の恩恵には預かれませんし、複数のマシンへインストールをするのも手間になります。また、作成したパッケージを一般に公開したくなったとしても、配布方法が問題になります。そんな時に、パッケージのビルドとaptのリポジトリの役目を請け負ってくれるのがPPAです。
ユーザが作成したパッケージをPPAから導入する
現在、PPAを利用して多くの有志が様々なカスタムパッケージを提供してくれています。例えばUbuntu 8.10に採用されているOpenOffice.orgはバージョン2.4ですが、先日リリースされたOpenOffice.org 3.0をPPAからインストールすることができます。 ここではOpenOffice.org 3.0のPPAを有効にして、Synapticからインストールをしてみましょう[1] 。
[システム]→[システム管理]→[ソフトウェア・ソース]を開き、[サードパーティのソフトウェア]タブに以下の二行を追加してください。
deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu intrepid main
deb-src http://ppa.launchpad.net/openoffice-pkgs/ubuntu intrepid main
図1
[システム]→[システム管理]→[Synaptic パッケージ・マネージャ]を開き、[全てアップグレード]をクリックすることでOpenOffice.org関連のパッケージがアップグレードされます。なおPPAからソフトウェアをインストールする場合、ソフトウェアが認証されていないという旨の警告が表示されますが、これはリポジトリのReleaseファイルへの署名機能がPPAに実装されていないためです。ここではインストールされるパッケージ名を確認した後、[マーク]をクリックしてください。
図2
その後は[適用]をクリックし、通常のSynapticの操作と同様にインストールを行ってください。
図3
なお筆者は個人的に使いたい最新版ソフトウェアのパッケージや、フォーラムなどで要望のあったパッチを追加したカスタムパッケージ等をPPAで提供しています。 例えばUbuntu 8.10の場合、以下の二行をソフトウェア・ソースに追加することで、イラスト描画の支援機能gimp-painter パッチを当てた gimp 2.6.1 を導入することができます[2] 。
deb http://ppa.launchpad.net/mizuno-as/ubuntu intrepid main
deb-src http://ppa.launchpad.net/mizuno-as/ubuntu intrepid main
PPAを利用したパッケージの公開
前述のようにPPAを利用することで、自分で作成したカスタムパッケージをリポジトリに登録し、それを第三者に公開することが可能になります。PPAを利用するためには、PPAのアクティベーションとLaunchpadへの公開鍵の登録、CoCへの署名が必要になります。ここではPPAでパッケージを公開するまでに必要となる手順を紹介します。
PPAのアクティベーション
Launchpadへログインして自分のProfileページを表示すると、画面上部に[Personal Package Archive]という項目があります。
図4
ここをクリックすると[Personal Package Archive Activation]というページが表示されます。PPAを有効にするには[I have read and accepted the PPA Terms of Service.]にチェックを入れて[Activate]ボタンを押す必要があります。[PPA Terms of Use]のリンク先を一読して内容を確認し[3] 、問題がなればチェックを入れてアクティベートしてください。
[3] "Terms of Use"には、PPAにアップロードできるソフトウェアのライセンスについて記載されています。くれぐれもライセンスには注意し、許容されるライセンスか確認の上アップロードを行ってください。
公開鍵の登録
自分が作成したパッケージであることを証明するため、作成したパッケージにはGPGを利用した署名を行う必要があります。そしてその署名をPPAが検証するため、LaunchpadにGPG公開鍵を登録する必要があります。自分のGPG鍵がない場合は、以下のコマンドで鍵を作成してください。
$ gpg --gen-key
作成した公開鍵は鍵サーバへ登録する必要があります。端末より以下のコマンドを実行して鍵の送信を行ってください。
$ gpg --send-keys --keyserver keyserver.ubuntu.com 鍵ID
鍵の登録が完了したらLaunchpadへインポートします。まず自分の鍵のフィンガープリントを以下のコマンドで調べてください。
$ gpg --fingerprint 鍵ID
次に以下のページを開き、鍵のフィンガープリントを入力しインポートしてください。
https://launchpad.net/people/+me/+editpgpkeys
インポートを実行するとLaunchpadから登録時のメールアドレスに"Launchpad OpenPGP Key Confirmation"というサブジェクトのメールが届いているはずです。このメールの本文はGPGによって暗号化されていますので、自分の鍵で復号化して書かれている指示に従ってください。
詳細な手順はLaunchpadのヘルプページYourAccount/ImportingYourPGPKey が参考になるでしょう。
CoCへの署名
前述のYourAccount/ImportingYourPGPKey ページ内にあるcodes of conduct をクリックし、"Ubuntu Codes of Conduct"ページを表示させてください。ここにはCoCへのサイン方法が記述されていますが、その手順は以下のようになります。
GPG鍵の登録
CoCテキストのダウンロード
CoCへの署名
署名したテキストのアップロード
前述のGPG鍵の登録が済んでいるならば、ページ内の"Download"をクリックしCoCをテキストファイルとして保存してください。テキストにはUbuntuの行動規範が記述されていますので、熟読した後署名を行ってください。署名を行うには端末より以下のコマンドを実行します。
$ gpg --clearsign UbuntuCodeofConduct-1.0.1.txt
ファイルへの署名が完了したら、ページ内の"Sign it!"をクリックして登録ページへ移動してください。"Signed Code"テキストボックスに署名を行ったテキストファイルの中身をペーストして送信することで、CoCへの署名は完了となります。
パッケージの作成とアップロード
PPAではサーバ上で各アーキテクチャ向けのバイナリを作成するため、アップロードするのは通常のバイナリパッケージではなくソースパッケージである必要があります。パッケージの作成方法については本連載第16回 と同様ですが、パッケージビルドには以下のコマンドを使用してください。もちろんパッケージにはLauncphadに登録したGPG鍵を使用して署名を行っておく必要があります。
$ debuild -S -sa
パッケージのアップロードにはdputコマンドを使用します。dputがインストールされていない場合はsynapticからインストールを行うか、端末から以下のコマンドを実行してください。
$ sudo apt-get install dput
PPAにパッケージをアップロードするため、dputの設定ファイルを作成します。~/.dput.cfファイルを作成し、リポジトリの情報を記述します。incoming行を自分のアカウント名に変更して使用してください。
[my-ppa]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~(自分のアカウント名)/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
パッケージのビルドが完了していれば、(ソフトウェア名)_(バージョン)_source.changesというファイルが作成されているはずです。アップロード対象のリポジトリとこのファイルを引数として渡し、dputを実行することでアップロードが行われます。具体的には以下のようなコマンドを実行することになります。
$ dput my-ppa (ソフトウェア名)_(バージョン)_source.changes
パッケージがAcceptされるとLaunchpadよりメールで通知が行われます。その後パッケージのビルドが自動的に行われ、ビルドに成功すると
http://ppa.launchpad.net/(アカウント名)/ubuntu (ディストリビューション名) main
というリポジトリでパッケージが公開されることになります。
あとは[ソフトウェア・ソース]に上記のような自分のリポジトリのアドレスを追加することで、Synapticからパッケージのインストールが可能になります。