レガシーからの脱却のためには、いろいろと苦痛を伴うようで、やれやれな話。ソフトウェアのバージョンアップってのは、トラブルがやっぱり起きますね。
現時点でXOrg 7.4にアップデートするときは、テスト用に別環境を用意するか、もしくは、いっそのこと、新規インストールしたほうが、いいかもしれません。仕事で使っている環境をアップデートするときは、くれぐれもご注意を。従来どおりの環境に回復するまでに、けっこうな作業時間をとられる可能性があります。
FreeBSDのportsでXOrgが7.4にアップデートされたことで、いろいろ大きな変更が行われ、トラブル発生の可能性があるという話は目にしていたので、自分のお仕事用環境は、しばらくアップデートさせていなかったんです。別のパソコンで動作確認したら、とくに問題ないようなので、エイヤっ!と、お仕事環境もportupgradeしてしまいました。
そしたら、もう大変。
一応、事前に仕入れていた情報に従い・・・、
http://gihyo.jp/admin/clip/01/fdt/200901/27
FreeBSD Daily Topics
2009年1月27日 ≪注目≫X.Org 7.4へのアップグレード方法とトラブルシューティング,グラフィックアクセラレータの選択指針
xorg.confも書き換えたし、haldやdbusは以前から動かしてたし、別パソコンでは動いてるんだし、自宅のパソコンでも動いたし、もうこれでほぼ100%大丈夫かと思ってたんですが・・・
まず、gnomeな環境で起動しなくなりました。Xサーバは立ち上がるのですが、なんか途中で、固まっています。CPU使用率が100%になる、ってわけでもなく、何にもおきない、先に進まない・・・
しかたないので、つい最近まで使っていたfvwm-1.24な環境(笑)に戻しました。
さて、とりあえずこの環境のままお仕事をして、あとは、ひまを見つつ、なんとかgnome環境を復活させようと、思った・・・んですが
あれ?!キーボードの配列が英語配列になってる。
まあ慣れてはいるので、それでも使えなくはないんですが、controlキーとcaps lockを入れ替えたいとか、それとときどき思うんですが、「~」キーってどこだ!?みたいな、戸惑うこともあるので、/usr/ports/UPDATINGに書いてある
1. Add Option "AllowEmptyInput" "off" to your ServerLayout section.
This will cause X to use the configured kbd, mouse, and vmmouse
sections from your xorg.conf
を行いました。
とりあえず、これで1日目は経過。裏で少しずつ、portupgradeして、gnome2な環境を回復させようとしてました。
2日目。コンソールでログインして、startxでXを立ち上げて・・・
あれ? う~ん? おかしい! ダブルクリックができない・・・
xevで見てると、ボタンリリースイベントが発生していないっぽいような感じ。
どういうこったい。
ちなみに、キーボードもマウスも、PS/2です。
しかたないので、xorg.confのOption "AllowEmptyInput" "off"を削除して、hald経由で、マウスとキーボードを使うようにしました。
あとは、キーボードの配列を直せばいいんでしょ、ってことで。
適当なキーワードで検索してみたところ、何件かの情報が見つかりました。時期によって、違いがあるみたいなのですが、現在は、こんな内容のファイルを、
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_options.XkbModel" type="string">jp106</merge>
<merge key="input.x11_options.XkbLayout" type="string">jp106</merge>
<merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge>
</match>
</device>
</deviceinfo>
/usr/local/etc/hal/fdi/policy/x11-input.fdi とかいう場所においておけばよいらしいです(ファイル名はこのとおりでなくてもいいみたい)。
(追記)
このファイルを作ったあとに、haldを再起動する必要があるみたいです。
/usr/local/etc/rc.d/hald restart
私の場合、CtrlキーとCaps Lockを入れ替えるために、ctrl:swapcapsというのを入れてあります。ただ、これで入れ替わるんですけど、modifier key(xmodmapコマンドで設定できるもの)が、意図どおりになっていなくて、「キーシンボルがCaps Lockのキーを押すと、controlになる」という、元のまんまじゃん、な状態になりました。でも、これは、Xorg 7.4よりも前から、こんな感じだったかも。この程度のことなら、とりあえず、xmodmapを駆使してなんとかなります。てゆーか、ctrl:swapcapsって不要?
(追記)
昔、xorg.confでctrl:swapcapsを設定するのではなく、xmodmapを使ってCtrlキーCaps Lockを入れ替えてたんですが、どうやらどこかで、その設定をしたxmodmapのファイルが読み込まれてしまっているみたいです。入れ替えたのをまた入れ替えて、元に戻ってる・・・みたいな。
あと気になったのは、なぜか、右ctrlを押すと、backslash「\」が出ました。場所は近いんで誤爆? それとも私の環境が変なのかもしれません。
今日は、これでなんとかマウスとキーボードが使えるようになりました。明日はどうなるかわかりません(苦笑)
実は、家のパソコンでも、キーボードが英語配列になっちゃった!と気がついてたんです。ところが、たまたまそのときはKDEを使っていたため、KDEの設定で、日本語配列にしたり、CtrlとCaps Lockも入れ替えできてたので、そんなに問題視していませんでした。
☆
GNOMEな環境が立ち上がらない件。
gnome-sessionを実行すると、metacityとか一応プロセスは起動しているんですが、画面がまったく書き換わらず、なんだかだんまりになるんです。
fvwmにしてお茶を濁していたんですが、ほかにもだんまりになるプログラムがあることに気がつきました。gnome-terminalとかgimpとか。
2日目にして、やっとわかりました。原因は、libxcb。
libxcbが2つリンクされていたためらしいです。
libxcb.so.1 => /usr/local/lib/compat/pkg/libxcb.so.1 (0x28b16000)
libxcb.so.2 => /usr/local/lib/libxcb.so.2 (0x291f1000)
metacityもそうなってました。
portupgradeは、実は、別のマシンでビルドしたバイナリパッケージを使ったんですが、どういうわけか、こんなことになってしまいました。libxcb更新後、いろいろ再ビルドが必要だ、って話があったんですが、どうも「別のマシン」では再ビルドしたけど、バイナリパッケージは、作り直していなかったのかもしれません。自業自得か