likana、deb パッケージ公開までの流れ(備忘録を兼ねて)
目次
- 目的
- 前提
- likana プログラム作成の流れ(備忘録として)
- deb パッケージ作成
- Lanchpad で公開するには
- github の README.md をまじめに書く
- ソースコードのコメントの Doxygen*4 対応(2016/01/01 追記)
- 所感
目的
表題の件、自分の備忘録も兼ねて deb パッケージの作成作業の流れと、参考にしたサイトなどを記載する。
前提
- 開発環境は ubuntu12.04 desktop
- github アカウントは既に持っている
- "ubuntu one" アカウントは既に持っている(そのまま Lanchpad アカウントとして使えました。)
likana プログラム作成の流れ(備忘録として)
IMEオフ時の誤った入力を改善したかった
→Windowsのフリーソフトhttp://suwa.6.ql.bz/rikana.htmlを発見し、仕様を真似て Linux 版を作ろうと思った。
Linux でのキーロギングの方法はどうするか。
Orca Screen Reader*1を調べた際に知った vcs *2 が仮想コンソール出力なので使えるのではないか。
→ vcs だと X window は取得できないので、今回向きではない。システムコールの read を横取りする。
→カーネル寄りでちょっと大げさ。入力に対する処理が大変そうで、キーボード入力も別途考えないといけないので却下。参考書籍は下記。
書籍 : "Programming Linux Hacker Tools Uncovered"
著者 : Ivan Sklyarov
- input subsystem を使う。参考にしたURL Linux Input Subsystemの使い方
→IMEの種類にも依存しない。ファイルディスクリプタを利用する簡単な方法でキーロギングできるので、今回の件にぴったり。キー入力もそのまま使える。
プログラム作成について下記を調べた
- input.h *3について調べる
- C言語コーディング規約のこともあり、引数をうまいこと取得したい。参考URL The GNU C Library: Getopt Long Option Example
- マウスイベント取得のため、C言語のスレッドの使い方を調べる。参考URL http://www.fireproject.jp/feature/c-language/pthread/pthread_create.html
- 書いたプログラムをデーモン化させたい。参考URL 標準出力にログを吐くアプリケーションのデーモンを start-stop-daemon で立てる - Qiita
- デーモンがリダイレクトを行うにはどうするか。参考URL 自作シェルスクリプトをdaemon化 - 農業をITから考える頁
- initスクリプトの起動をinsservで管理。参考URL http://server-setting.info/debian/debian-like-chkconfig.html
deb パッケージ作成
- 参考URL http://www.ep.sci.hokudai.ac.jp/~epnetfan/zagaku/2000/1006/deb-make.html
- 参考URL https://www.debian.org/doc/manuals/maint-guide/update.ja.html#ftn.idp44257216
- Makefile の書き方はどう変更すればよいか。参考URL http://tokyodebian.alioth.debian.org/pdf/debianmeetingresume200802-hanson.pdf
- そもそもdeb パッケージでの sysvinit, upstart, systemd 対応をどのように行うか。参考URL http://d.palmtb.net/2014/01/30/how_to_create_a_debian_package_of_support_to_sysvinit__upstart__systemd.html
Lanchpad で公開するには
- 流れについての参考URL 第46回 PPAの活用:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
- 上記サイトの記載にプラスした細かい注意などの参考URL ubuntuパッケージをlaunchpad ppaで公開する方法 - ラシウラ
github の README.md をまじめに書く
- README をきちんと書こうと思った。参考URL わかりやすいREADME.mdを書く | SOTA
- アニメーションGIFで説明したい。参考URL ffmpeg と ImageMagick で動画をアニメGIF 変換
下記では、3秒後にマウスを中心とした 320*200で5秒間キャプチャを行います。 その後、png 画像に切り出しImageMagickでアニメーションgif を作成しています。
- 画像置き場は GitHub pages が良さそうです。参考URL GitHubのREADME.mdにスクリーンキャストを埋め込む方法 - SundayHacking
ソースコードのコメントの Doxygen*4 対応(2016/01/01 追記)
ver. 1.3 のリリースに合わせて、コメントを Doxygen の JavaDoc スタイルで記載し、ついでに man ページ用のファイルも作成しました。
コメント記載にあたり、下記のページが参考になりました。
Doxyfile(基本的な設定) — Algo13 2015.12.28 ドキュメント
Doxygen対応Cプログラムコメント記述例ご紹介 | 株式会社ライト・ライト
Doxygen
GitHub Pagesでの関数リファレンスなどのドキュメント公開
下記ページを参考にドキュメントの作成、公開を行いました。
ページの公開
cd ~/program/c/likana_git/ git clone git@github.com:maijou2501/likana.git docs cd docs git checkout --orphan gh-pages git rm -rf . cd .. doxygen cd docs git add . git commit -a -m "First pages commit" git push origin gh-pages
GitHub の設定変更等
git submodule add -f -b gh-pages git@github.com:maijou2501/likana.git docs # gh-pagesブランチの更新 cd docs git add . git commit -m 'Update docs(gh-pages)' git push origin gh-pages # masterブランチの更新 cd .. git add docs/ git commit -m 'Update docs(master)'t
所感
likana の作成で少し燃え尽き症候群になり、手抜きのエントリになってしまい申し訳ないです。
参照URLなど忘れないうちに記録しておきたかったという目的は果たせたと思います。
また「C言語で作ったプログラムをデーモン化させて初めてdebパッケージで公開したい」という人には、
少しは参考になるのではと考えています。
以上