nDiki : inotify

2006年8月8日 (火)

Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索

Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。

Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。

ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.orgMicrosoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。

ちなみに今まで

ローカルファイルの検索

メールMew 4 での検索(with Namazu)。
nDiki 記事howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。
メモhowm
開発中のソースコードEmacsgrep-find でだいたい事足りる。たまに ack。
仕事のメモできるだけ社内 Wiki社内 Blog に書いておいて Hyper Estraier
その他grep 程度。

といった感じかな。

それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。

問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。

そんなファイルを見つけるのが楽になれば、導入効果あり。

インストールして試してみる

Linux kernelinotify を有効にする

まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て

 CONFIG_INOTIFY=y
 CONFIG_EXT2_FS_XATTR=y
 CONFIG_EXT3_FS_XATTR=y

となっていることを確認。

/home の extended attributes を有効にする。

/etc/fstab を編集し、

 /dev/hda4 /home ext3 defaults 0 2

 /dev/hda4 /home ext3 defaults,user_xattr 0 2

に変更する。書き換えたら、

 mount -o remount /home

でマウントしなおす。

Beagleインストール

Debian パッケージインストール

Beagle を起動

一般ユーザで

 beagled

で起動する。停止は

 beagle-shutdown

で。

Beagle を設定
 beagle-settings

で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。

検索してみる
 beagle-search

検索 UI を起動し検索してみる。 日本語も OK のようである。

GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。

KDE 系のクライアントもあるので別途いろいろ確認

Firefox 拡張

xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。

設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。

感想

デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。

日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。

スポンサード リンク
[ 8月8日全て ]

2008年1月4日 (金)

今日のさえずり - アイスも冷凍食品も全滅っぽい

[ 1月4日全て ]

2008年1月5日 (土)

aufsinotify を使ってブランチ上の直接の変更をすぐに反映させる

最近 aufs を使って Web サイトのドラフトを作成する(記事)ようにしているが、使っていて1つ不具合が出てきた。 今の設定だと、ブランチ側(今回の使い方だと公開ディレクトリツリー)のファイルを直接変更しても、aufsキャッシュによりマウントしたディレクトリ側ではその変更されたファイルではなく、変更される前のファイルが見えてしまう。 これはちょっと不便。

マニュアルを見るとマウント時のオプションで udba=inotify を指定して inotify を使うようにすれば良いとのこと。

早速指定してみたがマウント時にエラー。 どうやら udba=inotify を使えるようにモジュールをコンパイルしていなかったようだ。

aufs モジュールを作り直し (Debian GNU/Linux sid)

aufsマニュアルを見ると CONFIG_INOTIFY と CONFIG_AUFS_UDBA_INOTIFY を有効にする必要があるとある。前者は Linux kernel ビルド時に指定済み。

後者を有効にして aufs を作り直す必要がある。

module-assistant だと設定の仕方がわからないので、aufs.tar.gz2 展開して直接 make-kpkg modules_image でビルドするようにした。

aufs.tar.gz2 を展開後、debian/conf.mk を編集して

  • export CONFIG_AUFS_HINOTIFY = y 行を追加
  • EXTRA_CFLAGS 指定のところで、-DCONFIG_AUFS_HINOTIFY を追加

とし、後は普通に make-kpkg を使う。 マニュアルとは設定名/マクロ名が違うので、ちょっとはまったがこれで udba=inotify を使えるようになった。

マウントする

前回のマウント方法をちょっと修正して以下のようにする。

 mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro,udba=inotify none /home/naney/next.naney.org

これで /home/naney/www.naney.org 以下を修正すると、すぐさま /home/naney/next.naney.org の方でも反映されるようになった。

メデタシメデタシ。

[ 1月5日全て ]

2009年2月7日 (土)

Debian Linux kernel 2.6.26 にアップデート

ThinkPad X31 に入れている Debian GNU/Linux sid でしばらく Linux kernel 2.6.23 を使っていたが、TrueCrypt 6.1a を入れたら「2.6.23 以下じゃヤバいよ」と表示されたので 2.6.26 にアップデートすることにした。 Debian 標準イメージを入れてみたが、やはり今まで通りサスペンドできないので、今回もビルドしなおし。

