$30 off During Our Annual Pro Sale. View Details »

I want to package The etckeeper to The openSUSE...

I want to package The etckeeper to The openSUSE (version 1).

Mitsutoshi NAKANO

August 17, 2014
Tweet

More Decks by Mitsutoshi NAKANO

Other Decks in Technology

Transcript

  1. Who am I • @ItSANgo • http://d.hanena.ne.jp/Itisango/ • http://mixi.jp/show_profile.pl?id=789759 •

    http://www.facebook.com/profile.php?id=1000 05833863069 • TOEIC 355 点 ( 有意性切れてます ) • 英語は話せない ( はず )
  2. etckeeper って何 • Joey Hess が書いたユーティリティ • http://joeyh.name/code/etckeeper/ • /etc

    の下を (git など )VCS で管理 • /etc をいじったら、手動で起動 • cron で自動起動 • YUM/APT と連携、自動起動 • おかしくなったら旧バージョンと見比べてトラブルシュー ト • @_hito_ さんもおすすめ • http://www.amazon.co.jp/dp/4048866877 • Debian/Ubuntu/Fedora で公式リポジトリに入っている
  3. お願いするにはどうすればいいの • Debian の RFP(Request For Package) みたいな のあるのかな ?

    • とりあえず日本語 ML で訊いてみた • http://lists.opensuse.org/opensuse-ja/2014-06/msg 00031.html • 回答 : http://lists.opensuse.org/opensuse-ja/2014-06/msg 00032.html
  4. openFATE という方法と opensuse- factory ML があるらしい • openFATE (https://features.opensuse.org/) •

    package リクエストの投票システムのようなもの • あまり機能していないらしい • openSUSE Factory (http://ja.opensuse.org/Factory_Distribution) • 要するに開発版 • opensuse-factory ML • openSUSE Factory について議論する ML
  5. 超訳 ( 注 : TOEIC 355 点 ) • 君の文章は、誰か人に頼んでいる文体だけ

    ど、 openSUSE はコミュニティなんだよ。 • 自分でやれ ! 言い出しっぺの法則 !!!
  6. 何から始めればいいか ? • とりあえずそれも、教えて君になって訊いてみ る。 • http://lists.opensuse.org/opensuse-factory/2014- 06/msg00071.html – openSUSE

    Build Service のアカウントを取る。 ( 取得済み ) – パッケージに対して role( 役割 : メンテナ・バグオーナ ) を申請する。 • 今回は bug owner を申請した。 • パッケージに bug があったら連絡が来る ( 損な役回り ?) – パッケージを Factory へ submitrequest する。
  7. イメージ • 第 1 回 Open Build Service 道場 (P.17

    参照 ) • http://www.slideshare.net/ftake/1-open-build-service
  8. 速攻で decline されました orz • 機械的に decline の判断が下りました。 • どうも

    spec ファイルが悪いらしい。 • utilities の etckeeper の version も 1.7 と古い。 • ( 当時 ) 最新は etckeeper-1.12 • なら、最新版に更新するか…
  9. そして初めてソースを見ました • etckeeper はシェルスクリプト ( 他 ) の塊 • 一つのスクリプトは

    100 行程度、小さい。 • etckeeper メインスクリプトがサブのスクリプトを呼び出 す。 – 全部で 133 ファイル ( ディレクトリ含む ) • サブスクリプトがメインスクリプトを再帰的に呼び出して たり…。 • そこそこ複雑。 • 意外な発見あり • 対応していないと思っていた機能があったり
  10. 対応していないと思っていた機能が • Debian(Ubuntu)/Fedora では APT/YUM を実行 した後、 etckeeper が自動起動する。 •

    openSUSE では ZYpp を起動しても etckeeper はスルー • 仕様 ( 未対応 ) かと思っていたけど
  11. あった • ls したら • zypper-etckeeper.py – あるやん ! (2012

    年から ) – 今まで動いてなかっただけやん ! • bug でした。 • スクリプトに実行権限がついていませんでした。 • 実行権限をつけると動く。 – けど、まだなんかおかしい。 • upstream に pullrequest • 速攻で update されました w
  12. ここでいきなり etckeeper の使い方 • Usage: etckeeper [subcommand] [args...] • eg.

    etckeeper commit • /etc/etckeeper/[subcommand].d/ ディレクトリ 配下のスクリプトを順番に実行する。
  13. じゃあ、こんなことをしてみたら • etckeeper ../init restart • デーモンを再起動しようとする w • 変じゃね

    ? • とりあえず、 [subcommand] に「 ../ 」が入っ ていないかチェックする処理を入れました。 • pullrequest しました。 • https://github.com/joeyh/etckeeper/pull/14
  14. するとある方からご意見が • 超訳 ( 注 : TOEIC355 点 ) •

    etckeeper のバグではなく、使い方の問題だろう。 • 「 ../ 」を禁止すべきではない。 • 裏ワザだって技だ ! それが UNIX だ ! alerque まさかの宗教戦争勃発か ?!
  15. その後様々な修正が 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 (pending) • https://github.com/joeyh/etckeeper/pull/18 (pending) • 小さな変更は merge されるけど、大きな変更は pending に なってしまう。 • merge するとも decline とも伝えてくれない。 • mail には答えてもらえない。
  16. ZYpp プラグインが遅い • 先述の実行権限をつけることで plugin は動き出した。 • でも遅い。 • zypper

    が 30 秒でタイムアウトを起こす。 • 調べてみた • etckeeper は APT/YUM/ZYpp の動作前後でパッケージのリストを取得す る。 (rpm -qa を前後 2 回 ) – 差分を取って追加・削除されたパッケージを VCS の log に残す。 – これが遅い、 30 秒以上かかる。 • パッケージリストを log に残さない設定ができるように patch を書いた (pull/17) • upstream には取り込まれず (pending) • ひょっとすると openSUSE の rpm の bug かも ( 未調査 )
  17. ZYpp だけでなく YUM にも対応し たい • openSUSE は ZYpp だけではなく

    YUM にも一 応対応している。 • でも etckeeper は 2 つの packagemanager の混 在を想定していない。 • 修正を書いた (pull/18) • でも ( 変更が大きすぎて )upstream には取り込 まれず。
  18. どうにか完成 • 2014 年 08 月 16 日 ( つまり昨日

    ) utilities に submitrequest • 2014 年 08 月 17 日 ( 今日 ) • utilities は accept – 変更は utilities プロジェクトに取り込まれました。 • 2014 年 08 月 17 日 • Factory へ submitrequest • 現在審査中
  19. ところで Joey Hess ってどんな人 ? • http://joeyh.name/code/ • なんと debhelper

    もこの人の作 • 多分お忙しいんですよね • dis ってごめんなさい
  20. 所感 • 言い出しっぺの法則こわい w • 英語が解らなくても何とかなる。 • 思ったよりいけてない ! •

    意外と泥臭い FLOSS の世界 • 逆に考えるんだ ! • 活躍の場はかえって大きいと言えるんじゃね ? • お気に入りのソフトを見つけてソースを追っか けてみるといいよ。 !