2月 222011
 

さてさて。前々回のエントリで 「DAViCal サーバを FreeBSD で。」って言うのを書いたのですが、色々やっていたら、FreeBSD では動作しない。と言うことが判明しました。

どういう状況の時に動作しないのか。と言えば、ports から www/apache22 をインストールして、 httpd-2.2.17 をインストールしたときです。この時、WebDAV を利用するので WITH_DAV=true と WITH_DAV_FS=true を指定するわけです。

後は、httpd-vhosts.conf や httpd-dav.conf に設定を施してさてどうだっ!! ってやるんですが、これがまた動作しない。アカウント作成などは無事にできるので php5 と postgresql の連携はうまく行っているみたい。クライアントからのアクセスが全くダメな状態なのでありました・・。orz。

今回はまったのは全部で二つ。順番に見ていくことにしましょう。あ。ここまでの到達では、postgresql-server-8.4.7 が無事に動作し、 php5 が無事に動作し、 davical でアカウントが作成されていることが必須です。

つまりは Lightning で接続したけど、全くつながらない。って状態の時のトラブルシューティングです。

最初のはまり道。405 が返る。
telnet localhost 80 とかして HTTP で davical の caldav.php を手で指定して実行するんだけど、エラー 405 のエラーが返ってくる状態。httpd が出力するアクセスログには以下のように残っている場合ではね。

"PROPFIND /caldav.php/takachan/home/ HTTP/1.1" 405 400
"PUT /caldav.php/takachan/home/c848-7bf5-4627-8b9d-d35b.ics HTTP/1.1" 405 43

 
この場合、davical をインストールしたディレクトリの DAV On が有効になっていません。その場合は httpd-dav.conf など WebDAV の設定を見直してみましょう。

ちなみに telnet コマンドでも WebDAV がオンになっているか確認できます。

$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
OPTIONS /index.html HTTP/1.1
Host: localhost
HTTP/1.1 200 OK Date: Tue, 22 Feb 2011 12:44:39 GMT Server: Apache/1.3.42 (Unix) PHP/5.3.5 with Suhosin-Patch DAV/1.0.3 Content-Length: 0 Allow: GET, HEAD, OPTIONS, TRACE
Connection closed by foreign host.

 
“Allow: GET, HEAD, OPTIONS, TRACE” で WebDAV が利用できるメソッドが表示されます。これが表示されない場合は DAV On が効いていません。 httpd.conf の設定を見直しましょう。

ちなみに上記の環境では FreeBSD の ports から www/apache13 、 www/mod_dav 、 lang/php5 をインストールしています。

この環境において DAViCal がサクっと動作した状態です。ここまで来るのが大変だった。

更に続くはまり道。400 が返る。
HTTP のエラーコード 400 は Bad Request。全くもってどうしようも無い状態。最初は www/apache22 でやっていたんだけど、エラーログに以下のように出力される。

Could not fetch resource information.  [400, #0]
(2)No such file or directory: The URL contains extraneous path components.
The resource could not be identified.  [400, #0]

 
二行目は長いので折り返しています。DAViCal の設定で $c->dbg[‘ALL’] = true; ってのがあるのですが、こいつを有効にすると debug メッセージを apache のログに出力してくれるのですが、上記のメッセージが出力する場合、デバッグログさえ出力してくれない。なので明らかに mod_dav のほうで出力しているメッセージ・・。

後、telnet localhost 80 で確認したところ、

PROPFIND /caldav.php HTTP/1.1

 
こっちは動作する(つまり 200 が返る)んだけど、

PROPFIND /caldav.php/takachan/home/ HTTP/1.1

 
こっちは動作しない(つまり 400 が返る)。なんか、明らかに mod_dav の問題ぽいのであります。

ついつい www/apache22 のソースを見たら、 modules/dav/main/mod_dav.c の 729 行目辺りでこのメッセージが出ているのだけど、なんか、httpd.conf の設定ファイルの読み込みがおかしいんでないかい?って感じになったのでありました。

もう、apache22 に添付されている mod_dav のコードがおかしいと思えてきたのでここで、apache22 は捨てて apache13+mod_dav にしてみたのでありました。

そしたらあーたっ!! サクっと動作してしまったではあーりませんかっ!! あいや・・。もっと早くから apache13 でトライするんだったよ・・。

 
と、言うことで http アクセスのエラーコード 405->400 をなんとか乗り越えて無事に DAViCal は動作したのでありました。

原因はどこにあるんかなぁ。davical-0.9.9.4 かなぁ? とわ言いつつ、apache から DAViCal の php にまで渡ってないんだよねぇ・・。

するとただ単に httpd-dav.conf の設定が悪いだけか? けど、 DAV On にするだけだし、そもそも PROPFIND /caldav.php の時は無事に動作して PROPFIND /caldav.php/ だと 400 になるんだから、やっぱり apache22 付属の mod_dav を疑ったほうが良いのかなぁ・・。

ま。そんな感じの二つのはまり道だったのでありました。

今はなんとか無事に動作しているのであります;-)。 Thunderbird+Lightning と iPhone4 から動作確認は取れています;-)。

2月 182011
 

iCal 形式でデータを管理するサーバが欲しいと思っていたのであります。以前のエントリで「Thunderbird+Lightning の日本語化。」ってのを書いたのだけど、クライアント環境はバッチリです。
今回はサーバ側。google にデータやメールを預けるのは好きではないので自分で何とかしたい。と思ったのであります。