追加で入れるモジュールは aufsMADWIFI

 #apt-get build-dep linux-image-2.6.26-1-686
 #apt-get install linux-source-2.6.26 aufs-source madwifi-source
 #exit

 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.26.tar.bz2
 $cd linux-source-2.6.26
 $cp /boot/config-2.6.26-1-686 .config
 $make menuconfig
 $make-kpkg clean

 $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.26_sebastian.1.0_i386.deb

最初は 2.6.23 の時のソースツリーで make menuconfig したのと見比べながら素から設定したのだが起動中 hda のハードウェアの認識(?)で止まってしまった。 なのでとりあえず起動する .config は Debian 標準イメージのものをベースにすることにした。 変更は ACPI を外して APM を追加した程度。

Debian 標準イメージは IDEext3 もモジュールになっていて initrd 使わないと起動できないので今回から --initrd を指定してビルドすることにした(一度忘れてビルドして起動したら何度かアチャーしたことのある kernel panic になった)。

再起動。起動後 cpufreqd が動かなかったが、modprobe speedstep-centrino したら今までどおり cpufreqd が立ち上がって省電力化できた。

次に MADWIFIインストール。こちらも問題なく接続。

 #module-assistant prepare
 #module-assistant auto-install madwifi

aufs前回の方法で udba=inotify できるモジュールを作成。

TrueCrypt もテストして警告を出さなくなっていることを確認。 火曜日ぐらいから、ちんたら何度かビルドしないしながら昨日ここまで辿りついた。 めでたしめでたし。

しかし Debian 標準イメージの .config 級の設定だとビルドに1回2時間前後だったかかかるようになった(nice 下だけれど)。 トライアンドエラーしはじめるとかなり時間がかかるな。


[ 2月7日全て ]

2009年2月13日 (金)

ファイルを変更すると自動的に rsync してくれる lsyncd

ファイルを変更すると「何もしなくても」自動的に同期してくれる Dropbox が非常に便利で昨年9月以来ずっと使っている。 「何もしなくても」同期してくれるというのが気にいったので、Linux 上でもいいソフトウェアがないか探してみた。 で見つけたのが lsyncd (というか1年以上前に1度チェックした形跡があるが記憶にない)。

inotify でファイルの変更を検出して自動的に rsync を実行してくれるというもの。 裏で rsync を呼び出すので同期先は rsync できる場所ならローカルでもリモートでも OK。

例えば lsyncd /tmp/a/ /tmp/b/ とすると、/tmp/a/ でファイルの作成・変更・削除を行うと /tmp/b/ にもすぐ反映される。 これはいい。 一般ユーザでも実行可能。

Dropbox から USB メモリに常に同期しておくのとかに使えそうだな。

なおデフォルトでは

 -lt%r --delete {--exclude-from [FILE]} [SOURCE] [DIRECTORY]

というオプションで rsync が呼び出される (%r は lsyncd 起動時には r、それ以外は d になる)。 ここで --delete が指定されているので注意。 lsyncd.conf.xml ファイルを作成して --conf オプションでそのファイルを指定すれば、rsync の引数を変更できる。 rsync の --delete オプションを外し、また -a オプション相当を指定するならば以下のような設定ファイルを作ればよい。

 <lsyncd version="1">
   <settings>
     <callopts>
       <option text="-%rlptgoD"/>
       <exclude-file/>
       <source/>
       <destination/>
     </callopts>
   </settings>
 </lsyncd>

ただしソース側で chmod をしてもイベントを拾わないので、すぐには rsync が実行されず権限が同期先に反映されないことを理解しておく必要がある。 lsyncd ではディレクトリ単位で rsync を実行するので、同じディレクトリでファイルの変更等がおきることで副次的にそのディレクトリの他のファイルの権限変更が同期されることになる (rsync で -p オプションを指定している場合)。

Debian GNU/Linux sid では Debian パッケージになっていないようで、今回はソースからインストールした。

 tar zxvf lsyncd-1.26.tar.gz
 cd lsyncd-1.26
 dh_make --createorig
 fakeroot dpkg-buildpackage
 sudo dpkg --install ../lsyncd_1.26-1_i386.deb
