FreeBSD覚書

とは言いつつ、FreeBSDだけに関する話題ではなく、いわゆるPC-UNIX一般のものも含まれている。なお、主にFreeBSD 3.*以前にだけ関連すると思われるものは「古い話題」に移した。

GNOMEとWindow Makerの共存

しばらくGNOME+Enlightenmentを使っていたが、気まぐれで、ウィンドウマネージャを久しぶりにWindow Makerに戻してみた。さすがにアイコンなど画面はきれいだが、GNOMEとWindow Makerの仕事がダブっていて、アイコンがやたらに表示されたり操作できないメニューがあったりするし、そもそも起動時にGNOME対応のウィンドウマネージャではないと言われる。

ports-currentのpackagesにあったwindowmaker-i18n-0.62.1_1.tgzを入れたのだが、これはGNOME対応ではコンパイルされてないようだ(当り前か)。そこでports-currentをmakeすると、GNOMEがあるので問題なく--enable-gnomeでconfigureされてインストールできた。

しかし、やはり両者の役割分担がうまくいってないので、Using WindowMaker with GNOMEGnomeMakergnome-list 0938などを参考にしながら、好みとして以下のように設定している。

  1. Window Makerが余計なアイコンを作りすぎるので、‾/GNUstep/Defaults/WMWindowAttributesの"*"エントリを"*" = {Icon = defaultAppIcon.tiff;NoAppIcon = Yes;};に変更。
  2. portsのja-gnomecore-1.2.4windowmaker-i18n-0.62.1_1を入れると、GNOMEのControl CenterでWindow Makerの設定ツールが起動しない。/usr/X11R6/share/gnome/wm-properties/WindowMaker.desktopでのWPrefsの指定が正しくないので、ConfigExec=/usr/X11R6/GNUstep/Apps/WPrefs.app/WPrefsに変更。ln -s /usr/X11R6/GNUstep /usr/X11R6/share/GNUstepでもいいのだろうが、一長一短か。
  3. Dockはあまり必要に思えないので、disableにする。
  4. ウィンドウを最小化したときにはWindow Makerのきれいなアイコンの方がいいので、miniwindowsはdisableにはせず、miniwindowsでバルーンへルプが表示されるようにする。
  5. GNOMEのタスクリストは、Window Makerによるデスクトップでのマウスボタン3で代用できるので、取り除く。
Written: Tue Dec 12 JST 2000

LESSCHARSET

これまではjlessで日本語を表示させるために、setenv LESSCHARSET japanese-eucしていたのだが、4.1-RELEASEにアップグレードしたら、moreinvalid charset nameで起動しなくなった。

setenv LESSCHARSET japaneseが正しいようだが、LANGがja_JP.EUCであればLESSCHARSETの指定は止めても、とりあえずは問題なく動く。

moreのmanはlessになっているので、4.1-RELEASEからはmorelessになっているようだ。試してはいないが、jless用だけの指定をするならJLESSCHARSETですればいいのかもしれない。

Written: Sat Dec 09 JST 2000

portsのFORCE_PKG_REGISTERでのmake install

portsをmake installするとき、古いヴァージョンが既にインストールされているときなどは、それを削除して再度make installするか、または環境変数FORCE_PKG_REGISTERを設定してmake installしろ、というメッセージが出る。

しかし、後者を選んでしまうと、FreeBSD 4.0-RELEASEでは、それまでの/var/db/pkg/以下のファイルが消えてしまい、いまインストールしたアプリケーションの+COMMENTなどだけに置き換わってしまう。

/var/db/pkg/に登録するときのディレクトリの階層が間違っているわけで、これまでインストールしたpackagesやportsのリストが消えてしまった(笑)。ご注意を。

Written: Sat Oct 21 JST 2000

その後同じようなことが起こってないので確認できないが、これはsetenv FORCE_PKG_REGISTERとしてしまったためであって、setenv FORCE_PKG_REGISTER yesとすれば問題ないのかもしれない。