と、言うことで iCal サーバに成り得るものを ports からインストールします。DAViCal をインストールしてみましょう。 ports 的には www/davical になります。make install したら環境が整いました。ランラン。なんて簡単には行かないのがこの ports の恐ろしいことろです・・。orz。

まず、DAViCal は www/apache22 と database/postgresql-server を関連性でインストールしてくれないので自分でインストールする必要があります。後、php5 はどうだろ?関連性でインストールしてくれるかな?最初から入っていたのでいまいち良く解りませんでしたが・・。

僕の場合、apache は自分で make install するのを趣味としているのですが、DACiCal は mod_dav を利用するみたいなので、ports からインストールしました。

それにしてももう少しきちっとした ports を作ってくれても良いのになぁ・・。

最初から問題点を書いてしまいましょう。FreeBSD の ports から DAViCal をインストールした場合、日本語が表示できません。インストールされないんだもの・・。orz。以下は www/davical のインストール方法です。

あ。パッチを一個書いたのでインストールの前にパッチを取ってきてください。以下の URL にあります。

http://icmpv6.org/Prog/FreeBSD_ports/patch-rebuild-translations.sh

では、インストール作業の開始です。なお、必要であれば事前に devel/pear-PhpDocumentor をインストールしておくと良いかもしれませんが、直接的には必要ありません。

# cd /usr/ports/www/davical/files
# cp ~/patch-rebuild-translations.sh ./
# cd ..
# make install
# cd work/davical-0.9.9.4/
# make
# cp -pr locale /usr/local/www/davical/
#

 
FreeBSD の ports は外人さんが作ったんでしょうな。ロケールのことなんざまぁるで意識してないのでインストールさえしてくれない・・。ヒサンな状況ですな。上記のパッチとコマンド投入位の作業なら ports の Makefile でいくらでも吸収できるはずです。困ったモノだ・・。orz。

ちゅーこってこれで make された po ファイルがインストールされました。今度は DAViCal で日本語を表示できるように設定しましょう。

DAViCal の設定ファイルは、ports からインストールすると /usr/local/www/davical/config/config.php になります。以下のように記述します。

<?php
    $c->pg_connect[] = 'dbname=davical port=5432 user=davical_dba';
    $c->domain_name = "ical.running-dog.net";
//  $c->sysabbr = 'davical';
    $c->admin_email = 'takachan@running-dog.net';
//  $c->system_name = "DAViCal Server Administration";
    $c->collections_always_exist = true;
    $c->enable_row_linking = true;
    $c->default_locale = 'ja_JP.UTF-8';
    $c->locale_path = '/usr/local/www/davical/locale';
?>

 
追加した行は $c->default_locale と $c->locale_path です。LANG は UTF-8 にしました。後、locale ディレクトリのパスを指定します。

これで URL にアクセスして、個人設定に 日本語 を指定すると日本語のメッセージを表示してくれるようになります。良かったです。

 
せっかくなので DAViCal のはまり道をもう一個だけ書いておきます。

僕は perl の CGI は得意なんだけど、php はからきしダメです。php.ini の設定なんざちぃーとも解らないのであります・・f(^^;;。

include_path には設定する必要があります。以下のように。これを書かないと DAViCal は動いてくれません。

include_path = ".:/php/includes: \
/usr/local/www/davical/htdocs: \
/usr/local/www/davical/inc: \
/usr/local/share/awl/inc"

 
長いので折り返してありますが、一行で書くと良いでしょう。

と、言うことで 動かす前の段階で随分と時間が掛かりました。 php と postgresql って、僕、苦手なのよねぇ・・。でもってせっかく動作するようになったかと思うと、今度は日本語表示してくれないし・・。

と、言うことで、www/davical の ports を更新してくれる方、絶賛募集中なのであります;-)。

 
あ。最後にですが、DAViCal の設定については細かく書いていません。ウェブで探せばたくさん出てくるでねぇ。なので、FreeBSD 的はまり道を書いたのであります。

2月 082011
 

久しぶりに「CPU コレクション」ではないネタですねぇ;-)。

IPv4 の中央在庫が枯渇した。と言うのはあちこちで騒がれているのであります。うちのネットワークは既に随分前から IPv4/IPv6 のデュアルスタクなので、特に気にはしていないのであります。

でもって IPv6 の機器、と言うか、サーバや PC などがたくさんあるので自宅で MRTG などを取得しているのですが、MRTG の取得の際にも IPv6 を利用しているのであります。mrtg.cfg の上のほうに以下の行を追加すれば、Target のホスト情報に FQDN を記述していた場合、FQDN で IPv6 があれば mrtg は IPv6 でアクセスするのであります。

EnableIPv6: yes

 
しかし、あれですな。FreeBSD の ports-current を追いかけていた場合、ある日突然 mrtg は IPv6 で動作しなくなるんですな・・。orz。最新の ports を利用すると以下のメッセージを出力する。

Undefined subroutine &main::AF_UNSPEC called at /usr/local/bin/mrtg line 2248.
Undefined subroutine &main::AF_UNSPEC called at /usr/local/bin/mrtg line 2248.
Undefined subroutine &main::AF_UNSPEC called at /usr/lcoal/bin/mrtg line 2248.

 
でもって EnableIPv6: yes をコメントアウトして実行すると無事に動作する。これは明らかに mrtg の IPv6 回りに問題があるということですね・・。

