SlideShare ist ein Scribd-Unternehmen logo
1 von 34
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 等で助けを求めよう !
●
もちろん詳細に説明する
必要はあるけどね

Weitere ähnliche Inhalte

Was ist angesagt?

Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Yoshimasa Kawano
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!博文 斉藤
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンドYUKI Kaoru
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門Hiroshi Chonan
 
Xcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみたXcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみたfirewood
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistranokumachang_LL
 
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfUbuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfHiroshi Chonan
 
Javaで最強のfizz buzz
Javaで最強のfizz buzzJavaで最強のfizz buzz
Javaで最強のfizz buzzyy yank
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側Gosuke Miyashita
 
Sample App: Tizengram
Sample App: TizengramSample App: Tizengram
Sample App: TizengramCafejp Tizen
 
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談Kensuke Nagae
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Atsushi Tadokoro
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムJunichi Kakisako
 
はじめませんか? Bash on Windows
はじめませんか? Bash on Windowsはじめませんか? Bash on Windows
はじめませんか? Bash on WindowsHideaki Aoyagi
 
Play2 translate 20120714
Play2 translate 20120714Play2 translate 20120714
Play2 translate 20120714masahitojp
 
20151114 jawsug
20151114 jawsug20151114 jawsug
20151114 jawsug司 知花
 

Was ist angesagt? (20)

Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
Squarantine 〜Kuroboxを使ったUSBメモリセキュリティソリューション〜
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門
Ubuntu 15.04 アーリープレビュー & Ubuntu Core入門
 
Xcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみたXcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみた
 
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistranoItcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
 
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily WerewolfUbuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
Ubuntuの最新情報 / Ubuntu 15.10 Wily Werewolf
 
Javaで最強のfizz buzz
Javaで最強のfizz buzzJavaで最強のfizz buzz
Javaで最強のfizz buzz
 
関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
 
Sample App: Tizengram
Sample App: TizengramSample App: Tizengram
Sample App: Tizengram
 
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談
 
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
 
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
 
はじめませんか? Bash on Windows
はじめませんか? Bash on Windowsはじめませんか? Bash on Windows
はじめませんか? Bash on Windows
 
Play2 translate 20120714
Play2 translate 20120714Play2 translate 20120714
Play2 translate 20120714
 
20151114 jawsug
20151114 jawsug20151114 jawsug
20151114 jawsug
 
Code injectiontool
Code injectiontoolCode injectiontool
Code injectiontool
 
JTF 2013
JTF 2013JTF 2013
JTF 2013
 

Ähnlich wie etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2

etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!Mitsutoshi Nakano
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話Masataka Tsukamoto
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)Yoko TAMADA
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntuKenichi Takahashi
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料Yasutaka Hamada
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp CodereadingHiro Yoshioka
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情Kenichiro MATOHARA
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
@nukokusa_botを支える技術
@nukokusa_botを支える技術@nukokusa_botを支える技術
@nukokusa_botを支える技術Joe_noh
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflowharubelle
 
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611Langur
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかMasahito Zembutsu
 
Linuxで温度計測あれこれ
Linuxで温度計測あれこれLinuxで温度計測あれこれ
Linuxで温度計測あれこれKenichiro MATOHARA
 

Ähnlich wie etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2 (20)

etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
etckeeperをopenSUSEの公式リポジトリに入れたいぞ!
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Tests and bugreports
Tests and bugreportsTests and bugreports
Tests and bugreports
 
HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)HTTP/2 in nginx(2016/3/11 社内勉強会)
HTTP/2 in nginx(2016/3/11 社内勉強会)
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
 
2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料2012/03/31 Apacheスタートスクリプト読書会発表資料
2012/03/31 Apacheスタートスクリプト読書会発表資料
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
@nukokusa_botを支える技術
@nukokusa_botを支える技術@nukokusa_botを支える技術
@nukokusa_botを支える技術
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
Yohes kitchen
Yohes kitchenYohes kitchen
Yohes kitchen
 
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflow
 
Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611Making Editor written in Ruby version 20160611
Making Editor written in Ruby version 20160611
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうか
 
Linuxで温度計測あれこれ
Linuxで温度計測あれこれLinuxで温度計測あれこれ
Linuxで温度計測あれこれ
 

etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2

  • 1. 1 etckeeper を openSUSE の公式リポ ジトリに入れたいぞ ! Ver.2 中野充敏 (@ItSANgo)
  • 2. 2 改版履歴 ● 2014-Aug.-17 Ver.1 公開 ● 2015-Jan.-10 Ver.2 発表 ● Ver.2 での追加・変更箇所は赤色で表示されている よ。
  • 3. 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. 4 予習 ● 「 etckeeper を openSUSE の公式リポジトリ に入れたいぞ ! 」 ● http://www.slideshare.net/MitsutoshiNakano/etckeeper-38070309 ● 予習してきました ? ● 予習してないと何のことかわからないよ !
  • 5. 5 何を話すか ● etckeeper について ● 2014 年 8 月から今日 (2015 年 01 月 10 日 ) ま でに起こったことをかいつまんで ● というか、資料流用しているよ、いい加減な奴 w ● 予習してこなかった人は黒い部分を読むといいよ。
  • 6. 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. 7 でも ● openSUSE の公式リポジトリにはない ● 非公式 (utilities) リポジトリにはある。 ● いちいち非公式リポジトリから取ってくるのも 面倒 ? ● なら、公式リポジトリに入れてもらえるようお 願いすればいいんじゃね ?
  • 8. 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. 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. 10 opensuse-factory ML に投げてみた ● http://lists.opensuse.org/opensuse-factory/2014-06/msg00068.html
  • 12. 12 超訳 ( 注 : TOEIC 355 点 ) ● 君の文章は、誰か人に頼んでいる文体だけ ど、 openSUSE はコミュニティなんだよ。 ● 自分でやれ ! 言い出しっぺの法則 !!!
  • 13. 13 何から始めればいいか ? ● とりあえずそれも、教えて君になって訊いてみ る。 ● http://lists.opensuse.org/opensuse-factory/2014-06/msg00071.html – openSUSE Build Service のアカウントを取る。 ( 取得済み ) – パッケージに対して role( 役割 : メンテナ・バグオーナ ) を申請する。 ● 今回は bug owner を申請した。 ● パッケージに bug があったら連絡が来る ( 損な役回り ?) – パッケージを Factory へ submitrequest する。
  • 14. 14 イメージ ● 第 1 回 Open Build Service 道場 (P.17 参照 ) ● http://www.slideshare.net/ftake/1-open-build-service
  • 15. 15 速攻で decline されました orz ● 機械的に decline の判断が下りました。 ● どうも spec ファイルが悪いらしい。 ● utilities の etckeeper の version も 1.7 と古い。 ● ( 当時 ) 最新は etckeeper-1.12 ● (2015-Jan.-09 現在 etckeeper-1.17) ● なら、最新版に更新するか…
  • 16. 16 そして初めてソースを見ました ● Etckeeper-1.12 はシェルスクリプト ( 他 ) の塊 ● 一つのスクリプトは 100 行程度、小さい。 ● etckeeper メインスクリプトがサブのスクリプトを呼び出 す。 – 全部で 133 ファイル ( ディレクトリ含む ) ● サブスクリプトがメインスクリプトを再帰的に呼び出して たり…。 ● そこそこ複雑。 ● 意外な発見あり ● 対応していないと思っていた機能があったり
  • 17. 17 対応していないと思っていた機能が ● Debian(Ubuntu)/Fedora では APT/YUM を実行 した後、 etckeeper が自動起動する。 ● openSUSE では ZYpp を起動しても etckeeper はスルー ● 仕様 ( 未対応 ) かと思っていたけど
  • 18. 18 あった ● ls したら ● zypper-etckeeper.py – あるやん ! (2012 年から ) – 今まで動いてなかっただけやん ! ● bug でした。 ● スクリプトに実行権限がついていませんでした。 ● 実行権限をつけると動く。 – けど、まだなんかおかしい。 ● upstream に pullrequest ● 速攻で update されました w
  • 19. 19 ここでいきなり etckeeper の使い方 ● Usage: etckeeper [subcommand] [args...] ● eg. etckeeper commit ● /etc/etckeeper/[subcommand].d/ ディレクトリ 配下のスクリプトを順番に実行する。
  • 20. 20 じゃあ、こんなことをしてみたら ● etckeeper ../init restart ● デーモンを再起動しようとする w ● 変じゃね ? ● とりあえず、 [subcommand] に「 ../ 」が入っ ていないかチェックする処理を入れました。 ● pullrequest しました。 ● https://github.com/joeyh/etckeeper/pull/14
  • 21. 21 するとある方からご意見が ● 超訳 ( 注 : TOEIC355 点 ) ● etckeeper のバグではなく、使い方の問題だろう。 ● 「 ../ 」を禁止すべきではない。 ● 裏ワザだって技だ ! それが UNIX だ ! alerque まさかの宗教戦争勃発か ?!
  • 23. 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. 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. 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. 26 なんで困るのか ? ● ZYpp がプラグイン zypper-etckeeper.py を呼び 出す。 ● zypper-etckeeper.py が etckeeper を呼び出 し、 VCS(git) を起動する。 ● 但し ZYpp プラグインのタイムリミットは 30 秒 ( デフォルト ) ● 30 秒を過ぎるとプラグインごと SIGKILL される。 ● git commit の最中に SIGKILL されたら… ● 想像するのもヤダ w
  • 27. 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. 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. 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. 30 どんどん進化する etckeeper ● DNF にも対応したよ。 ● Upstream の URL が変わったよ。 ● http://etckeeper.branchable.com/ ● GitHub への pullrequest に代わってこっちを使って ね !(Joey) ( 超訳 TOEIC355 点 ) ● でも使い方が解らん ( 私も alerque も ) – https://github.com/joeyh/etckeeper/pull/26#issuecomment-68162884 – 返事がない…。
  • 31. 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. 32 ところで Joey Hess ってどんな人 ? ● http://joeyh.name/code/ ● なんと debhelper も Ikiwiki もこの人の作 ● 多分お忙しいんですよね ● dis ってごめんなさい
  • 33. 33 所感 ● 言い出しっぺの法則こわい w ● 英語が解らなくても何とかなる。 ● 思ったよりいけてない ! ● 意外と泥臭い FLOSS の世界 ● 逆に考えるんだ ! ● 活躍の場はかえって大きいと言えるんじゃね ? ● お気に入りのソフトを見つけてソースを追っかけてみるといい よ。 ! ● openSUSE Build Service なら簡単に package 化することが できるよ ( 宣伝 )

Hinweis der Redaktion

  1. Netでは135を名乗っています。 現在、職についていません。暇だけが資本です。 有意性は切れていますがTOEIC355点ということで英語は全然できません。