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を記述