Debian では、パッケージの分類方法の一つとしてセクションを使っている。セクションは主に各パッケージがどんな種類・用途であるかという分類で、「web」「sound」「video」といったものや、「perl」「ruby」といった言語によるものなど多岐にわたっている。
どんなセクションがあるかを知るには、Debian Policy Manualを見るのがよいが、リリースによって異なるので、packages.debian.org を見るのがよいだろう。
各セクションがどのくらいのバイナリパッケージがあるのか、自分の環境で調べてみた。若干独自パッケージがあるので正確ではないが、概ね正しいだろう。
% grep Section: /var/lib/dpkg/available | sort | uniq -c
957 Section: admin
1 Section: base
117 Section: comm
8 Section: contrib/admin
1 Section: contrib/comm
11 Section: contrib/devel
24 Section: contrib/doc
1 Section: contrib/editors
1 Section: contrib/electronics
31 Section: contrib/games
5 Section: contrib/graphics
1 Section: contrib/kde
5 Section: contrib/libdevel
25 Section: contrib/libs
6 Section: contrib/mail
3 Section: contrib/math
8 Section: contrib/misc
6 Section: contrib/net
16 Section: contrib/otherosfs
2 Section: contrib/perl
3 Section: contrib/python
4 Section: contrib/science
5 Section: contrib/sound
1 Section: contrib/tex
16 Section: contrib/text
8 Section: contrib/utils
5 Section: contrib/web
15 Section: contrib/x11
1 Section: database
1672 Section: devel
1317 Section: doc
299 Section: editors
83 Section: electronics
21 Section: embedded
8 Section: fonts
998 Section: games
441 Section: gnome
434 Section: graphics
87 Section: hamradio
6 Section: httpd
492 Section: interpreters
439 Section: kde
1 Section: kernel
2595 Section: libdevel
3307 Section: libs
482 Section: mail
418 Section: math
599 Section: misc
1389 Section: net
33 Section: news
10 Section: non-free/admin
4 Section: non-free/comm
15 Section: non-free/devel
96 Section: non-free/doc
2 Section: non-free/editors
5 Section: non-free/electronics
28 Section: non-free/games
16 Section: non-free/graphics
10 Section: non-free/libdevel
16 Section: non-free/libs
2 Section: non-free/mail
9 Section: non-free/math
12 Section: non-free/misc
17 Section: non-free/net
1 Section: non-free/news
3 Section: non-free/otherosfs
2 Section: non-free/perl
1 Section: non-free/python
38 Section: non-free/science
5 Section: non-free/sound
5 Section: non-free/tex
11 Section: non-free/text
9 Section: non-free/utils
5 Section: non-free/web
54 Section: non-free/x11
66 Section: oldlibs
93 Section: otherosfs
1632 Section: perl
8 Section: php
828 Section: python
9 Section: ruby
309 Section: science
27 Section: shells
617 Section: sound
286 Section: tex
723 Section: text
1157 Section: utils
5 Section: vcs
961 Section: web
1052 Section: x11
libs と libdevel が多いのは、ライブラリはどんな種類のものでもすべて libs に入るから。
デジカメで撮った大量の写真を整理するため、incoming ディレクトリに画像を置いてもらい、自動的に処理する仕組みを inotify を使って作ってみた。その方法を詳しく解説する。
デジカメで撮った大量の写真をどのように整理するか。最近は Windows 本体にも整理ツールが入っているし、Picasa などのアプリケーションもある。Linux 版の Picasa だってあるし、他にも様々なツールがある。
ぼくは、自作のインポートツールを使って、撮影日のディレクトリに撮影日時・撮影者のファイル名で保存するようにしている。このディレクトリは毎日別のディスクにコピーされ、別のサーバにもコピーされる。バックアップもほぼ完璧である。5年以上この方式でやっていて、ファイルもたくさんある。このディレクトリを Picasa に噛ませれば、Picasa でも処理できる。自分一人でやっている分にはこれで十分。
だけど、結婚して自分が撮った写真以外も管理しようとすると、途端に面倒になる。Linux を使っているのは自分だけだから、このツールを使うのは難しい。かといって Windows 上で管理すると、分散してしまうしバックアップの不安もある。今までは仕方なく、妻の分をぼくが処理していたが、やはり面倒なので、妻ができればいいなと思った。
そこで、Windows から samba 経由で incoming ディレクトリにファイルを置いてもらい、それを自動で処理するようにしてみようと思った。いままでなら cron などで定期的にディレクトリをチェックして処理するという方法が一般的だったが、今は Linux には inotify という素敵な仕組みがあるので、これを利用すればいいなと思った。
inotify に関しては、上記 Wikipedia のページや IBM developerWorks の記事「inotify を使ってファイルシステムのアクティビティーを監視する」に詳しく書かれているが、簡単に言えば、特定のファイルやディレクトリをカーネルが監視し、変化が起きたらそれをトリガにして処理を行うという仕組みだ。C の API の解説があるが、シェルから簡単に使えるinotify-toolsというのがあるので、これを利用するのが良い。Debian なら apt-get install inotify-tools でインストールすることができる。
さらに今回のように、起動中常に監視し処理を行う場合は、inotify-tools を直接使うより、incronというツールを使うのがよい。incron は cron のようにデーモンとして動作し、設定を書くことによって inotify を使って特定のコマンドを起動できる仕組みだ。Debian であれば、これまた apt-get install incron でインストールできる。
incron の使い方は詳しく書かない。なぜなら、SourceForge.JP Magazine の記事「ファイル/ディレクトリの変更に応じて任意のジョブを実行するincron」に詳しく書かれているからだ。ここに書かれているとおり設定すれば、ほぼうまくいく。すばらしい、SourceForge.JP Magazine。
/etc/incron.d/import に
/var/opt/incoming IN_CLOSE_WRITE,IN_MOVED_TO /usr/local/bin/import-files $@/$#
などと書いておけば、/var/opt/incoming にファイルが置かれたときに import-files が動いてくれる。cp コマンドや samba 経由でのコピーでうまくいくことが確認できた。
だが、そこには恐るべき罠が潜んでいるのであった。
早速、Windows フォトギャラリを使って取り込んでみると、うまく処理できない。なぜなら、Windows フォトギャラリーは、取り込み先ディレクトリの先にさらにサブディレクトリを作成し、その下にファイルをコピーするからだ。メーリングリストアーカイブの「Re: incron recursive monitoring」を読むと、再帰的に処理する機能は実装していないようだ。今年の4月にも催促されているが、音沙汰無しのようだ。これには参った。
他になにかツールはないかと探したところ、inoticomingというまさにほぼぴったりのツールがあった。しかしこれも、再帰的には探索できないようだ。
しかし幸いにして Windows にはもう一つ「Windows Live フォトギャラリー」という類似ツールがあり、こちらはサブディレクトリを作らないという選択も可能。こちらを利用したところ、うまく動作させることができた。
ほっとしたのもつかの間、さらに問題が発生した。
テストが無事上手くいき、実際にインポートしたところ、ファイルがコピーできていないことがわかった。調べてみると、ファイル名に空白が入っている場合、引数が上手く処理できていないからだった。Windows Live フォトギャラリーの設定で、ファイル名をオリジナルのままでコピーするようにしているのだが、コピー先に同名のファイル(foobar.jpg)があると、「foobar (2).jpg」というファイル名でコピーする。このとき、incrond から渡されるファイル名がそのまま引数にわたるので、第一引数が「foobar」になってしまう。これでは役に立たない。
そこで、incrontab のファイル名部分をダブルクオートやシングルクオートで囲ってみたが、それはあっさり無視されてしまう。ファイル名に空白が入ることなど全く考えていないようだ。
標準入出力で渡すなどいろいろと試してみたが、すべてうまく行かず途方に暮れて、結局 import-files シェルスクリプトで file="$*" と書いておいた。引数がファイル名だけで、かつ空白が二つ以上連続しないという条件を満たせば、とりあえず処理はできる。この dirty hack をいれたら、きちんと処理できた。
でも、もっと上手いやり方があるとは思うのだが…。
とりあえず inotify でうまくやれた。incron ではいくつかのトラブルがあったが、inotify は意外といけるという印象を持った。たしかにこう書くといろんな場面で使えそうだが、しかし単純にはいかない場合も多い。
今回、Windows Live フォトギャラリーのインポート機能を使い、samba 経由でコピーした。コピー終了時の close をトリガーとするため、IN_CLOSE_WRITE イベントを利用したが、なんとこのイベントが同じファイルに対して連続3回発生するのだ。つまり、連続3回起動してしまう。
ぼくがやったことは単純にはただのコピーなので、後から起動されたものが上書きしてしまえば良い。だが、一回だけなんらかの処理を行いたいという場合は、同時に複数起動されても大丈夫なように書いておく必要がある。また、最初のトリガのときに mv などしてしまうと、まだ Windows 側で処理が続いている場合があって、そちらでエラーが出てしまう(Windows Live フォトギャラリーではエラーが出た)。
上記からわかるように、単純に使える便利なモノというほどのものではないが、それでもそれなりに有用なツールだとは思う。もうちょっとうまくやれる方法を引き続き考えていきたい。
日本語でSphinx searchを使おうと思っていろいろ調べてみたが、どうにも情報が見あたらない。普通に使ってみると、日本語のものがインデックスされず、使い物にならない。日本語で検索エンジンを使おうという人は、Senna やHyper Estraier、古くはNamazu といった日本人が作成したものを使うのが一般的なので、日本人以外が作成したものはほとんど使われておらず情報もほとんど無い。日本語が通らないものも多いしね。
でも、Sphinx はプレゼンで日本語や中国語が扱えることを謳っているので、必ず使うことはできるはず。そう思って「Sphinx search 日本語」などで検索して探してみたんだけど、紹介はあっても使い方は誰も書いていない。きっとユーザはいないんだと思う。
それで途方に暮れていたんだけど「Sphinx search japanese」で検索したら、Sphinx Search in Japanese という記事が見つかった。日本語の検索エンジンの話だから、日本語で書かれているだろうと想像したのだが、甘かった…。いまや日本語は国際的なのね。
ここで書かれているとおりに設定したら、ちゃんと日本語を扱うことができた。このテーブルが正しいのかどうかは検証していないので、実は扱えない文字とかもあるかもしれない。
この人はJapanese Sphinx Explainedという記事も書いていて、日本語の文字の正規化(カタカナとひらがなを同じように扱うとか)などを解説している。日本語のことをよくご存じな方らしい。
このエントリは、自分のように情報が無くてハマっている人のポインタとして記録しておこう。
http://www.apple.com/jp/iphone/iphone-3g-s/
発表された。一番の魅力は bluetooth モデム機能なんだけど、softbank mobile で使えるかどうかはまだ不明。使えるとしても料金上限は上がるだろうが、イーモバイルとの併用よりは安くなると期待したい。
iPhone ケースは今のところ売り切れだが、問い合わせてみたところ2〜3週間後に再入荷するとのことだ。iPhone を入手するならこれもセットだな。
_ jubrilabriell [ Hi, to all Forum-Members, I am Jessica Martinez, a mother..]