そもそも、mrtg を ports からインストールすると以下の ports が関連性によりインストールされます。あ。make config は WITH_IPV6=true、WITH_SNMP=true です。

    mrtg-2.17.0,1
    p5-SNMP_Session-1.13
    p5-IO-Socket-INET6-2.65
    p5-Socket6-0.23
    p5-Net-SNMP-6.0.1

この内、バージョンアップして、その後の動作が「怪しいなぁ。」と思うのは p5-Net-SNMP-6.0.1 です。しょーがないのでこの ports の Makefile を編集してバージョンを 5.2.0 に書き換えてから make NO_CHECKSUM=yes install でインストールしなおします。

するとな。mrtg コマンドを実行するとエラーメッセージが変わるのであります。今度出力されたのは以下のメッセージ。

Undefined subroutine &SNMPv1_Session::unpack_sockaddr_in6
called at /usr/local/lib/perl5/site_perl/5.10.1/SNMP_Session.pm line 828.
Undefined subroutine &SNMPv1_Session::unpack_sockaddr_in6
called at /usr/local/lib/perl5/site_perl/5.10.1/SNMP_Session.pm line 828.
Undefined subroutine &SNMPv1_Session::unpack_sockaddr_in6
called at /usr/local/lib/perl5/site_perl/5.10.1/SNMP_Session.pm line 828.
2011-02-08 11:31:34: ERROR: fork 0 has died ahead of time ...

 
ちょっと長いので折り返してありますが、上記のようなメッセージが出力される。んだば unpack_sockaddr_in6 ちゅーのはどこにあるの?と探してみると、どうやら p5-Socket6-0.23 でインストールされる Socket6.pm の中にある。ふむー。 SNMP_Session.pm からは Socket6.pm がみえてなくて、なので「unpack_sockaddr_in6 が無い。」と言われているんだね。

と、言うことで、/usr/local/lib/perl5/site_perl/5.10.1/SNMP_Session.pm を手で変更することに決定・・。

($p1,$a1) = unpack_sockaddr_in6 ($sa1);

 
の部分を以下のように改修します。

($p2,$a2) = &Socket6::unpack_sockaddr_in6 ($sa2);

 
そして更に SNMP_Session.pm の全ての unpack_sockaddr_in6 の部分の頭に “&Socket6::” を追加します。

さて。今度はどうだっ!!?? mrtg を実行すると、おぉっ!! 無事に動作するのでありました。

以上が ports-current で portupgrade -arR した時に IPv6 で動作しなくなった mrtg への対応策です。 MRTG を IPv6 で取得している人はまだまだ少ないとは思いますが、もし IPv6 で MRTG を取得する人がいましたら、上記のようにするのが良いかと思われます。

12月 222010
 

Mozilla の製品の中にカレンダーアプリがあります。「カレンダープロジェクト」と言うヤツですね。でもってこれを利用して Thunderbird に Lightning をインストールすると google カレンダーと連携できて、Thunderbird の別タブとして Lightning が起動してカレンダーが利用できる。と言う感じです。

google カレンダーと連携したい場合は Lightning の他にアドオンとして「Provider for Google Calendar」と言うのが必要になります。これら全てが揃うと google のアカウントを設定するたけで google カレンダーと連携できるようになります。

FreeBSD 的に言うと ports/mail/thunderbird と日本語化するための ports/mail/thunderbird-i18n が、後は Lightning の ports として ports/deskutils/lightning-thunderbird をインストールする必要があります。 Provider for Google Calendar は Thunderbird からアドオンとしてインストールする必要があります。

が・・。FreeBSD の ports からインストールする lightning-thunderbird-1.0 は日本語化されていないんですな・・。orz。 Thunderbird は日本語化されているのにカレンダーは英語表示。スケジュール自体は日本語で表示してくれるのにメニューなどは英語表示。ちょっと悲しいな。と、言う感じなのであります。

Widnows 上で動作している Thunderbird+Lightning は日本語で表示できるのに悲しいねぇ。

と、言うことで FreeBSD 上で動作している Thunderbird+Lightning のカレンダー部分を日本語化することにしましょうかね。

スクリーンショットはこんな感じ。一応日本語化できました;-)。

thunderbird-ja-2.png

まず最初に Windows 版の Thunderbird+Lightning の環境をじっくりと眺めます。ふむふむ。Application Data\Thunderbird\Profiles\乱数\extensions\ の下には {e2fda1a4-762b-4020-b5ad-a41df1933103} と言うのがあって、その下の \chrome\ の中に日本語テキストがあるみたいですね。この中の calendar-ja.jar と lightning-ja.jar が Lightning を日本語化するために必要なファイルみたいです。

では、このファイルを抽出して FreeBSD 上に持って行ってみましょうか。 FreeBSD の Thunderbird の個人用設定は ~/.thunderbird/乱数/extensions/ ぽいですね。ここにやはり {e2fda1a4-762b-4020-b5ad-a41df1933103} があり、その下に /chrome/ があるのでそこにほーりこんでみましょうか。でもって再起動。

