地球流体電脳倶楽部で作成しているソフトウェア群のうち, PPA を利用して ubuntu パッケー ジ化されているものの apt ソースリストの公開方法について記す.
/etc/apt/sources.list に記述する公開アドレスは
安部の個人リポジトリ( lucid, maverick )
共有リポジトリ( oneiric, precise )
とする.
現在、個人リポジトリは放置し、共有リポジトリのみ管理をしている.
CODENAME は oneiric や precise などの Ubuntu でのリリース名とする. ただし source.list にアドレスを追加しただけでは利用できない. アップデート・マネージャーで上記の apt ラインを追加する必要がある. 詳細は 電脳Rubyプロジェクトホームページ の ubuntu をクリックして出てくるページに載せている.
Debian パッケージと同じ作り方である. パッケージを作成する前に、プログラムがちゃんと動作するかを確認しておく. ./configure; make; make install などで試す.
パッケージ情報に引用される環境変数を設定する.
$ export DEBFULLNAME="yourname" $ export DEBEMAIL=youremail $ export EMAIL=youremail
または、~/.bashrc に直接書き込む.
export DEBFULLNAME="yourname" export DEBEMAIL=youremail export EMAIL=youremail
そして、以下のコマンドを打てばよい.
$ source ~/.bashrc
この作業は、1回行えばそれ以降は勝手に反映される.
○ dh-make ○ devscripts ○ debhelper
他は随時必要に応じてインストールする.
1) 作成したいパッケージのソース( tar ボール)を展開する.
$ tar zxvf <パッケージ名>.tar.gz
展開してできたディレクトリの名前を <パッケージ名>-<バージョン名> にする.
2) ディレクトリに入り、dh_make コマンドを使って debian ディレクトリの雛形を作る.
$ dh_make -<option>
☆ option について( $ man dh_make 参照 )
s: Single binary(1つのバイナリー .deb パッケージを生成する.これは標準なので、もしどうしたらいいかわからない場合はこれを選ぶとよい.) i: Arch-Independent(パッケージがアーキテクチャに依存しないシングルパッケージを生成する.) m: Multiple binary(1つのソースパッケージから複数のバイナリー .deb パッケージを生成する.) l: Library(少なくとも2つ以上のバイナリーを生成する.ライブラリ用パッケージを作成する場合に指定する.) k: Kernel module(カーネルモジュール用のパッケージを生成する.) b: cdbs(cdbs(Common Debian Build System)を使ったパッケージを生成する.)
ダウンロードしたソースが .orig.tar.gz ではない場合エラーがでる. この場合、オプションに --createorig をつけるとよい.
(実行例)
$ dh_make -s --createorig
dh_make を実行すると、ディレクトリ内に debian ディレクトリができる.
3) debian ディレクトリの中を整理する.
debian ディレクトリの中に入る.
*.ex や *.EX はサンプルなので消去する.
$ rm -rf *.ex or *.EX
上記以外でディレクトリに最低限必要なファイルについて簡単に記述する.
○ README.Debian : パッケージの README ○ control : パッケージの説明、ビルドに必要な情報など ○ dirs : パッケージが利用するディレクトリを記述 ○ changelog : パッケージの変更履歴 ○ copyright : パッケージの著作権 ○ docs : ドキュメントファイルの一覧 ○ rule : Makefile. パッケージ作成のスクリプト ○ compat : debhelper のバージョン
・debian/changelog について
展開してできたディレクトリに戻って、dch コマンドによって修正する.
$ dch -i
他、必要に応じて中身を修正する.
4) パッケージング
展開してできたディレクトリで以下のコマンドを打つ.
$ debuild -us -uc -us : ソースパッケージに GPG サインをしない. -uc : *.changes ファイルに GPG サインをしない.
後は、エラーやウォーニングが出なくなるまで調整をする.
できたパッケージがちゃんとしたものかをテストする.
○ lintian : Debian ポリシーマニュアルに従ってるかのチェックをするためのツール. ○ pbuilder : 最低限の Debian System からパッケージを作成するためのツール. ○ piuparts : パッケージのインストール&アンインストールのチェックをするためのツール.
など.
そうしてできたパッケージは、dpkg でインストールできる.
$ sudo dpkg -i <パッケージ名>-<バージョン>.deb
参考URL:
注) パッケージ化に関する説明は上記のサイトにより詳しく書いてある.
こちらもとても参考になる.
参考URL:
リポジトリは以下であり(共有リポジトリ)、team 名は PPA for GFD-dennou である.
このリポジトリで、dennou 製品の ubuntu パッケージを管理している.
このリポジトリの管理に参加したい場合、まず PPA リポジトリを運営しているサイト「 Launchpad 」のアカウントを作る必要がある.
ここで参考になるのがUbuntu Weekly Recipe 第46回PPAの活用 gihyo.jp(技術評論社)である。
それに加えて、「公開鍵の登録」以下の作業を行っておく必要がある.
以上の作業を行った上で、Launchpad で「 PPA for GFD-dennou 」という名前の team に参加( join )要請をすればよい.
そうすると、管理者(現在は安部)に連絡がいくようになり、承諾をしてもらう必要がある.
ソース元である Debian の sid リポジトリ(佐々木さんが管理している)
のパッケージが更新されたら、その都度 PPA リポジトリ内のパッケージも更新する.
最低でも gave 関連のパッケージは必ず更新する.
上記の URL ( Debian-sid ) を apt ラインに追加し、
$ sudo apt-get update $ apt-get source (パッケージ名)
とすれば、最新版のソースをダウンロード&展開できる.
☆orig.tar.gz, debian.tar.gz (または diff.gz), dsc の3つのファイルがダウンロードされる.
展開してできたディレクトリ( パッケージ名-バージョン )に入り、
$ dch -i
とすると、ubuntu の新しいバージョンナンバーがパッケージに追記される( -ubuntu1 など).
そして、debian/control の修正を以下の様に行う.
Maintainer: maintainername <email> ↓ Original-Maintainer: maintainername <email>
新規に、以下の1行を加える.
Maintainer: myname <email>
また、debian/control の Build-Depends に記述してあるパッケージはビルド前にすべて install しておく必要がある.
$ sudo apt-get install (パッケージ名)
そして、debian ディレクトリがある場所に戻り、
$ debuild -S -sa $ dput my-ppa (ソフトウェア名)_(バージョン)_source.changes
とすれば ok である.
注1) my-ppa については、以下のサイト( Ubuntu Weekly Recipe 第46回PPAの活用 gihyo.jp(技術評論社) )に書いてある.
その中の incoming の部分は、「 incoming = ~gfd-dennou/ppa/ubuntu/ 」である.
注2) debuild する際、パスフレーズを2回尋ねられるので、タイプミスをしないように入力する.
以下のサイト(前述のと同じ)でわかりやすく解説してあるので、参考にしてほしい.
少しわかりにくいところがあったので、補足.
Launchpad へログインして自分の Profile ページを表示すると、画面上部に [ Personal Package Archive ] という項目があり・・・の部分が少し違う.
Profile ページの [ + Create a new PPA ] をクリックして、[ Personal Package Archive Activation ] というページに移動する.
universe リポジトリに置いてあるので、自分で作る必要はない.
ruby-netcdf ( >= 0.6.4-1 )、gphys ( >= 1.0.0+cvs20100804-1 ) では libnc-dap に依存しない仕様となっている.
よって、これも作る必要がない.
Debian-sid リポジトリと PPA リポジトリを両方とも有効にしていると、PPA リポジトリのソースを取ってきてしまう.
( PPA リポジトリのパッケージは -ubuntu1 などがついているので、そっちが最新とみなされてしまう )
したがって、この場合は Debian-sid リポジトリのみを有効にしておく.
同じリポジトリに同バージョンのパッケージを置くことができない.
つまり、パッケージは各ディストリビューションでバージョンを変えないといけない( $ dch -i で).
maverick 版までのパッケージは、安部個人のリポジトリで管理する.
natty ( lucid も含む)からは共有リポジトリに移行して管理をしていく予定である(只今準備中).
「入門 Debian パッケージ」:やまだあきら著
2010年より安部が管理している.
pub 1024D/F46A876E 2010-04-05 uid Miki Abe <abe@gfd-dennou.org> sub 2048g/2748A805 2010-04-05