2008年5月30日金曜日

Canon PIXUS iP3100を最近のgentooで使う

今まで特に問題なくwindows→samba→cups→ip3100で印刷していたが、ヘッドのクリーニングをしたかったので、
GUIを使ってみようと思った。bjcups -P プリンタ名で出すやつ。

例によって必要なライブラリが足りないので、追加しないといけないのだが、
libgtk-1.2.so.0はともかく、libpng.so.2はすでにebuildが存在しない。

とりあえずsoだけ/usr/localに突っ込んでおいた。

  • libpng1.0.37を持ってきて展開
  • --with-libpng-compat=yesでconfigure
  • make
  • mv .libs/libpng.so.2.37.0 /usr/local/lib
  • ldconfig(ld.so.confに/usr/local/libを入れてないと駄目)
libgtk-1.2.so.0は
emerge -av gtk+:1で入れればok。この記法は知らなかった。

もとのCanonが配ってるrpmはrpm2tgzでばらせばいい。



coLinuxでISO 9660のイメージファイルをマウントする

ptexliveをビルドするのに、isoイメージの中身が必要らしいので適当に調べた。

すぐ思いつくのは、イメージファイルをloopでマウントする方法だが、容量に余裕があまりないcolinux側に持って行きたくない。
他に簡単にやる方法がないかと思ってみていると、coLinux 0.8からはcoscsiと言うものが出来て、ディスクイメージを普通のデバイスとしてみることが出来るらしい。参考
なので、これを使ってみた。

confにscsi0=cdrom,texlive2007-live-20070212.isoを書いて再起動すると、sr0として見えるようになる。


scsi0 : Cooperative Linux SCSI Adapter
scsi 0:0:0:0: CD-ROM coLinux COCD 1.01 PQ: 0 ANSI: 2
sr0: scsi3-mmc drive: 32x/32x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 0:0:0:0: Attached scsi CD-ROM sr0

マウントすると普通にアクセスできるように見えるのだが、
ファイルの中身が見られない現象が多発したのでこの方法はあきらめた。
イメージがぶっ壊れてるのかも知れないと思ったけど、壊れてなかった。何かわかったらレポートしよう…

ubuntu kernel: attempt to access beyond end of device
ubuntu kernel: sr0: rw=0, want=3344004, limit=2097151


他の方法を考えていたら、cofsでマウントしている所にイメージファイルを置いたら、
loopでマウント出来そうだなと思ってやったら出来た。
これが、再起動もいらないし、一番簡単じゃないか…

ビルド自体は、libpng12-devとzlib1g-devを入れたぐらい。
pxdviは作らない(xdvi-jaでいい)のでX関係の開発用パッケージは不要だった。
いくつかは別に必要で入れてあったので、実は使ってるかも知れないけど。


coLinuxでWindowsのフォントを使う

同じフォントを複数保持するのがもったいないと思ったので、cofsでwindows\fontsをfonts.confで参照しているディレクトリ配下(とりあえず/usr/local/share/fonts/winfonts)にマウントした。マウントできたら、fc-cacheすれば、fontconfig経由で使えるようになる。

ついでにXmingのフォントの説明をまねをしてXmingから使えるようにした。

mkfontscale /usr/local/share/fonts/winfonts
mkfontscale -b -s -l /usr/local/share/fonts/winfonts

ただ、一部のフォントは名前の問題で使うことが出来なかったので、fonts.dirとfonts.scaleを書き換えた。
私の所では、bdf um+をbdf umplusにしたぐらい。

ここまでやれば、基本的に書き込むことはないので、roでマウントしなおした。

xlaunchでフォントサーバを指定すると、ローカルのフォントを見てくれなくなるので、
フォントサーバの指定をやめて、Xmingの追加オプションでフォントパスを指定するようにした。

-fp "built-ins,mplusの所,windowsの下のfonts,tcp/tapのアドレス:7100"



2008年5月4日日曜日

hadoop使ったプログラムのテストではまった

テストなので、java -cp classがあるディレクトリ:hadoop-0.16.3-core.jar hogeとかやって動かしていた。どうせヒストリー使うだけなので。
そのあとにjarを作って、java -cp myapp.jar:hadoop-0.16.3-core.jar hogeで動かすようにした。もともとantでjarは作ってたんだけど…

テストしていたのは、HDFSにファイルを作ったりするプログラムなので、結果をhadoop fs -lsrとかして動作を確認していた。
それが、jarを作って動かすようにしてから、HDFS上に全くファイルが作られなくなった。
プログラム的にはエラーが起こるわけでもないし、ファイル作った直後に読み出すコードを入れてみると正しく読める。なので、別のnamenodeに繋いでしまっているのではないか?と焦る。(2系統あるので)

ここで設定ファイルを確認しようとして気付いた。「classのディレクトリにhadoop-site.xml入れてたんだった…
デフォルトでは、ローカルファイルシステム上で動くので、hadoop fs -lsrでは確認できなかったという落ちでした。ローカルファイルシステム上にちゃんとファイルが出来ていました。何度も動かしたので大量に。

ということで、使っている設定ファイルとか繋いでいるnamenodeに気をつけないと言う教訓が得られました。



2008年5月3日土曜日

coLinuxでPulseAudio

PulseAudioのWindows Binaryがあったので、EsounD(esd)がわりに入れてみた。

module-esound-protocol-{unix,tcp}, module-waveoutを読んで、
default.paに

load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;tapのアドレス
load-module module-waveout

を書いておけば、esd代わりに鳴ってくれる。frozen-bubbleとpysolは鳴った。

pulseaudioを使うアプリがあるなら、module-native-protocol-{unix,tcp}を参考に

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;tapのアドレス

を入れておけばよいはず。


ついでに、imeproxyをいれて、scim-cannaとTamago v4をいれた。
sudo aptitude install scim-canna egg

typoが合ったので直しました(titleがcoLinxだったのと、esound用のモジュール名までnativeになってた)