どーだっ!!?? ダメだぁ・・。orz。きっと何かファイルが足りないと思うので再度、Windows 側で色々調査します。すると Windows 側と FreeBSD 側のファイルで圧倒的に記述が少ないファイルがありました。 {e2fda1a4-762b-4020-b5ad-a41df1933103} の直下の chrome.manifest と言うファイルです。このフアイルの中を覗いてみるとローカル言語設定が記述されているようですね。FreeBSD 版では en-US しか無いのですが、Windows 版には色々な言語の情報が記述されています。なるほど。このファイルを FreeBSD 側に持っていくことにしましょう。

で、再起動。おぉーーっ!! Lightning のカレンダーが日本語表示してくれるようになりました。良かった;-)。

ちなみに、Windows 版 Thunderbird が無い人のために以下、 URL に言語パックを置いておきました。

http://icmpv6.org/Prog/FreeBSD_ports/lightning-thunderbird-1.0-ja-pack.tgz

ダウンロードしたら以下の要領でインストールしてみてください。

$ cd  ~/.thunderbird/乱数/extensions/
$ cd \{e2fda1a4-762b-4020-b5ad-a41df1933103}/
$ tar xvzfp ~/lightning-thunderbird-1.0-ja-pack.tgz

 
古い chrome.manifest は chrome.manifest.ORG として保存されます。と言うか、展開されます。

後は Thunderbird を再起動して Lightning が日本語化されたか確認してみてください。

なお、今回は Thunderbird+Lightning で google カレンダーと同期する方法などは一切書いていません。その情報はウェブ上を探せばゴロゴロ出てくるのでここではあえて書きませんでした。あくまで FreeBSD における Lightning の日本語化に特化したものとなります;-)。

ちなみに、Windows から全ての言語パックを持ってきて、上記、僕が作成した tgz ファイルの中に突っ込むと lightning-thunderbird-1.0-i18n みたいな ports が簡単に作れると思うのですが、どなたか ports を作る方いらっしゃいませんか?

僕は言語パックを自分で作ってしまったので ports は作らない予定なんでけども;-)。

10月 152010
 

前回のエントリーで「ThinkPad X100e がサスペンド/レジュームしない。」って書いたんだけど、FreeBSD/amd64 8.1-STABLE 自体はもうバリバリサスペンド/レジュームします。ただ、X の画面がエラー吐いてちぃとも復活しない。って感じなのであります。

ati ドライバ(の radeon)や radeonhd を試したり、後 vesa も試しました。 vesa の場合はレジューム後に X の画面が戻ってきて X が使える場合もあります。ただ、サイズが 1024×768 なのとレジューム後に利用はできるのだけどログを吐きまくっている状態なので使い続けるのはどうかな。などと思うのでありました。

こうなったら xf86-video-ati の radeon ドライバでバグが治ってくれるのを待つばかりですが、せっかくなので、絶えず最新版が利用できるような環境を用意しておこうなどと思ったのであります。

http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/

この辺りを見ていると、コツコツと更新はされているようです。で、snapshot は “master” と言う文字列が付加されて公開されているようなので、それ用の ports を作ってみました。以下に転がしておきます。

結構トリッキーなのでコミットはしません。また、もし利用するのであれば ports に詳しい人限定です;-)。
後、 automake-1.11.1 が必要です。利用する場合には portupgrade して automake のバージョンを上げてください。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-xf86-video-ati-master.tgz

このファイルをダウンロードしたら /usr/ports/x11-drivers/ 辺りに展開します。 そーすると xf86-video-ati-master/ と言うディレクトリができたかと思います。

ちなみに ports の雛形は x11-drivers/xf86-video-radeonhd-devel を参考にさせてもらっています。nork さんありがとー;-)。

# cd /usr/ports/x11-drivers
# tar xvzfp ~/ports-xf86-video-ati-master.tgz
# cd xf86-video-ati-master
# rm /usr/ports/distfiles/xorg/driver/xf86-video-ati-master.tar.bz2
# make NO_CHECKSUM=yes configure
# cat patch-man_Makefile | patch
# make NO_CHECKSUM=yes install

 
こんな感じですかねー。man がインストールできないので patch-man_Makefile を実行しますが、ports の Makefile で吸収することができませんでした。ダサくてすみません・・。

後、絶えず最新版の xf86-video-ati-master.tar.bz2 を取ってくるので make NO_CHECKSUM=yes します。 distinfo はオマケみたいなものですが、 xf86-video-ati-master.tar.bz2 がダウンロードできない時は distinfo の SIZE を書き換える必要があるかもしれません。

一回インストールしている場合は make deinstall してから make reinstall になると思います。

 
ThinkPad X100e のグラフィックスチップは RADEON HD 3200 の RS780M になります。フツーであれば x11-drivers/xf86-video-radeonhd を利用するのですが、最近の ATI ドライバには radeon ドライバが吸収されていてこっちのほうが進んでいるようです。

xf86-video-ati の ports は 6.13.0 なんですが、上記 URL が示すとおり最新版は 6.13.2 になります。 x11-drivers/xf86-video-ati の Makefile の PORTVERSION= を 6.13.2 にして make NO_CHECKSUM=yes install って手もあります。この場合 xorg.conf のドライバは Driver “radeon” にすると良いです。

で、xf86-video-ati のドライバを使うと何が良いか?と言うことなのですが、僕は持ってませんが DH5000 番台のグラフィックカードが利用できるみたいなんですね。

最新の ATI のグラフィックスチップを利用している人は xf86-video-ati の 6.13.2 もしくは開発中版の master を利用して、トライしてみるのもひとつの手かと思います。

