ipa fontのDebian Packageを公開した
初めてのDebian package。初めてのgithub公開。後悔はしていない。
githubのアカウントは随分前にとっていたのだが、公開するネタがなかったので放置していた。来週の楽天テクノロジーカンファレンスでディストリビューション大集合の打ち合わせをいろいろしているのだが、IPAフォントの評判がライセンスがオープンソースライセンス(debian的な意味で)でないので、debianにふくめることができなくて、苦労しているという話が出ていて、それはそれとして有名な話なのであるが、自分が作ったパッケージを公開しても問題は解決しないということを判っていたうえで、パッケージの作り方、githubの利用の仕方の勉強の意味もかねて、ここに公開することにする。
公開までの手順。
githubのアカウント登録方法などは略。
- 自分のアカウントにログイン
- 右上あたりに、Your Repositories (create a new one)というのがあるので、そこをクリック
- Project Name/Description/Homepage URLなどを適当にいれる。Project Name はパッケージ名になるので、ここではttf-ipafontなどとする
- github上にrepositoryができるので、ローカル環境にgitの環境を作り、pushする。
$ git config --global user.email hyoshiok@miraclelinux.com あらかじめ、ローカルにレポジトリがあれば $ git remote add origin git@github.com:hyoshiok/ttf-ipafont.git $ git push origin master みたいな感じでOKだし、 新規に作成するならば、 $ mkdir ttf-ipafont $ cd ttf-ipafont $ git init $ touch README $ git add README $ git commit -m 'first commit' $ git remote add origin git@github.com:hyoshiok/ttf-ipafont.git $ git push origin master てな感じだ。 簡単簡単。
上記パッケージの利用方法。ソースコードからのビルド
$ git-clone git://github.com/hyoshiok/ttf-ipafont.git $ cd ttf-ipafont/ $ dpkg-buildpackage -rfakeroot
簡単簡単。
packagerが会社名(MIRACLE LINUX CORPORATION)になっているのは会社で作ったから。
追記:debian/copyrightの内容が正しくないという指摘を岩松さんからいただいた。早速直した。感謝します。(オープンソースの力ですね)
rubyの一行パッチを書いた。
rubyについてはまったくの門外漢であるが、http://redmine.ruby-lang.org/issues/show/699 という問題を教えてもらったので、早速解析してみた。
$ svn diff Index: vm_method.c =================================================================== --- vm_method.c (revision 20238) +++ vm_method.c (working copy) @@ -314,7 +314,7 @@ if (OBJ_FROZEN(klass)) rb_error_frozen("class/module"); if (mid == object_id || mid == __send__ || mid == idInitialize) { - rb_warn("removing `%s' may cause serious problem", rb_id2name(mid)); + rb_bug("removing `%s' may cause serious problem", rb_id2name(mid)); } if (st_lookup(RCLASS_M_TBL(klass), mid, &data)) { body = (NODE *)data;
rb_warn()でエラーを報告するのではなくrb_bug()でエラーを報告し、すなおにabortする。
$ ./ruby -e 'class Exception; remove_method(:initialize); end;' -e:1: [BUG] removing `initialize' may cause serious problem ruby 1.9.0 (2008-11-15 revision 20237) [i686-linux] -- control frame ---------- c:0005 p:---- s:0012 b:0012 l:000011 d:000011 CFUNC :remove_method c:0004 p:0013 s:0008 b:0008 l:000007 d:000007 CLASS -e:1 c:0003 p:0009 s:0006 b:0006 l:000005 d:000005 TOP -e:1 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP <dummy toplevel>:17 --------------------------- DBG> : "-e:1:in `remove_method'" DBG> : "-e:1:in `<class:Exception>'" DBG> : "-e:1:in `<main>'" -- backtrace of native function call (Use addr2line) -- 0x812b7d4 0x81593f1 0x8159448 0x8125668 0x81257c2 0x811943d 0x811b313 0x811dd8d 0x81220c4 0x81222ac 0x805d32f 0x805e756 0x805bd50 0xb7d5c685 0x805bc51 ------------------------------------------------------- Aborted
どうせリカバリできないbugなので、情報を出力してabortする方がいろいろヒントを出してくれるので、実装者としてはウレシイのではないかと思ったのだが、いらないお世話ですかね。