Text
Page: 1
DebianとFedoraで
パッケージを
リリースするまでの話
林健太郎
株式会社クリアコード
東京Debian勉強会
2014/12/20
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 2
今日の内容
✓ 第一部(Debian編)
✓ Groongaの紹介
✓ 新規パッケージについて
✓ 第二部(Fedora編)
✓ Cutterの紹介
✓ Cutterの事例
✓ groonga-normalizer-mysqlの紹介
✓ groonga-normalizer-mysqlの事例
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 3
はじめに
✓ スピーカーの立ち位置
✓ Groonga Projectの中の人
✓ おもにリリース関連
(2012/05〜2014/03までリリースマネージャ)
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 4
具体的な内容の前に
✓ 技術的に踏み込んだ内容はなし
なので気楽に聞いてもらえばOK
✓ あくまで個人の見解です
Fedoraだとこんな感じというのをつかんでもらえばOK
✓ 公開済みのブログのエントリを
もとにしています
新たな知見が得られるとは限りません
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 5
Groongaとは
Groongaとは
Page: 6
Groongaとは
✓ 「ぐるんが」
✓ カラムストア機能つき全文検索
エンジン
✓ Sennaの後継プロダクト
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 7
Groonga族
✓ Groonga
✓ Mroonga(むるんが)
✓ Rroonga(るるんが)
✓ Droonga(どぅるんが)
他にもNroongaとかHaroongaとかいろいろあるよ!
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 8
Groonga族って
✓ Mroonga
✓ Groongaをストレージエンジンとして
使う
✓ Rroonga
✓ RubyからGroongaを扱える
✓ Droonga
✓ Distributed Groonga
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 9
Groongaを楽々インストール
✓ Debian
✓ Ubuntu
✓ CentOS
✓ Fedora
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 10
Debianでも
楽々インストール
✓ stable
✓ testing
✓ unstable
✓ 以前はtestingやunstableもプロジェクト公式で対応
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 11
Ubuntuでも
楽々インストール
✓ 12.04 LTS
✓ 14.04 LTS
✓ 14.10
✓ だいたいEOLに合わせて対応打ち切り
✓ PPAでパッケージを提供へと移行
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 12
CentOSでも
楽々インストール
✓ CentOS 5
✓ CentOS 6
✓ CentOS 7
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 13
Fedoraでも
楽々インストール
✓ Fedora 19
✓ Fedora 20
✓ Fedora 21
✓ Fedora公式でのリリースへ移行
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 14
楽々インストールの明暗
✓ ユーザー視点
✓ 自分の環境がサポートされていると
嬉しい
✓ ソースからビルドは敷居が高い
✓ 開発者視点
✓ どこまでサポートするのか
✓ 手広くサポートするコストの負担
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 15
パッケージのビルドは大変
✓ Debian
✓ 各リリース
& i386/amd64
✓ Ubuntu
✓ 各リリース
& i386/amd64
✓ CentOS
✓ 各リリース
& i386/amd64
✓ Fedora
✓ 各リリース
& i386/amd64
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 16
準備が大変な理由
✓ 元々はすべてchrootでビルド
✓ Groongaのビルドって重い
✓ リリースごとに10数回のビルド
✓ ビルド専用マシンがあったこと
も
✓ rinseつらくなってきた
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 17
ビルド環境の移行(deb系)
✓ Debian
✓ chroot ➟ Vagrantへ移行
✓ testing,unstable対応打ち切り
✓ Ubuntu
✓ chroot ➟ PPAへ移行
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 18
ビルド環境の移行(rpm系)
✓ CentOS
✓ chroot ➟ Vagrantへ移行
✓ Fedora
✓ chroot ➟ 公式でのリリースヘ移行
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 19
ホスティング環境の移行(1)
✓ packages.groonga.org
✓ Groongaのリポジトリを提供
✓ 元々他サービスと同居
✓ セキュリティの観点から"みんな"で
協力が難しい
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 20
ホスティング環境の移行(2)
✓ ConoHa支援プログラムを利用
✓ https://www.conoha.jp/community
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 21
Debianへ
Debianへ
新規パッケージを
新規パッケージを
投入するまで
投入するまで
Page: 22
きっかけ
✓ 時は、2013年11月29日
✓ 全文検索エンジンGroongaを囲む夕べ
4
✓ やまねさんを紹介された
✓ GroongaのDebian入りを目指すことに
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 23
まずはWNPP
✓ 2013/12/13 はじめてのITP
✓ このときのGroongaは3.0.1
https://bugs.debian.org/cgi-bin/bugreport.cgi?
bug=732055
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 24
WNPPについてまとめた
✓ Debianでパッケージを
リリースできるようにしたい -
WNPPへのバグ登録
http://www.clear-code.com/blog/2014/3/7.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 25
パッケージを手直し
✓ 2014/01頃
✓ コメントをうけてパッケージを修正
✓ upstreamにもとりこんでいく
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 26
ようやくNew Queueへ
✓ 2014/02頃
✓ やまねさんにGroonga 4.0.0をNew
Queueにアップロードしてもらう
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 27
Lintianについてまとめた
✓ Debianでパッケージを
リリースできるようにしたい
- よりDebianらしく
http://www.clear-code.com/blog/2014/4/3.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 28
mentors.debian.netに
ついてまとめた
✓ Debianでパッケージを
リリースできるようにしたい
- mentors.debian.netの使いか
た
http://www.clear-code.com/blog/2014/7/2.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 29
New Queueどうなった?
✓ 2014/05/15
✓ ftp-masterのチェックまで約3ヶ月
✓ debian/copyrightの不備が原因で
rejectされる
✓ 審査待ちの間にLintianのチェックが
強化
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 30
再チャレンジ
✓ 2014/09頃
✓ Jessieの足音が聞こえはじめた
✓ やまねさんによる「進捗どうです
か」
✓ このときGroongaは4.0.5
空白期間があるのはお察しください
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 31
再びreject
✓ 2014/10/10
✓ ftp-masterのチェックまで約1ヶ月
✓ またしてもdebian/copyrightの不備
✓ Sphinxのバンドルしているjsへの言
及が漏れていた
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 32
再々チャレンジ
✓ 2014/10/15頃
✓ このときGroongaは4.0.6
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 33
祝Debian入り
✓ 2014/10/21
✓ 経緯をざっくりまとめ
✓ Debianでパッケージを
リリースできるようにしたい
- そしてDebianへ
http://www.clear-code.com/blog/2014/10/31.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 34
Cowbuilderについてまとめ
✓ Ubuntuでdebパッケージの
お手軽クリーンルーム
ビルド環境を構築するには
http://www.clear-code.com/blog/2014/11/21.html
✓ ディスク容量がカツカツでない
ならpbuilderよりcowbuilderお
すすめ
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 35
Piupartsについてまとめ
✓ Ubuntuでdebパッケージの
テストをするには
http://www.clear-code.com/blog/2014/12/1.html
✓ cowbuilder & lintian &
piupartsのコンボがおすすめ
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 36
Debianでの教訓
✓ debian/copyrightは入念にチ
ェックを
✓ licensecheck -rおすすめ
✓ New Queueに入ってからが勝負
✓ ftp-master待ちの間にlintian強
化➜rejectのコンボでも泣かな
い
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 37
Groonga on ARM
✓ armhfをサポートできるように
(wheezyは除く)
✓ porterbox(ipa.debian.net)を借
りた
✓ Groonga on ARM
http://qiita.com/kenhys/items/e42e943ee49e5105eb4b
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 38
Cutterとは
Cutterとは
Page: 39
Cutterとは
✓ 書きやすさを重視したC/C++向け
テスティングフレームワークの
ひとつ。
✓ Debianでは簡単にインストール
% apt-get install -y cutter-testing-framework
✓ ただし、バージョンがやや古い
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 40
Cutterを
Fedora入りさせた動機(1)
✓ すでにFedoraにGroongaはあった
✓ でも毎月リリースに追従してい
ない
✓ Fedora公式でメンテしていく方
向性にしたい
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 41
Cutterを
Fedora入りさせた動機(2)
✓ まずは実績を積もう
✓ 何か新規パッケージで予行演習
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 42
はじめにすること
✓ specとSRPMを用意
✓ BugzillaへのReview Request
✓ FE-NEEDSPONSORフラグを立てて
スポンサーを募る
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 43
Cutterの場合
✓ 2012/12/17
✓ Review Requestを投げた
https://bugzilla.redhat.com/show_bug.cgi?id=887778
✓ Fedora 17の時代
✓ このときのCutterは1.2.2
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 44
スポンサー獲得
✓ 2012/12/18
✓ なぜか速攻でスポンサーがついた
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 45
レビューの一つの壁
✓ スポンサーを探すこと
✓ スポンサー権限のないレビュー
はunofficial扱い
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 46
スポンサーがついたら
✓ レビューと修正のくりかえし
✓ DebianでいうDDとのやりとり
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 47
レビューを通ったら?
✓ 2013/02/05
✓ SCMリクエストを投げる
✓ パッケージのリポジトリを作成してもらう
✓ 晴れてpackagerになれる
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 48
リリース!
✓ 2013/02/09
✓ testing送りに
✓ 2013/02/18
✓ Fedora 18でリリース
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 49
権限についておさらい
✓ contributor
✓ packager
✓ sponsor
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 50
Contributor
✓ FASアカウントを保持
✓ Bugzillaアカウントを保持
✓ Review Requestを投げる
✓ Package Maintainer相当
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 51
Packager
✓ contributorより進化
✓ packagerグループに所属
✓ パッケージのオーナーになれる
✓ コミットできる
✓ アップロードまでできる
✓ Debian Maintainer相当
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 52
Sponsor
✓ 新規packagerを追加できる
✓ 新人のメンターを務める
✓ 正式なレビューをする
✓ Debian Developer相当
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 53
オーナー制度
✓ packagerはパッケージの
オーナーになれる
✓ 共同メンテナの承認
✓ より幅広い権限をあたえられる
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 54
新規パッケージまとめ
✓ Fedoraプロジェクトで
新規パッケージをリリースする
方法
http://www.clear-code.com/blog/2013/4/10.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 55
パッケージ更新方法まとめ
✓ Fedoraプロジェクトで
パッケージを更新するには
http://www.clear-code.com/blog/2013/7/17.html
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 56
groonga-normalizer-mysqlとは
groonga-normalizer-mysqlとは
Page: 57
groonga-normalizer-mysqlと
は
✓ Groongaに機能追加する
プラグイン
✓ MySQLと同様の正規化を
可能にする
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 58
groonga-normalizer-mysqlの
場合
✓ 2013/04/26
✓ Review Requestを投げた
https://bugzilla.redhat.com/show_bug.cgi?id=957053
✓ このときのバージョンは1.0.3
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 59
最新に追従してRequest
✓ 2013/05/29
✓ スポンサーなし
✓ このときのバージョンは1.0.4
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 60
更新に追従再び
✓ 2013/07/04
✓ スポンサーなし
✓ このときのバージョンは1.0.5
✓ rpmlintの結果をアピール
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 61
スポンサー見つかる
✓ 2013/07/28
✓ レビュー開始
✓ %dir修正
✓ ExclusiveArch修正
✓ etc...
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 62
レビュー承認
✓ 2013/08/07
✓ SCMリクエスト
✓ 即日リポジトリが用意された
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 63
リリース!
✓ 2013/08/13
✓ パッケージをtesting送りに
✓ 2013/08/23
✓ Fedora 19でリリース
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 64
パッケージが
リリースされるまで(1)
✓ ソースのアップロード
✓ spec更新
✓ ブランチごとにビルド on Koji
(麹)
✓ testingに送る
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 65
パッケージが
リリースされるまで(2)
✓ Karmaを集めよう
✓ Karma集ったらリリース
✓ 一定期間経過でリリース
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 66
Fedoraでの教訓
✓ スポンサー探しが肝心
✓ rpmlintの結果まで示すと反応が
良いかも
✓ スポンサー待ち以外は速いサイ
クル
✓ あの人は今がよくある
音信不通になるのよくない
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 67
宣伝
✓ コードリーダー育成支援サービ
ス
http://www.clear-code.com/services/code-reader/
✓ チームの全員が自然と
リーダブルコードを書くような文化
にする
✓ コードから学び合う開発チーム作り
を支援する
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 68
おまけ
✓ 昇華プリント用転写紙配布中
✓ アイロンプリントできます
✓ オリジナルTシャツに
✓ Groonga,Mroonga,Rroonga,Droongaも
あるよ
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4
Page: 69
最後に
Any Questions?
DebianとFedoraでパッケージをリリースするまでの話
Powered by Rabbit 2.1.4