ちなみに ThinkPad X100e の RADEON HD 3200 は前のエントリでも書きましたが、レジューム後に以下のメッセージが出力されて、利用できなくなります。

info: [drm] wait idle failed status : 0xA0003030 0x00000003

 
この文字列で gogo ってみると以下の URL が出てくるので、問題点については認識されていると思うので、早く改修されて、まずは master 版で提供されないかなー。

https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/608665

などと思っているのでありすます。

これからは一週間に一度位の割合で xf86-video-ati を更新するのであります;-)。

あ。もっと美しい ports を書いてくれる方、絶賛募集中;-)。

9月 242010
 

Evernote ってのが世の中にはあるみたいです。僕は iPhone4 ユーザなのですが、ファイルをクラウド上にアップして、色々な機器から利用できるみたいです。詳細については以下の URL を参照してください。

http://www.evernote.com/about/intl/jp/

さて、iPhone4 上ではデータを同期するクライアントがあります。あと、MacOSX とか Windows、他の携帯端末用のクライアントもあるのですが、Linux や FreeBSD のためのクライアントは無いようです。

Linux の人が頑張っているのは wine で Windows 版 Evernote クライアントを動かすと言うワザなんですね。FreeBSD でも ports に emulators/wine があるので早速試してみましょう。

まず、 ports から wine をインストールして、上記 Evernote のサイトから Windows 版クライアントをダウンロードします。その後、以下の要領で実行します。

$ wine ./Evernote_3.5.6.2848.exe
fixme:heap:HeapSetInformation 0x0 1 0x0 0
wine: Install the Windows version of Mono to run .NET executables
$

 
あいやまぁ・・。Evernote は .NET はレームワークを利用しているようです。しかし、 wine の default の環境では .NET はレームワーク が無いのでインストールできないみたいです。

ちなみに wine の環境は ~/.wine/ になり、 ~/.wine/drive_c/ が Windows で言うところの c:\ になります。それにしても .NET フレームワークをインストールする必要があるのでインストールすることにしましょう。

世の中を探しまわっていたら wine の環境をサクっとインストールしてくれるスクリプとがあるようです。

http://www.kegel.com/wine/ から winetricks と言うスクリプトをダウンロードしてくればよいみたいです。

$ ftp -a http://www.kegel.com/wine/winetricks
$ chmod 755 winetricks
# mv winetricks /usr/local/bin/
$ rehash
$

 
winetricks を実行するためには一個 ports をインストールする必要があります。 archivers/cabextract をインストールしましょう。これで winetricks を実行する準備が整いました。

オプション無しで実行するとウィンドウが一個現れたと思います。winetricks -h と実行すると、バババと文字が表示されたかと思います。ウィンドのメニューやオプションに dotnet30 を選択もしくは指定すると ~/.wine/drive_c/ に .NET Framework をインストールしてくれます。他にも色々インストールしてくれるヤツがあるので winetricks -h で表示されたものをじっくりと眺めてみても面白いです;-)。

と、言うことで今回は winetricks dotnet30 と叩くのでありました。

wine_evernote1.png

こんな感じでインストールが始まります。おぉっ!! これはラクチンだぁ;-)。.NET Framework がインストールするのをしばし待ちます。また、必要であればその他色々インストールしてみるのも良いかもしれません。

でもって今度はいよいよ次は Evernote のインストールです;-)。上で実行した wine コマンドを投入します。すると今度はインストーラが起動したようです。うひひひ;-)。

wine_evernote2.png

以降、フツーのインストールと同じように進むと無事にインストールが終わりました。おぉっ!!これは素晴らしい。

続いて早速実行してみることにしましょう。インストールされた Evernote.exe は ~/.wine/drive_c/Program Files/Evernote/Evernote3.5/Evernote.exe にあります。これを wine コマンドのオプションとして実行してあげます。

するとー。

wine_evernote3.png

orz。今日はこの辺りまでにしておきましょう・・。

筆者自身まだよく wine を把握しておりません。Windows ディレクトリにどういったものがインストールされているか、どういったものが必要なのか、Windows について、筆者はあまりよく知らないんですねf(^^;;。

今回の目的としては winetricks の使い方が解って良かったよねー。これ使うと wine の環境整えるのが楽だよねぇ。みたいな。そんな感じでこれにて終わるのでありました。

中途半端でどうもすみません・・。

8月 232010
 

ちょっと前のエントリーで「ibus-mozc を使う。」ってのを書きました。 「もづく」を使うよ。でもって emacs23 からでも使えるよ。ってやつですね。

で、ibus.el の作者さんの 「irie @ ウィキ」を眺めていたら「scim-bridge.elのぺえじ 」 ってのもあるのに気づきました。

この scim-bridge.el をインストールして emacs23 から利用すれば scim と通信して日本語入力ができるようになるんかな?とか思った次第であります。

でもって、scim と言えば scim-bridge はあるし、scim-canna もあるし scim-bridge-qt4 もあるしで、いろいろあるので scim-bridge.el を利用すれば canna.el なしで Canna の入力が可能になるのかな?とか思い早速試してみました。

まずは scim-bridge.el の ports を作ってみました。参考にしたのは同じ作者さんの ibus.el の ports です。textproc/ibus-el があるのでこれを参考にして作ってみました。以下の URL に置いてあります。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-scim-bridge-el-20100823.tgz

これをダウンロードしたあとに /usr/ports/textproc/ 辺りに展開してインストールしてください。一応関連性としては textproc/scim と textproc/scim-bridge は付けています。あとは自分の好みで japanese/scim-canna や textproc/scim-bridge-qt4 などをインストールしてください。

~/.emacs に記述するサンプルはこの辺りに置いておきます。

(setq jaime “???”) の文字列で mozc を利用するか scim-bridge を利用するか決定してください。

scim の 設定方法については以前書いた「kde4-4.4.5+qt-4.6.3 環境の scim-1.4.7。」を利用してください。これで多分 scim-bridge.el が動くようになったかと思います。

scim-bridge.el を利用してみてまず驚くのが、ターミナルへの文字入力と一緒でディスプレー上に SCIM のメニューバーが表示されることですね。本当に「ネーティブに動作しているの?」って思うんですが、Ctrl が入力される場面とか、日本語入力ができない時にはちゃんと SCIM がオフになるんですね。この辺りすごい。まぁ、ibus-mozc.el でもその動作は一緒なんですけどね。さすが同じ作者さんだけあって、動作が統一されていてなかなか嬉しいです;-)。また、感激します;-)。ありがとうございます。