Written: Sat Nov 25 JST 2000

Mew + Gnusで複数のニュースサーバを使う

メールの読み書きにはWindowsやMacintoshのいろんなソフトも使ってきたが、やはりUNIXシステム上のMewがいちばん使いやすい。カスタマイズがしやすいこと、最終的に送信するテキストを自分で確認できること、MIMEなどの仕様に忠実なこと、そして何よりもemacs上で使えること、などのためだが、電子ニュース(ネットニュース)については、ver.2でサポートが予定されてはいるものの現在はまだ公式にはできていないので、読むときには(emacs上の)Gnus、記事の保存のときはGnusからMew形式で行い、書くときにはMewのcontribのmew-gnus.elを使ってMew、という風に使うことになる。

ところで、このように使う場合、読み書きするニュースサーバは普通は最初にプロバイダのものに設定しておくだけで十分だが、そこで接続されてないニュースグループに読み書きするときは、あらかじめ各々のソフト上でそのサーバを設定しておく必要がある。

読むためのGnusについては、.emacs(setq gnus-select-method '(nntp "netnews.rim.or.jp"))などに続いて、(setq gnus-secondary-servers '(nntp "news.hogehoge"))などと指定しておけば、M-x gnusで標準に立ち上がるGnusではgnus-select-methodのサーバに接続し、C-u M-x gnusにした場合は、gnus-secondary-serversのリストに設定してあるものをtabキーで補完して、選択できる。

Mewでの投稿については、IMの設定ファイル‾/.im/Configcase hogehogeとして該当ニュースサーバをNntpServersで指定し、Mewで送信する際にヘッダにConfig: hogehogeの1行を追加すればよい。

とはいっても、ヘッダに1行追加するのは面倒だし間違いも起こりうるので、以下のように.emacsに書いておけば、Mewで送信直前にC-c C-mしたときに、Newsgroups:がhogehoge.newsであるものにはConfig: hogehogeが自動挿入されて準備されるし、それ以外についても過去の履歴に基づいて、ある程度の補完候補を示してくれる。

(setq mew-config 'guess)
(setq mew-config-list '("hogehoge"))
(setq mew-config-insert-when-composed t)
(setq mew-config-guess-alist '(("Newsgroups:" ("hogehoge.news" . "hogehoge"))))
Written: Sat Sep 30 2000

Acrobat Reader

FreeBSD 4.0-RELEASEのpackagesにあるacroread-4.0は、私の環境ではSegmentation faultになり、Unable to initialize user interface.となって起動できなかった。

portsのacroread4acroread-4.05)をmake;make installすれば、問題なく動く。

と、した後でhttp://www.jp.freebsd.org/QandA/HTML/604.htmlに気が付いたが、それによるとXのリソースでAcroRead*inputMethod: noneとするか、XMODIFIERS="@im=none"; export XMODIFIERSで起動すれば、packagesのacroread-4.0も使えるらしい。

Written: Sat Sep 23 2000

サウンド・カード

私が使っているサウンド・カードはSound Blaster PCI Digitalだが、このようなプラグ・アンド・プレイ対応のPCIカードの場合、FreeBSD 4.0-RELEASEではカーネル・コンフィグレーションファイルGENERICdevice pcmを追加してカーネルを再構築し、# cd /dev; sh MAKEDEV snd0でデバイスファイルを作成して、リブートすればよい。

ちなみに、GNOME CD Playerを使う場合、デフォルトではCD-ROMデバイスが/dev/cdromになっているので、IDEドライブであれば/dev/acd0cに変更し、# chmod a+r /dev/acd0cとする。

Last modified: Wed Aug 16 JST 2000

Java2(jdk1.2.2)

Porting JDK 1.2.2に従って、インストールする。

なお、コンパイルの際にブートストラップとして使うlinux-jdk1.2.2については、FreeBSD Ports: JavaのSourcesにあるjdk-1.2.2-RC4-linux-i386-glibc-2.1.2.tar.bz2は、PortsのSourceというよりはDistfileなので、ダウンロードして/usr/ports/distfiles/に置く。五橋研究所発行の『FreeBSD 4.0 Complete Package』のCD-ROMにはlinux-jdk-1.2.2のPortsのスケルトンが含まれていないので、Linux JDK 1.2 ports for FreeBSD(http://www.jmcm.org/tech/ports/linux_jdk.html)などにあるlinux-jdk-1.2.2.tar.gzをダウンロードして、例えば/usr/ports/java/以下(または/usr/ports/linuxを作って、それ以下)に展開し、make; make installする。

また、Howto'sには、buildscriptの例として

#!/bin/sh
#
# Script to build JDK 1.2.2 for FreeBSD
#
STARTTIME=`date`

ALT_BOOTDIR=/usr/local/linux-jdk1.2.2
export ALT_BOOTDIR
ALT_MOTIF_DIR=/usr/X11R6
export ALT_MOTIF_DIR
ALT_ODBCDIR=/usr/local
export ALT_ODBCDIR
ALT_DPSDIR=/usr/X11R6
export ALT_DPSDIR
_JDK11DIR=/usr/local/jdk1.1.8
_JDK11DIR
(以下略)

とあるが、当然、上記の最終行はexport _JDK11DIRとする必要がある。

ちなみに、「必要なPorts」のうち、lesstifは古い0.89.9を使ったが、問題はないようだ。なお、buildscriptによるコンパイルの時間は、Pentium III 600MHz、メモリ256MBで、約47分だった。

Last modified: Sun Jul 09 JST 2000

ports jdk-1.2.2b10

上記のインストールでは日本語の扱いがいまいちで、ln -s /usr/share/locale/ja_JP.EUC /usr/share/locale/jaとしたりjava -Duser.language=ja -Dfile.encoding=EUCJISなどとしてもencoding is not supportedとなり、うまくいかないことが多かったが、freebsd-jdk122-patches-10.tar.gzが出て、だいぶ実用的になった。

Portsにもなったので、make; make installだけでインストールできる。

ただし、FreeBSD 4.1.1-RELEASE(4.2-RELEASE?)からportsの仕組みが変わっているようなので、4.1-RELEASEのPortsスケルトンにports-currentからjdk-1.2.2b10を持ってきただけでは、make installでpacking listを作るときにエラーになり止まってしまうで、/usr/ports/Mkをcurrentのものに置き換える必要がある。

Written: Sat Nov 25 JST 2000

日本語EUC以外での出力encodingの問題

Xerces+XT(またはSmartdoc)でHTML出力をJISにすると、たまに一部分が文字化けしていることに気づいた。

入力(処理対象の文書)を日本語EUCではなく、JISやシフトJIS、utf-8にしても、まったく同じ部分が文字化けする。

化けてしまう箇所を含む部分を別ファイルにして処理すれば問題は起こらないし、元の文書でも他の箇所を修正すると問題なくなったりすることもあるので、この箇所の文字列そのものの問題ではなく、文脈によることになる。

結局、[sdocusersj 373](<200102201247.VAA35616@ml.asahi-net.or.jp>)で指摘されたが、現状のFreeBSD版jdk-1.2.2では、出力は日本語EUCにしないと、このようなことが、たまに起こるようだ。

Written: Tue Feb 27 JST 2001

リムネットへのダイヤルアップでのsendmailの設定

1999年12月にリムネットのメールサーバの仕様が変更になり、以前のsendmailの設定では外部のドメインには送信できなくなった。

以前はCFの定義ファイルsendmail.defは、local宛て以外をプロバイダのメールサーバにリレーする場合、とりあえず以下のようにしておけばよかった。

OS_TYPE=bsd4.4
CF_TYPE=R8V8
DIRECT_DELIVER_DOMAINS=none
DEFAULT_RELAY='mail.t3.rim.or.jp'
FROM_ADDRESS='$m'

しかし、これだと、外部ドメインに送信する場合MXサーバに接続してしまい、Relay operation rejectedでエラーになるようになった。

SMTPだけにリレーさせる必要があるので、sendmail.defは、とりあえず以下のようにすればよい。

OS_TYPE=bsd4.4
CF_TYPE=R8V8
DIRECT_DELIVER_DOMAINS=none
DEFAULT_RELAY='smtp:[mail.t3.rim.or.jp]'
FROM_ADDRESS='$m'

GNU Emacs 20.3での日本語利用

GNU Emacsのヴァージョン20からはMuleが統合されるようになり、20.2はMule 3.0、20.3はMule 4.0になっている。

もっとも、Emacs 19.34ベースのMule 2.3の全機能は取り込めていないみたいようにもみえるし、また、かな漢字変換は標準ではSKKなどしか使えないので、例えばCannaを使う場合はEmacsの部屋にあるemacs-20.3+canna-9.diff.gzなどの非公式のパッチをソースに当ててコンパイルしなければならない(ちなみにこのファイルをXEmacs 20.4で開こうとするとなぜか凍ってしまう)。

./configureは、FreeBSDの場合Cannaのヘッダは/usr/local/include/cannaにあるはずだが、上記パッチではcanna/を探しにいくようになるので、以下のようにする。

% ./configure i386--freebsd --with-x-toolkit --with-pop --with-canna --with-canna-includes=/usr/local/include --with-canna-libraries=/usr/local/lib<Return>

とりあえず、日本語文字が表示できるようにするには、k14フォントを使う場合は、‾/.Xresourcesなどに以下のように書けばよい。

Emacs.Font: -*-fixed-medium-r-normal--14-*-*-*-c-*-fontset-k14
Emacs.Fontset-0: -*-fixed-medium-r-normal--14-*-*-*-c-*-fontset-k14,¥
        ascii:-*-fixed-medium-r-normal--14-*-*-*-c-*-iso8859-1,¥
        latin-iso8859-1:-*-fixed-medium-r-normal--14-*-*-*-c-*-iso8859-1,¥
        katakana-jisx0201:-*-fixed-medium-r-normal--14-*-*-*-c-*-jisx0201.1976-0,¥
        japanese-jisx0208:-*-fixed-medium-r-normal--14-*-*-*-c-*-jisx0208.1983-0,¥
        japanese-jisx0212:-*-fixed-medium-r-normal--14-*-*-*-c-*-jisx0212.1990-0

Emacs 20では文字集合ごとにフォントを設定できるので、他のものも使いたい場合は追加すればよい。

また、ボールド体やイタリック体はFontset-1などとして設定できる(日本語文字についてはX-TTとTrueTypeフォントが必要)。

パーティションのサイズ設定の目安

ハードディスクの容量が小さいときは、場合によってはパーティションを分けずに全てを/にしてしまう方が効率がよくていいということもあるだろうが、一般的には、システムをアップグレードするときの便利さや安全性などの点で、分割しておいた方がいい。ただ、どのくらいのサイズで切るかは、なやましいところだ。

経験的には、/usr/localはフリー・ソフトの大部分が入るわけだが、XEmacs、Mule、Netscape Communicator、LaTeX、Ghostscript、Afterstep、JDK、その他基本的なソフトやフォントを入れたら、300MBを超えた。

また、/usr/X11R6はX-TTをmake worldしたときには、256MBでは溢れて「マイナス」の状態になってしまった(もっとも今はX-TTもバイナリが提供されているので、それを使うならこの半分以下で十分)。

あと、/usr/homeは私の場合、フリーソフトのソースなども入れて他のOSと共有するため別のスライスにしたいし、また、Mozilla(5.0のβ版)をコンパイルするためにはスワップは128MB以上必要らしい。

そのため、現在は、内蔵IDEの600MBと外付SCSIの1GB×2を以下のような設定で使っている。

/dev/wd0s2a       /               32MB
/dev/wd0s2b       swap               41MB
/dev/wd0s2e       /var               30MB
/dev/wd0s2f       /usr              514MB
/dev/sd0s2b       swap               48MB
/dev/sd0s2e       /usr/local       659MB
/dev/sd0s2f       /usr/X11R6       320MB
/dev/sd0s3b       swap               64MB
/dev/sd0s3e       /usr/home       963MB

ちなみに、/usrが大きいが、これはスライスの余りを割り当ててしまったためで、ports全部を展開せずにカーネル再構築程度をするくらいならこの半分程度で十分か(本来は、その分/tmpを別パーティションにするべきだろう)。

現時点での使用状態は以下のようになっている。

% df
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/wd0s2a     31775    21263     7970    73%    /
/dev/wd0s2f    510079   222405   246868    47%    /usr
/dev/sd0s2f    317903    68714   223757    23%    /usr/X11R6
/dev/sd0s3e    955839   455044   424328    52%    /usr/home
/dev/sd0s2e    654303   252628   349331    42%    /usr/local
/dev/wd0s2e     29727     2950    24399    11%    /var

その後

上記の文章も、数十GBのハードディスクが一般化した今では昔話になってしまった。

実際、私も、30GBのハードディスクのうち、約7GBのスライスをFreeBSD専用に使うことにしたため、パーティションが溢れるといったことは心配する必要もなくなっている。また、packagesも含めてフリーソフトは/usr/X11R6にインストールされるものが多くなってきたので、/usr/local/usr/X11R6を分けることの意義も小さくなった。なので、インストーラがデフォルトで割り振る、/swap/var/usrだけでもよかったと思うのだが、考えるのも面倒になって、結局、なんとなく過去のことに縛られ/usr/local/usr/X11R6は分け、さらに/tmpも独立させて、以下のようにしてしまった。

% df
Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
/dev/ad0s3a     49583    27218    18399    60%    /
/dev/ad0s3f    254063      431   233307     0%    /tmp
/dev/ad0s3g   4667525  1830613  2463510    43%    /usr
/dev/ad0s3h   1016303   247305   687694    26%    /usr/X11R6
/dev/ad0s3d   1017071   526468   409238    56%    /usr/local
/dev/ad0s3e     19815     3605    14625    20%    /var

しかし、既にこの切り方には後悔している。次に切り直すときには、たぶん、/usr/local/usr/X11R6は独立させず、代わりにもう一度/usr/homeを独立させ、また/varをもっと大きくするだろう。

SLIPによるローカルマシンのIP接続

ローカルマシンをIP接続する場合、Ethernetボードを入れて接続するのが王道だが、それがなく、とりあえず2台だけを接続すればよくてそれほどの速度でなくてもいい場合は、シリアルケーブルでSLIPを使うと安上がりになる。

その場合は、以下のようにする。

popclientからfetchmailに換えるときの問題

メールをPOPで取り込むときはpopclientを使って/var/mail/に取り込んでMewで読んでいて、OSのヴァージョンアップによってpopclientがpackagesになくなってからもソースをコンパイルして使い続けていたのだが、さすがに将来性がないのかと思ってfetchmailに換えてみたら、ちょっと失敗してしまった。

fetchmailは、デフォルトではmimedecodeで取り込むことになっているので、ヘッダのMIMEのdecodeをMewに任せる使い方をしている場合などは、受け取ったメールのヘッダの日本語は「化けて」しまう。

結局この場合は、‾/.fetchmailrcのオプションで、

poll mail.xxx.ne.jp protocol auto username hogehoge password xxxx no mimedecode

などとすればいいわけだが、このno mimedecodeの指定の仕方は、私の英語力ではマニュアルを読んでもなかなか分からなかったです > Eric S. Raymondさん


XEmacs | Mozilla | 古い話題
トップページ