[ 2月13日全て ]

2009年10月4日 (日)

ThinkPad X31sidLinux kernel 事情

ここ最近 ThinkPad X31Debian GNU/Linux sid が調子が悪い。 いろいろ調査・トライしてみている途中の状態をメモ

状況

  • いつごろからか、サスペンドしても ThinkPad X31 の月ランプが光らなくなった。
  • 8月19日ぐらい(から、使用中に Caps Lock キーが点滅してフリーズするようになった。(記事)。
  • 9月11日ぐらいから digiKam写真データを認識しなくなった(記事)。digiKam 更新で対応。
  • 9月23日ぐらいからサスペンドさせると復帰時に Caps Lock キーが点滅して Kernel panic になるようになった(記事)。
  • 9月29日に X があがらなくなった(記事)。こちらは xserver-xorg-core ダウングレードで対応。
  • Linux kernel 起動時に udev が「今の kernel だとデバイスあたりの処理がおかしくなるかもよ」というような警告を出すようになった。

アプリケーションや X の不具合などと重なって unstable 全開だ。

Linux kernel については各種パッケージの更新に追いつけなくなっているようなので、アップデートをかける必要がありそう。

Linux kernel 再構築

Debian GNU/Linux の標準イメージを使ってみたが、ThinkPad X31 では例によって ACPI では蓋の開閉でサスペンドしない。 APM を使うようにした Debian kernel パッケージ構築が必要。 しかし今年の2月に 2.6.26 をビルドした時(記事)から、いろいろ変更があったようで一筋縄ではいかなかった。 以下は最終的な手順(たぶん)。

 #apt-get build-dep linux-image-2.6.30-2-686
 #apt-get install linux-source-2.6.30 aufs-source
 #exit

 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.30.tar.bz2
 $tar zxvf /usr/src/aufs.tar.bz
 $emacs modules modules/aufs/Makefile
 $cd linux-source-2.6.30
 $cp /boot/config-2.6.30-2-686 .config
 $make menuconfig
 $make-kpkg clean

 MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image modules_image
 $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.30_sebastian.1.0_i386.deb aufs-modules-2.6.30_0+20090302-3+sebastian.1.0_i386.deb
 #update-initramfs -c -k 2.6.30
 #update-grub
  • aufs inotify を有効にする(記事)必要があるのだが、modules/aufs/debian/conf.mk が無くなっていた。modules/aufs/Makefile 側で同様の設定追加をする必要あり。
  • MADWIFI はコンパイルが通らなくなっていた。
  • 自前で作った linux-image の Debian パッケージが、initrd まわりの処理をうまくしてくれない。自分で update-initramfs した。

MADWIFI はもはやコンパイルが通らなくなっていた。 試してみたところ ath5k で通信できるようになっているではないか。modprobe ath5k すると wlan0 が使えるようになった(MADWIFI の時は ath0)。

initrd 関係は結構はまった。 最初いつも通りビルドして dpkg した後再起動したのだが、"Unable to mount root fs on unknown-block(0, 0)" が出て先にすすまない。 IDE まわりや ext2ext3 まわりを M から y にしても駄目。 何度か試しているうちに、 linux-image を dpkg --install した際に実行される update-grub のメッセージで自分で作った Linux kernel だけ initrd 関係の処理がされないことに気がついた。 自前で update-initramfs したらようやく 2.6.30 が起動するようになった。

2.6.30 にすることで起動時の udev の警告は解消された。 しかしながらサスペンドはまだ駄目。 復帰時にフリーズする。 やはりパワー関係の処理があやしい。今は AC アダプタを外しても KPowersave は気付かない。

もう少しおっかける必要がありそう。

対応できるまではサスペンドできず。毎回起動したりシャットダウンしたりするの面倒くさーい。

[ 10月4日全て ]

2010年10月1日 (金)

今日のさえずり: そういえば乳がん検診を受けたことがない

naney:5043752173

2010年10月01日

[ 10月1日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.170931s / load averages: 0.74, 0.75, 0.77
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker