トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Debianパッケージ作成

[Linux]

Debianパッケージ作成

 Debianパッケージ作成概要

簡潔な流れは以下の通り

  1. プログラムをMakefileやautotool対応で作成
  2. Debianのdevhelper, CDBS等でパッケージ化
  3. ローカルのリポジトリサーバに配備(…ローカルで使用できればよい人はここまで)
  4. Debian勉強会などに参加しGPG鍵をキーサインしてもらう
  5. 新しいパッケージをITPしてパッケージを作ることを宣言
  6. BTS(バグトラッキングシステム)にパッケージを登録
  7. mentorsサーバに出来上がった状態のパッケージを登録、メンテナーにレビューしてもらう
  8. 修正後パッケージがDebianのリポジトリに登録される

プログラムをMakefileやautotool対応で作成

ネイティブコードのプログラムを作成する場合はまずソースコードをAutotools対応させてやる必要がある

詳しい解説は以下

autoconfの使用方法- hippos-lab::net

http://homepage2.nifty.com/hippos/autoconf/index.html

世間で言われているほどAutoconfは難しくない

ビルドの検査にはTravisを使うと良いかもしれない。どこでビルドがミスっているか知ることができる。

Debianのdevhelper, CDBS等でパッケージ化

debhelperやCDBSでパッケージ化することが必要だ。詳しい 解説はDebianJPの関連サイトで見ることが出来る。

Debianパッケージ作成の手引き 

http://www.debian.or.jp/~nori/debian-packaging-guide/index.html

ローカルのリポジトリサーバに配備(…ローカルで使用できればよい人はここまで)

上で作成したパッケージは

dpkg -i ***.deb

でインストールできるが、他のユーザーに配布する場合aptサーバを立てることが一般的である

詳しい解説は以下

apt-ftparchive を使って debパッケージの aptリポジトリを作る

http://usamimi.info/~pochi/linux/apt-ftparchive.html

  • aptサーバについても専用のサービスが存在する(.debだけでなくRPM形式、mavenのリポジトリを提供する)
Bintray
こちらはパッケージの分布が目的
Bintray REST API
Bintray用のREST APIが存在する。これとTravisを連携できないだろうか?
Open Build Service
いろいろな形式のパッケージビルドをするためのマシンを貸し出してくれる!(感動した!)

Debian勉強会などに参加しGPG鍵をキーサインしてもらう

新しいパッケージをITPしてパッケージを作ることを宣言

BTS(バグトラッキングシステム)にパッケージを登録

mentorsサーバに出来上がった状態のパッケージを登録、メンテナーにレビューしてもらう

修正後パッケージがDebianのリポジトリに登録される

 Debianのパッケージ内におけるcontrolファイルとそのフィールド

元ネタはここからhttps://www.debian.org/doc/debian-policy/ch-controlfields.html

日本語訳はここからhttp://www.debian.or.jp/community/devel/debian-policy-ja/policy.ja.html/ch-controlfields.html

Version

パッケージのバージョン番号です。書式は、 [epoch:]upstream_version[-debian_revision] です。

バージョンを構成する 3 つの要素は

epoch

これは一桁の符号なし整数です。普通は小さい数になるはずです。 ゼロと仮定して良い場合は省略できます。省略した時には、 upstream_version にコロンを含めてはいけません。

これはパッケージの古いバージョンのバージョン番号の誤りを許したり、 パッケージの以前のバージョン番号体系をそのままに残しておくためにあります。

upstream_version

これがバージョン番号の主要部分です。通常支障ない場合は .deb ファイルが作られたオリジナルの ("上流の") パッケージのバージョン番号になります。 普通は上流の作者によって定められたものと同じ形式になりますが、 パッケージ管理システムと比較手法に沿って修正を加えなければならないかもしれません。

upstream_version に関するパッケージ管理システムの比較の挙動については次節で述べます。 バージョン番号中で、この upstream_version の部分は必須です。

upstream_version は英数字 [37] と文字 . + - : ~ (ピリオド、プラス、ハイフン、コロン、チルド) だけから構成されており、数字で始まるようにすべきです。 ただし、debian_revision がない場合、ハイフンは許されません。 また、epoch がない場合、コロンは許されません。

debian_revision

バージョンのこの部分は、そのパッケージを Debian バイナリパッケージにするためにほどこした修正のバージョン番号を表わしています。 これは英数字と + . ~ (プラス、ピリオド およびチルド) の三記号のみからなり、upstream_version と同じやり方で比較されます。

この部分はオプションです。 debian-revision を持たない場合には、 upstream-version はハイフンを含んでいてはいけません。 この debian-revision を持たない形式のものは Debian パッケージとして特別に書かれたソフトウェアであることを示しています。 その場合、Debian パッケージソースは元のソースと常に同一の筈ですから、レビジョンの追加は必要ありません。

upstream_version が増加するたびに、 debian_revision を 1 に戻すのが慣習となっています。

パッケージ管理システムは文字列中の最後のハイフン (あれば) のところでバージョン番号を upstream_version と debian_revision とに分割しようとします。 debian_revision がないものは、debian_revision が 0 と等価です。

サンプルは以下のようなDebianのパッケージリストから簡単に見れます

https://packages.debian.org/ja/sid/amd64/

  lintianのエラーメッセージとその対処

E: janeclone source: invalid-standards-version 1.1.4

Standards-Versionの方はパッケージのバージョンではなく、Debianの標準規定のバージョン。

パッケージが準拠した最新の標準 (Debian ポリシーマニュアルおよびそれに関連するテキスト) のバージョンを入れるようにする。ここに日本語版のDebianポリシーマニュアルがあるので、そいつのバージョン(ページ下部)を記入すれば早い

E: janeclone: helper-templates-in-copyright

/usr/share/doc/pkg/copyright のファイルにテンプレートのままのファイルが残っているので対処する

E: janeclone: non-empty-dependency_libs-in-la-file ***

libtool用の.laファイルに余計な設定が入っている、以下のコマンドで消し去る

sed -i "/dependency_libs/ s/'.*'/''/" `find . -name '*.la'`

  参考

お名前: コメント: