2009-02-07(土) [長年日記]
■ Debian lenny導入メモ(on VMware Player)
マジ個人的な作業メモ。なんか、この日記を始めた頃のことを思い出したよ。当時はKondaraだったが。
さすがにインストールでつまづく時代ではないので省略。パッケージのセットは、「Webサーバ」と「ファイルサーバ」を選択。インストール直後、まだVMwareのコンソールからしか入れない段階で最低必要なパッケージを導入:
# aptitude install sudo zsh vim subversion ssh screen keychain ruby
rubyは最新の1.8.7-p72ですな。1.9.1はあとで野良ビルドする。
sudoの設定。visudoして以下を追加:
sho ALL=(ALL) NOPASSWD: ALL
sambaをセットアップして、sshの鍵をコピーするための穴のあける。
# smbpasswd -a sho # vi /etc/samba/smb.conf ([homes]のread onlyを「no」にする。ファイルのパーミッションは775に)
sshを設定。Windows側の公開鍵を、samba経由で~/.ssh/authorized_keysへ。パーミッションを適切に設定する。
Windows側の/etc/hostsに192.168.43.128を追加。これはDHCPらしいので、あとで固定に変更していいかも。 Poderosaからログインできたら、コンソールは不要なのでTrayIt!あたりで目立たなくしてしまってよい。
あとは.screenrcにUTF-8関連の設定を追加。
defencoding utf-8 encoding utf-8 utf-8 cjkwidth on
■ lenny上のruby 1.9.1のビルドでparse.cのコンパイルが固まる
続いてruby 1.9.1を野良ビルド。そもそもこれが目的である。まずは必要なパッケージを導入。
% sudo aptitude install gcc make libreadline-dev zlib1g-dev bison
続いてruby 1.9.1を持ってきてビルド。
% wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.9.1-p0.tar.gz % tar zxf ruby-1.9.1-p0.tar.gz % cd ruby-1.9.1-p0 % ./configure --prefix=/home/sho --program-suffix=19 && make
あとは待ってればいい……はずだったのに、待てど暮らせど終わらない。parse.cのコンパイルでえらい時間がかかっている。メモリの割り当てが足らないのかと思い、VMwareの設定を128→256MBにしてみたがダメ。
などと嘆いていたら、Twitterでヒントをもらった。詳細は1.9.1のビルドがparse.cのコンパイルで詰まっていた件。なぜか-O2ではダメらしい。先週、職場のマシンに入れたVMwareでは問題なかったのに、なんで???
まぁいいや、これで通るようになった(丸写しすぎ)。
% optflags="-O3 -pipe" ./configure --prefix=/home/sho --program-suffix=19 && make
まだmake test-allが最後まで走らないけど、追ってなんとかする。
■ screenとUTF-8の相性をなんとかする
さて、先日書いたUTF-8環境でscreenがおかしい件、パッケージを作り直せばいいというすばらしい情報をもらったけど……ハードル高いなぁ!
Kondara時代はrpmを作り直すなんて日常茶飯事だったけど、debianになってから自力でdeb作ったことなんてないし。とりあえず、見よう見まねでやってみた作業記録を試行錯誤の部分を削って書いておく。というか、おまじないだらけで、書いておかないと二度と同じことができない(笑)。
まずはパッケージ再作成に必要なパッケージを導入。deb一般だけでなく、screenのビルドに必要なものも含む:
% sudo aptitude install pentium-builder dpkg-dev fakeroot libncursesw5-dev libpam0g-dev debhelper dpatch
ソースパッケージを取得:
% mkdir screen % cd screen % apt-get source screen
あと、教えてもらったパッチを取得して置いておく(patch-cjkwidth-cvs-2006052001)。
Debianのパッチはdiffじゃなくてdpatchというもので管理されてるそうなので、dpatch用のパッチを作成しなくてはならない。持ってきたdiffを元にして作成する:
% cp -a screen-4.0.3 screen-4.0.3.orig % cd screen-4.0.3 % patch < ../patch-cjkwidth-cvs-2006052001 % cd .. % diff -Nru screen-4.0.3.orig screen-4.0.3 > cjkwidth.diff % mv screen-4.0.3.orig screen-4.0.3 % cd screen-4.0.3/debian/patches % dpatch patch-template -p 60cjkwidth "support cjkwidth" < ../../../cjkwidth.diff > 60cjkwidth.dpatch
ようするに、debian/patchの下に、60cjkwidth.dpatchを作成する手順である。60というのはdebian/patchesの下にある複数のパッチの最後が50~だったので。
同じdebian/patchesにある00listをエディタで開き、「40cjk_eastasian」の行を削り、代わりに「60cjkwidth」を追加する。これでcjkまわりのパッチが入れ替わったパッケージが作れる。
じゃあ作ってみましょう。
% cd ../.. % dpkg-buildpackage -rfakeroot -uc -b
これで上のディレクトリにdebファイルができてるはず。本来ならパッケージ名とかも変えるべき。インストールしておわり。
% sudo dpkg -i screen_4.0.3-11_i386.deb
で、結果としてどうなったかというと、改善したけどまだダメ~というところ。こないだ書いた、w3mのステータス行の問題はまったく改善されていないが、表示はよくなった部分もある。特にvimでのトラブルはほとんどなくなったので、何か書くのに困ることはなさそう。
うーん、w3m捨てちまおうかなー。
元コメントにあったように「かなりマシ」というレベルなんですよね。
個人的にはこれと
http://debian.fam.cx/index.php?cmd=read&page=Japanese&word=screen#content_1_62
でしのいでいる状態です。
根本からマトモになってほしいがなかなかうまくいかないものですね…
うっ、うちのw3mには「ある種のUnicode文字を全角にする」なんて設定がない(笑)。なんかおかしいな……
「ある種の~」は http://d.hatena.ne.jp/macks/20061001 が参考になると思います。
手元でパッケージにパッチを追加しているので差分を: http://arika.org/tmp/screen-w3m/
おー、ありがとうございます!
パッチは試してみたいと思います。ちょっといま時間がない……。