あと、emacs 起動時には以下のように IME を none にして起動しているのでこれは多分文句無しにネーティブで動いているんだろう。という感じです;-)。

env XMODIFIERS=@im=none /usr/local/bin/emacs --no-splash

 
さてさて。僕がどうしてこの ports を作ったかと言うと・・。ちょっと前のエントリーで「emacs-23.2+Canna な emacs の ports。」と言うのを書いているのですが、この時に書いたパッチは今の emacs のメンテナの Ashish SHUKLA さん にメールを送っていて、しばらくやり取りしたあと、彼は 06/10 に改定した emacs の ports を Giorgos Keramidas さん 宛に奥っているんだけど、それは今でもちっとも反映されていないんですね。

なので、emacs23 の make config 時のオプションに WITH_CANNA=yes ってのがなかなか現れない・・。orz。 半分諦めの境地ですかね。

あと、実はもう一点あって、Ashish SHUKLA さん から emacs24 (ports 的には editors/emacs-devel なんですが) の WITH_CANNA の パッチも書いてねー。とか言われて、ちょっと書き直し始めたのですが、これがまたあーたっ!! emacs24 の configure の形式とか Makefile.in とかがずいぶんと様変わりしてしまって、ソースコード治すよりもそっちのほうが大変。みたいな感じになっているのであります・・。orz 僕、 C は解っても autoconf/automake はいまいちよくわからないのよねぇぇ・・f(^^;;。

ちゅーこって、ことえり キーバインドに対応した ibus-mozc に走るか scim-bridge に走ったほうがよっぽど早いのであります。 scim-bridge は Canna に対応しているしねぇ;-)。

と、言うことで、僕は多分今後 Emacs 用の WITH_CANNA なパッチは書く事はないと思います。是非とも scim-bridge.el のほうを利用していただけれると嬉しいのであります。

それにしても scim-bridge.el かぁ。これを利用すると Canna キーバインドでの文字入力もサクっとできるし嬉しいのであります。あ、筆者の場合、Canna のキーバインドをかな入力で利用しています。ローマ字入力は試していません。けど、~/.emacs の (scim-define-common-key ?\C-* t) の “*” の部分の文字を任意のものに変更するといろいろなキーバインドが利用できるようになると思います。

8月 202010
 

ちょっと前のエントリーに「SCIM 動かなくなったよー。環境変数変えてみた。」みたいなこと書いたのですが、そもそも、IME 自体を変えてみることにしました。

僕は最近 MacOSX で ことえり を利用しています。正確に言うと ATOK for Mac 使っていてキーバインドを ことえり で利用しています。はたまた、Windows では「google 日本語入力」を利用してキーバインドはやはり ことえり を利用しています。

するっていと、FreeBSD でもそろそろ Canna のキーバインドを卒業して ことえり キーバインドに統一したいなぁ。と思うのが人情です;-)。

で、いろいろ調べてみたら uim には ローマ字->日本語 や ローマ字->カタカナ 変換のためのショートカットキーが用意されているんですね。で、試しにかな入力時のこのショートカットを ことえり 風に設定してみたら・・。あぁら・・。かな入力時には設定したショートカットキーが有効にならないのね。と、言うことでちょっとアングリ。orz。

それならば。と言うことで探していたら、IRC で教えてもらったのですが MacOSX や Windows 用には 「google 日本語入力」と呼ばれているものが Linux や FreeBSD では ibus-mozc(iBUS 経由で利用できる「もづく」) としてリリースされているのですねぇ。

ports 的には japanese/ibus-mozc になります。これを make install したあと pkg-message で表示される環境変数を設定して、再度 X にログインし直せばもうばっちり mozc が利用できるのであります。

iBUS と言うのは僕も良く知らないのですが、インプットメソッドとの通信をやりとりする規格みたいなものです。例えば Canna は cannaserver と port 5680 でやり取りしますが、これを iBUS 経由に置き換えると ibus-canna とか言う名前になるんだろうなぁ。と思います;-)。

で、本題に戻ってと。まずは iBUS で mozc を利用する設定をします。 KDE4 を利用している場合、kickoff メニューの「設定」に “iBus の設定” と言うメニューがあるのでそれを起動します。python で書かれた ibus-el-agent と言うのが多分プログラム名だと思います。

