etckeeperをopensuseの公式リポジトリに入れたいぞ! ver.2
Post on 20-Jul-2015
414 Views
Preview:
TRANSCRIPT
1
etckeeper を openSUSE の公式リポジトリに入れたいぞ ! Ver.2
中野充敏 (@ItSANgo)
2
改版履歴
● 2014-Aug.-17 Ver.1 公開● 2015-Jan.-10 Ver.2 発表
● Ver.2 での追加・変更箇所は赤色で表示されているよ。
Who am I
● 中野充敏 @ItSANgo● http://d.hanena.ne.jp/Itisango/
● http://www.facebook.com/profile.php?id=100005833863069
● https://plus.google.com/116024680042537520422/posts
● http://mixi.jp/show_profile.pl?id=789759
● ただ今求職中● TOEIC 355 点 ( 有意性切れてます )
● 英語は話せない ( はず )
4
予習
● 「 etckeeper を openSUSE の公式リポジトリに入れたいぞ ! 」
● http://www.slideshare.net/MitsutoshiNakano/etckeeper-38070309
● 予習してきました ?
● 予習してないと何のことかわからないよ !
5
何を話すか
● etckeeper について● 2014 年 8 月から今日 (2015 年 01 月 10 日 ) ま
でに起こったことをかいつまんで● というか、資料流用しているよ、いい加減な奴
w● 予習してこなかった人は黒い部分を読むといいよ。
6
etckeeper って何● Joey Hess が書いたユーティリティ
● URL が変わりました。
● http://joeyh.name/code/etckeeper/
● → http://etckeeper.branchable.com/
● /etc の下を (git など )VCS で管理
● /etc をいじったら、手動で起動
● cron で自動起動
● YUM/APT/ZYpp/DNF と連携、自動起動
● おかしくなったら旧バージョンと見比べてトラブルシュート
● @_hito_ さんもおすすめ
● 『 Ubuntu Server 実践バイブル 現場で即運用に役立つサービス設定のノウハウ』● http://www.amazon.co.jp/dp/4048866877
● Debian/Ubuntu/Fedora で公式リポジトリに入っている
7
でも
● openSUSE の公式リポジトリにはない● 非公式 (utilities) リポジトリにはある。● いちいち非公式リポジトリから取ってくるのも
面倒 ?
● なら、公式リポジトリに入れてもらえるようお願いすればいいんじゃね ?
8
お願いするにはどうすればいいの
● Debian の RFP(Request For Package) みたいなのあるのかな ?
● とりあえず日本語 ML で訊いてみた● http://lists.opensuse.org/opensuse-ja/2014-06/msg00031.html
● 回答 : http://lists.opensuse.org/opensuse-ja/2014-06/msg00032.html
9
openFATE という方法と opensuse-factory ML があるらしい
● openFATE (https://features.opensuse.org/)● package リクエストの投票システムのようなもの● あまり機能していないらしい
● openSUSE Factory
(http://ja.opensuse.org/Factory_Distribution)● 要するに開発版
● opensuse-factory ML● openSUSE Factory について議論する ML
10
opensuse-factory ML に投げてみた● http://lists.opensuse.org/opensuse-factory/2014-06/msg00068.html
11
速攻で返事が返ってくる● http://lists.opensuse.org/opensuse-factory/2014-06/msg00069.html
Greg Freemyer
12
超訳 ( 注 : TOEIC 355 点 )
● 君の文章は、誰か人に頼んでいる文体だけど、 openSUSE はコミュニティなんだよ。
● 自分でやれ !
言い出しっぺの法則 !!!
13
何から始めればいいか ?
● とりあえずそれも、教えて君になって訊いてみる。
● http://lists.opensuse.org/opensuse-factory/2014-06/msg00071.html
– openSUSE Build Service のアカウントを取る。( 取得済み )
– パッケージに対して role( 役割 : メンテナ・バグオーナ )を申請する。
● 今回は bug owner を申請した。● パッケージに bug があったら連絡が来る ( 損な役回り ?)
– パッケージを Factory へ submitrequest する。
14
イメージ
● 第 1 回 Open Build Service 道場 (P.17 参照 )● http://www.slideshare.net/ftake/1-open-build-service
15
速攻で decline されました orz
● 機械的に decline の判断が下りました。● どうも spec ファイルが悪いらしい。● utilities の etckeeper の version も 1.7 と古い。● ( 当時 ) 最新は etckeeper-1.12
● (2015-Jan.-09 現在 etckeeper-1.17)
● なら、最新版に更新するか…
16
そして初めてソースを見ました● Etckeeper-1.12 はシェルスクリプト ( 他 ) の塊
● 一つのスクリプトは 100 行程度、小さい。● etckeeper メインスクリプトがサブのスクリプトを呼び出
す。– 全部で 133 ファイル ( ディレクトリ含む )
● サブスクリプトがメインスクリプトを再帰的に呼び出してたり…。
● そこそこ複雑。● 意外な発見あり
● 対応していないと思っていた機能があったり
17
対応していないと思っていた機能が
● Debian(Ubuntu)/Fedora では APT/YUM を実行した後、 etckeeper が自動起動する。
● openSUSE では ZYpp を起動しても etckeeperはスルー● 仕様 ( 未対応 ) かと思っていたけど
18
あった● ls したら
● zypper-etckeeper.py
– あるやん ! (2012 年から )
– 今まで動いてなかっただけやん !
● bug でした。● スクリプトに実行権限がついていませんでした。● 実行権限をつけると動く。
– けど、まだなんかおかしい。● upstream に pullrequest
● 速攻で update されました w
19
ここでいきなり etckeeper の使い方● Usage: etckeeper [subcommand] [args...]
● eg. etckeeper commit
● /etc/etckeeper/[subcommand].d/ ディレクトリ配下のスクリプトを順番に実行する。
20
じゃあ、こんなことをしてみたら● etckeeper ../init restart
● デーモンを再起動しようとする w
● 変じゃね ?
● とりあえず、 [subcommand] に「 ../ 」が入っていないかチェックする処理を入れました。
● pullrequest しました。● https://github.com/joeyh/etckeeper/pull/14
21
するとある方からご意見が
● 超訳 ( 注 : TOEIC355 点 )
● etckeeper のバグではなく、使い方の問題だろう。● 「 ../ 」を禁止すべきではない。● 裏ワザだって技だ ! それが UNIX だ !
alerque
まさかの宗教戦争勃発か ?!
22
いきなりの緊張緩和 w
● あっさり修正されました。● pullrequest したコードよりもより厳しいチェッ
クが入りました。● egrep '[^-a-z_]'
23
その後様々な修正が pullrequest されるのであった
● その一部● https://github.com/joeyh/etckeeper/pull/12 (decline)
● https://github.com/joeyh/etckeeper/pull/14 (merged)
● https://github.com/joeyh/etckeeper/pull/15 (merged) (rpmlint)
● https://github.com/joeyh/etckeeper/pull/16 (merged) (rpmlint)
● https://github.com/joeyh/etckeeper/pull/17 (decline)
● https://github.com/joeyh/etckeeper/pull/18 (decline)
● 小さな変更は merge されるけど、大きな変更は pending になってしまう。
● merge するとも decline とも伝えてくれない。
– 一応 decline されました。 (2014-Jan.-09 現在 )
● mail には答えてもらえない。
24
ZYpp プラグインが遅い (pull/17)● 先述の実行権限をつけることで plugin は動き出した。
● でも遅い。
● zypper が 30 秒でタイムアウトを起こす。● 調べてみた
● etckeeper は APT/YUM/ZYpp の動作前後でパッケージのリストを取得する。 (rpm -qa を前後 2 回 )
– 差分を取って追加・削除されたパッケージを VCS の log に残す。– これが遅い、 30 秒以上かかる。
● パッケージリストを log に残さない設定ができるように patch を書いた(pull/17)
● upstream には取り込まれず (decline)
● ひょっとすると openSUSE の rpm の bug かも ( ちょっと調べました )
25
openSUSE の RPM が遅い● 09 月 10 日に Joey から回答がありました。
● https://github.com/joeyh/etckeeper/pull/17#issuecomment-55059127
● 超訳 ( 注 :TOEIC355 点 )
– お前の言っていることの意味が解らん。– 環境が悪いだけじゃないの ?
● Aleque さんからもコメントが…● https://github.com/joeyh/etckeeper/pull/17#issuecomment-55078734
● 超訳 : ( 小笠原さん )
– http://lists.opensuse.org/opensuse-ja/2014-09/msg00013.html
– タイムアウトするってどういう意味(で、どういうシナリオでそれが起きるの)?
– それで etckeeper がなんで困るの?
26
なんで困るのか ?
● ZYpp がプラグイン zypper-etckeeper.py を呼び出す。
● zypper-etckeeper.py が etckeeper を呼び出し、 VCS(git) を起動する。
● 但し ZYpp プラグインのタイムリミットは 30秒 ( デフォルト )
● 30 秒を過ぎるとプラグインごと SIGKILL される。● git commit の最中に SIGKILL されたら…● 想像するのもヤダ w
27
皆さんに time rpm -qa | wc してもらいました。
● 皆さんの環境でも再現するか否かを確認する意味も込めて● http://lists.opensuse.org/opensuse-ja/2014-09/msg00012.html
● http://lists.opensuse.org/opensuse-factory/2014-09/msg00223.html
● 一瞬で返ってくるマシンもあれば 1 分以上かかる環境もあり● http://lists.opensuse.org/opensuse-factory/2014-09/msg00230.html
● 長いスレッドになりました。
● DB 周りに問題があるらしく、 Bug 票も起こされました。● https://bugzilla.opensuse.org/show_bug.cgi?id=897353
– WONTFIX になってる orz
● openSUSE だけではなく RPM 系ディストリが共通に持っている問題の可能性あり (pull/17)
28
ZYpp だけでなく YUM にも対応したい (pull/18)
● openSUSE は ZYpp だけではなく YUM にも一応対応している。
● Fedora も YUM だけではなく DNF もあるし。
● でも etckeeper は 2 つの packagemanager の混在を想定していない。
● 修正を書いた (pull/18)
● でも変更忘れのファイルがあるとして upstream には取り込まれず。
● .spec ファイルの変更を忘れていると言われたんだけど…● TODO には載った。
● http://etckeeper.branchable.com/todo/multiple_highlevel_package_managers/
● 変更作業はそのうちやります。 ( 但し後述 )
29
どうにか完成● 2014 年 08 月 16 日 ( つまり Ver.1 発表前日 )
utilities に submitrequest
● 2014 年 08 月 17 日 (Ver.1 発表日 )
● utilities は accept
– 変更は utilities プロジェクトに取り込まれました。● 2014 年 08 月 17 日
● Factory へ submitrequest
– https://build.opensuse.org/request/show/245241● accept されました。 (08 月 25 日 )
– 2 回ほど decline されましたが、細かな修正で対応● openSUSE 13.2 には etckeeper-1.13 が入っています。
30
どんどん進化する etckeeper
● DNF にも対応したよ。● Upstream の URL が変わったよ。
● http://etckeeper.branchable.com/
● GitHub への pullrequest に代わってこっちを使ってね !(Joey) ( 超訳 TOEIC355 点 )
● でも使い方が解らん ( 私も alerque も )– https://github.com/joeyh/etckeeper/pull/26#issuecomment-68162884
– 返事がない…。
31
http://etckeeper.branchable.com/ について
● branchable.com は Ikiwiki で実装されているらしい。● https://ikiwiki.info/
● Ikiwiki は Wiki を git で管理するシステムらしい。● Wiki そのものが git リポジトリになっているイメージ● git clone git://etckeeper.branchable.com/ で etckeeper が落ちて
くる。● Wiki の内容自体が doc/ ディレクトリに格納される。● TODO にコメントすると、 commit される。
● Wiki にコメントされるたびにハッシュ値が変わるってどうよ ?
32
ところで Joey Hess ってどんな人 ?
● http://joeyh.name/code/
● なんと debhelper も Ikiwiki もこの人の作● 多分お忙しいんですよね
● dis ってごめんなさい
33
所感● 言い出しっぺの法則こわい w
● 英語が解らなくても何とかなる。● 思ったよりいけてない !
● 意外と泥臭い FLOSS の世界● 逆に考えるんだ !
● 活躍の場はかえって大きいと言えるんじゃね ?
● お気に入りのソフトを見つけてソースを追っかけてみるといいよ。 !
● openSUSE Build Service なら簡単に package 化することができるよ ( 宣伝 )
34
最後に
● ソースは友達 !● どうしようもなくなったらML 等で助けを求めよう !● もちろん詳細に説明する必要はあるけどね
top related