Text
Page: 1
Debianパッケージング
repack編
そのソフトウェア、そのまま配布して大丈夫だっけ
Kentaro Hayashi
ClearCode Inc.
2022年11月 東京エリア・関西合同Debian勉強会
Page: 2
スライドはRabbit Slide
Showにて公開済みです
Debianパッケージング repack編
https://slide.rabbit-shocker.org/authors/kenhys/
tokyodebian-repack-howto-202211/
Page: 3
本日の内容
自由なソフトウェア・不自由なソフトウェア
バージョンによる区別のしかた(+dfsg or +ds)
再パッケージングどうやる問題
Page: 4
Debian(たまに)あるある
使いたいソフトウェアはまだaptでインストール不可
そうだ、パッケージングしよう!!
自由なソフトウェアである
今回の話題の対象外
(Debian的には) 不自由なソフトウェアである
Page: 5
自由なソフトウェアでない
いろんなパターンがある
自由でないのが主要構成部分か
さすがにどうしようもないので諦める
自由でないのは一部である
例: rapidjson (JSONライセンス)
https://wiki.debian.org/qa.debian.org/jsonevil
バンドルしているソフトウェアが自由でない
Page: 6
自由でないのは一部である
問題のある部分を除去してmainとして配布する
Page: 7
再配布できるようにしたソ
フトウェアの見分け方
パッケージに+dfsg or +dsがついている
参考: lintianに新規ルールを追加する方法
https://slide.rabbit-shocker.org/authors/kenhys/
tokyodebian-lintian-howto-202112/
Page: 8
+dfsg と +ds の区別
+dfsg
DFSGに適合しないものを除去した
例: rapidjson-dev 1.1.0+dfsg2-7.1
+ds
DFSGとの適合云々とは別の理由で除去した
例: バンドルしているソフトウェアを削除
Page: 9
再パッケージングのしかた
必要なもの
(パッケージ名)_(バージョン)+dfsg.orig.tar.gz
(パッケージ名)_(バージョン)+ds.orig.tar.gz
+dfsgや+dsなアーカイブはどうつくる?
Page: 10
repackして除去
debian/copyrightにFiles-Excluded:を書く
debian/watchでrepackルールを記述する
debian/rulesでget-orig-sourceルールでrepackするのは
古いやりかた
debian/以下のスクリプトを実行してアーカイブみたいな
ことをしなくてもいい
Page: 11
Files-Excluded:について
Files-Excluded:の仕様に関するバグ
https://bugs.debian.org/cgi-bin/bugreport.cgi?
bug=685506
Files-Excluded:のドキュメント化に関するバグ
https://bugs.debian.org/cgi-bin/bugreport.cgi?
bug=1000771
https://wiki.debian.org/UscanEnhancements
Page: 12
debian/copyrightにどう書
くか
Files-Excluded:
(削除対象のファイル・ディレクトリにマッチするパターンを列挙)
Comment:
(削除対象のファイル・ディレクトリに関する説明)
Page: 13
debian/copyrightの例
groonga-12.0.9+dfsg-1
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Groonga
Upstream-Contact: Groonga Project <packages@groonga.org>
Source: http://packages.groonga.org/source/groonga/
Files-Excluded:
doc/locale/en/html/*.html
doc/locale/en/html/_static
doc/locale/en/html/searchindex.js
doc/locale/ja/html/*.html
doc/locale/ja/html/searchindex.js
doc/locale/ja/html/_static
vendor/rapidjson-1.1.0
Comment: The following files were removed because
doc/locale/en/html/*.html: regenerated during building package
...
Files: *
Page: 14
Files-Excluded:の注意
必ずヘッダパラグラフに書くこと
以下のように改行入れると機能しなくてはまる
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Groonga
Upstream-Contact: Groonga Project <packages@groonga.org>
Source: http://packages.groonga.org/source/groonga/
Files-Excluded:
doc/locale/en/html/*.html
...
vendor/rapidjson-1.1.0
Comment: The following files were removed because
doc/locale/en/html/*.html: regenerated during building package
...
Files: *
Page: 15
debian/watchの例
repackとrepacksuffix=+dfsgを指定する
やり直す場合repacksuffix=+dfsg2というように増えてい
く
version=4
opts=\
repack,\
dversionmangle=auto,\
repacksuffix=+dfsg,\
pgpsigurlmangle=s/$/.asc/ \
https://packages.groonga.org/source/@PACKAGE@/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@
Page: 16
パッケージングの流れ (1)
gbp import-orig –uscan
+dfsgなアーカイブが作成される
upstreamブランチにインポート
upstream/(バージョン)+dfsgタグ付与
pristine-tarブランチに(パッケージ)_(バージョン)
+dfsg.orig.tar.xz.(delta|id)が作成される
Page: 17
パッケージングの流れ (2)
gbp dchでdebian/changelogを更新 & もろもろ作業
debsign & dputでアップロード
dput-ngだとまとめてできる
Page: 18
repackしくじった場合
upstreamブランチリセット
pristine-tarリセット
git tag -d upstream/(バージョン)+dfsg
gbp import-origやり直しなどちょっと面倒くさい
gbp pq rebaseで盛大にコンフリクト…
うっかりpatch-queue飛ばして泣く (事故には気をつけよ
う)
Page: 19
さいごに
部分的に不自由なソフトウェアを再配布可能にするに
は
d/copyrightでFiles-Excluded:を使え
d/watchでrepack,repacksuffixを記述