ibus-mozc_1.png

これで mozc を指定してあげます。これで iBUS は mozc と接続するようになります。ちなみに、KDE4 を利用しているとシステムトレイに iBUS のアイコンが表示されるようになると思います。

続いて mozc の設定をします。 MacOSX や Windows の「google 日本語入力」でよく見る設定画面ですね。コンソールから mozc_tool_config とタタきます。表示されたウィンドウで自分の好きな設定をします。

ibus-mozc_2.png

これで設定は完了。あとは [半角/全角] キーを押してベコベコ日本語を入力するだけなのであります;-)。僕は ことえり キーバインドのかな入力にしました。これで MacOSX、Windows、そして FreeBSD においてはすべて同じキーバインドになりました。やったーっ!!

なお、mozc の変換効率は少なくとも Canna よりは賢いと思います;-)。まだ使い込みがちょっと足りないですが・・。

あ。「google 日本語入力」にはいつまで経っても治らないバグが一個あります。文字を確定する前に漢字が表示されるプルダウンメニュー(これを「サジェスト」と言うのかな)が表示されますが、この「サジェスト」がマウスカーソルの上に表示されるとその段階で文字が勝手に確定されてしまいます。なので、文字を打つときにはマウスカーソルは画面上の全然関係ない場所に置いておくことをオススメしますX-(。

あと、かな入力時の “ー” 問題ががありますね。 Shift+| でないと “ー” が打てない。そんな場合は xmodmap で設定します。以下の設定で Shift キーなしで “ー” が打てるようになります。

keycode 133 = bar bar bar bar

 
ただしっ!! そーすると今度は “\” キーが打てなくなるのですが、これは “ろ” キーのところで打てます。 \rm * とか打つときに |rm * になってしまいますが、どっちが良いかは自分で判断してみてください。

さて。まだ一点残っております。 emacs23 ですね。こいつの IME はどうすんべ。とか思うのであります。僕自身は emacs23 用に Canna パッチを書いたので Canna を利用していたのですが、そもそも emacs23 だけが Canna キーバインドだと大変だぁ・・。と言うことになるのですが、ちなみに umeさん が ibus.el を ports にしてくださっているのでそれを利用することにします。ports 的には textproc/ibus-el になります。

あとは、~/.emacs の編集になりますが、ibus.elのぺえじ を参照すればその設定方法が分かります。でもって比較的容易に emacs23 を ibus 対応にすることができるのであります;-)。

つい最近 0.2.0 と言う最新版がリリースされました。これを利用すると良いでしょう;-)。

僕が利用している ~/.emacs は dot.emacs.fontSetUp として置いとくのでよかったら参考にしてみてください。 emacs23 がアンチエイリアスを利用しても遅くならないフォントの設定も一緒に描いておきました;-)。

これで本当にすべて、キーバンドの統一が出来ました。嬉しいですねぇ;-)。でもってemacs23 用の Canna パッチは書いたんだけども、emacs24 用のパッチは多分書かないと思います。けど、それはそれでしかたがないことなのかなー。と、自分では思っていますが・・。

8月 182010
 

MacOSX には Spotlight というのがありますが、これは利用している Mac のファイルの情報をデータベースに突っ込んで、それを後から検索できるようにしたものです。

これと似たようなことが、最近の KDE4 では利用することができます。strigi と言うものですね。ports 的には deskutils/strigi です。こいつは KDE4 をインストールすると比較的容易に利用可能で、KDE のスタートメニューの検索や、システム設定での検索などで利用されています。

strigi 自体は FreeBSD 中のファイルの情報を収集してデータベースにほーりこんで検索できるようにしてくれますが、その時に NEPOMUK を利用して、検索しやすい索引情報を付加します。ちなみに NEPOMUK は ports ではなく、KDE4 の一部として、ports では x11/kdebase4-runtime に含まれています。

しかし、KDE4 をインストールして早速 Spotlight みたいにデータベース作って検索可能にするぜぃ。と思ってみても FreeBSD の ports では KDE4 を全部まるまるインストールしても、データを格納するデータベースがインストールされないので default で strigi を利用することはできません。

KDE4 のシステムトレイの 丸 “i” マークの所に「virtuoso がインストールされてないので strigi は利用できないよん。」とメッセージが表示されます。つまり ports 的には databases/virtuoso をインストールして初めて利用することが可能になります。

それはつまり、KDE4 の ports と virtuoso は関連性が切られていると言うことですね。ワザと切っているのかたまたま忘れただけなのかはビミョーですね。関連性を付けてしまうと「デスクトップ検索なんざいらねーぜ。」って人の環境でも動作してしまう。と言うことななるので・・。

自分から進んで databases/virtuoso をインストールしたら一旦ログアウトして再度ログインしましょう。これで strigi を利用する準備が整いました;-)。

既にバックグラウンドで strigidaemon と nepomukserver が動き出したかもしれません。データ収集開始ですね。

どこのディレクトリ、どのファイルを収集するかは「システム設定」の [詳細] タブの「詳細なユーザ設定」の中にある「デスクトップ検索」で設定することが可能です。

strigi_1.png

[基本設定] タブでは両方にチェックを付けます。検索を止めたい時はこのタブのチェックを外します。 [ファイルのインデックス作成] タブではディレクトリとかファイルの設定を行います。左側のメニューでどのディレクトリを検索対象とするか、右側でどのファイルを検索対象とするかを指定します。

後はひたすら待つばかりです。システムトレイに時々情報が表示されるのでまぁ、気がついた時に確認してみましょう。

インデックスの作成はけっこうこまめに起動しています。救いなのが一個の CPU しか使わないのでマルチコアの PC の場合にはそんなに苦痛は感じないのではないかと思われます。あ。けど、ディスクアクセスが気になる場合もあるかなー。 1Core な CPU や回転数の遅い HDD を利用している場合には stringi 自体は利用しないほうが良いですね。databases/virtuoso をサクっと pkg_delete するのが良いかと思われます;-)。

さてと。strigi と nepomukserver で集めたデータは $HOME/.strigi/ に格納されます。 clucene/ と言うディレクトリの中に入ります。雰囲気的には qdbm みたいな感じでしょうかね。ただ、サイズが気になるところではありますが。

データ収集はこんな感じで、続いて実際に検索結果を表示したい所ですが KDE4 を利用していない人は strigiclient と言うコマンドがあるのでそれを利用してみてください。検索結果が表示できるかと思います(後、検索パスも指定できます)。

KDE4 を利用している人は K メニューから「ファイル/フォルダを検索」を指定して起動してください。 kfind と言うコマンドが起動されます。後は [名前/場所] や [内容] のタブでそれぞれ検索すれば結果が表示されるようになります。

strigi_2.png

これでデスクトップ検索ができるようになりました;-)。

もし、検索しても何も表示してくれない場合にはもしかしたら kfind を以前に起動したことがあるからなのかもしれません。$HOME/.kde4/share/config/kfindrc を削除して kfind を再実行してみてください。

パッと思いつくのは Thunderbird や mew などのメーラ(MUA) で、こいつらは独自の検索システムを持っていてそれぞれ個別にデータベースにその情報を突っ込んだりしていますが、それも必要ないかなー。デスクトップ検索でメールの情報もパスに入れてしまえばデータを保持する場所は一個で済むし。みたいな感じでしょぅか・・。

とは言いつつやはり、デスクトップ検索のデータ収集中(インデックス作成中)はそれなりに CPU とメモリを持っていかれるのでちょっと贅沢なマシン環境で実行するのが良いかなぁ。と、僕も思うのであります;-)。

まぁ、あるものは使ってみた。と言う感じでしょうか;-)。

ちょっと前に書いた「KOrganizer と google カレンダーの sync。」の記事もそうなのですが、今まで X と言うのはマルチウィンドウでターミナルと emacs を利用する。みたいな感じだったのですが、最近はコッテリとした “統合デスクトップ環境” の各機能を使いこなしても面白いなぁ。などと思うようになってきました。

KDE4 の アドレスブック(kaddressbook) と AdtiveDirectry を連携させてみたり、MacOSX 上のアドレスブックの情報を vCard で出力して KDE4 の アドレスブックに食わせたりとか。

なんか、ようやっと “統合デスクトップ環境” を使いこなせてきたぞぉ。みたいな感じがしてきました;-)。これからもちょくちょく書いていきたいです;-)。

7月 142010
 

FreeBSD の最新の ports-current を追いかけていたら KDE4 は kde4-4.4.5 に、 qt4 は qt-4.6.3 になったのだけど、あるときから scim-bridge で日本語の入力ができなくなってしまった。それ以前のバージョンではちゃんと動作していたのになぜなんだよぉ・・。orz

GTK アプリの Firefox とか Thunderbird には日本語が入力できるので KDE4 か QT4 がちょっとあやすぃ。などと思い textproc/scim-bridge や textproc/scim-bridge-qt4 などを再インストールするのだけど、ちぃとも復旧しない。おかしい・・。orz。入力できないのは KDE のアプリと、後 Java アプリで日本語入力ができない状態となっていました。

そして、色々環境変数を見直した所以下の設定で kde4-4.4.5+qt-4.6.3 でも scim-1.4.7 で入力できることが解りました。

o. 動作しない今まで設定していた内容

export QT_IM_MODULE=scim-bridge
export GTK_IM_MODULE=scim
export XMODIFIERS="@im=SCIM"
exec /usr/local/bin/scim -d &

 
この内容を ~/.xsession に書いていたわけですね。あ。僕は KDE4 の利用時に ~/.xsession を利用するってのは以前書いているのでそちらを参考にしてください。

さてと。この設定では scim で KDE4 アプリに文字入力できない。なので設定を見直してみました。

o. 見直した新しい設定

export QT_IM_MODULE=scim-bridge
export GTK_IM_MODULE=SCIM
export XMODIFIERS="@im=SCIM"
export XIM=SCIM
export XIM_PROGRAM="scim -d"

 
「scim」と小文字で設定したのを大文字で「SCIM」と記述し、新たに XIM な環境変数を追加してみました。

そして、今までは ~/.xsession で起動していたものを 「KDE システム設定」の [詳細] タブにある「自動起動」に登録して KDE4 側で自動起動するように設定してみました。そしたらなんとっ!! 無事に復活して KDE4 アプリでも scim で文字入力できるようになりました。良かった良かった。

ちなみに ports が scim のインストールに必要なものは textproc/scim textproc/scim-bridge textproc/scim-bridge-qt4 と、後、僕は Canna 使いなので japanese/scim-canna をインストールしています。

それにしても復活して良かった。このためにまるまる二日を費やしてしまったではないか・・。orz。