FreeBSD 6.2 試行錯誤

2008年 4月 8日 更新


このページは,試験用サブマシン(自作 4号機)への FreeBSD 6.2 のインストールで,試行錯誤する様子をメモしたものである. 失敗や間違いも載せてしまっていると思うので,そのつもりで読んでほしい.

2008年 1月 12日に常用マシン(自作 3号機)にも FreeBSD 6.2 をインストールしたので, 運用上の設定も載せていく.


目次


2008年 4月 8日:6.3-RELEASE に upgrade

FreeBSD 6.3 が release されてから 2ヶ月半. 6.2 の End of Life は 5月末日で,まだ 2ヶ月近くあるが, 6.2 でやりたいことは,あらかたやりつくしてしまったので, 最後に 6.3 に upgrade して,この記事を終わらせることにしようと思う.

FreeBSD 6.3-RELEASE Announcement によると, freebsd-update で簡単に binary upgrade ができるようなので, この手順で upgrade することにした.

# fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz
# tar -xf freebsd-update-upgrade.tgz

upgrade スクリプトと設定ファイルをダウンロードして展開. さっそく upgrade する.

# sh freebsd-update.sh -f freebsd-update.conf -r 6.3-RELEASE upgrade
Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 6.2-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic kernel/smp src/base src/bin src/contrib src/crypto
src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec
src/release src/rescue src/sbin src/secure src/share src/sys src/tools
src/ubin src/usbin world/base world/catpages world/dict world/doc
world/games world/info world/manpages world/proflibs

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? y

y/n を聞いてくるので y と答える.

Fetching metadata signature for 6.3-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 6.2-RELEASE for merging... done.
Preparing to download files... done.
Fetching 10445 patches.....10....20....30....(略)

1万個以上のファイルのダウンロードがはじまる.

Applying patches... done.
Fetching 1630 files... 
Attempting to automatically merge changes in files... done.

The following file could not be merged automatically: /etc/hosts.allow
Press Enter to edit this file in vi and resolve the conflicts
manually...

<<<<<<< current version
=======
#
# hosts.allow access control file for "tcp wrapped" applications.
# $FreeBSD: src/etc/hosts.allow,v 1.19.8.2 2007/01/20 02:19:57 csjp Exp $
#
# NOTE: The hosts.deny file is deprecated.
#       Place both 'allow' and 'deny' rules in the hosts.allow file.
#	See hosts_options(5) for the format of this file.
#	hosts_access(5) no longer fully applies.
>>>>>>> 6.3-RELEASE

<<<<<<< current version
sshd : 192.168.107. : allow
ftpd : 192.168.107. : allow
ALL : ALL : deny
=======
#	 _____                                      _          _
#	| ____| __  __   __ _   _ __ ___    _ __   | |   ___  | |
#	|  _|   \ \/ /  / _` | | '_ ` _ \  | '_ \  | |  / _ \ | |
#	| |___   >  <  | (_| | | | | | | | | |_) | | | |  __/ |_|
#	|_____| /_/\_\  \__,_| |_| |_| |_| | .__/  |_|  \___| (_)
#					   |_|
# !!! This is an example! You will need to modify it for your specific
# !!! requirements!
(略)

Does this look reasonable (y/n)? y

/etc/hosts.allow を編集し(あとで行うことにした),y と答える.

The following files will be removed as part of updating to 6.3-RELEASE-p1:
/boot/GENERIC/hptmv.ko
/boot/kernel/hptmv.ko
/usr/share/doc/de_DE.ISO8859-1/books/handbook/install-supported-hardware.html
/usr/share/doc/de_DE.ISO8859-1/books/handbook/install/desktop.png
(略)
The following files will be added as part of updating to 6.3-RELEASE-p1:
/boot/GENERIC/acpi_dock.ko
/boot/GENERIC/coretemp.ko
(略)
The following files will be updated as part of updating to 6.3-RELEASE-p1:
/COPYRIGHT
/bin/[
/bin/cat
(略)

削除される・追加される・変更されるファイルのリストが表示されて upgrade は終了. install し,reboot する.

# sh freebsd-update.sh -f freebsd-update.conf install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"freebsd-update.sh install" again to finish installing updates.
# shutdown -r now

もう一度,install し,reboot.

# sh freebsd-update.sh -f freebsd-update.conf install
Installing updates... done.
# shutdown -r now

uname で 6.3 に upgrade されたことを確認.

$ uname -a
FreeBSD kdo3.localhost 6.3-RELEASE-p1 FreeBSD 6.3-RELEASE-p1 #0: Wed Feb 13 02:56:56 UTC 2008     root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/SMP  i386

1万個以上のファイルをダウンロードするので,AirH" で 9時間もかかった. AirH" のせいか,サーバが混雑していたのか, 何度かファイルのダウンロードに失敗した. その度に freebsd-update.sh をやりなおす必要があったが, 一度ダウンロードしたファイルは metadata 以外は, ダウンロードしなおさないので,時間はそれほどかわらない.

途中で y/n を答えなくてはならず, また,/etc/hosts.allow を編集する必要があるので, ずっと見ていなくてはならない.ちょっとつかれた.


2008年 3月 7日:Anonymous FTP

Anonymous FTP の設定をする.

# sysinstall -> Configure -> Networking -> Anon FTP を選択すると, 注意書きが出たあと Anonymous FTP Configration に入るので, Path Configuration の FTP Root Directory: を /home/ftp に変更して OK する (デフォルトの /var/ftp だとせまいので) . OK,Exit を選択して sysinstall を抜けると, もう Anonymous FTP でログインできるようになっている.


2008年 3月 7日:NFS

共有ファイルサーバを作るため,NFS のテスト.

「FreeBSDビギナーズバイブル」にしたがって,設定をした.

まず,自作 4号機(kdo4)の /etc/rc.conf に

rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_enable="YES"
mountd_flags="-r"

の記述を追加.

次に /etc/exports を作り,

/usr/home/public -network 192.168.107 -mask 255.255.255.0

と記述して再起動する.

次に client の設定をする. 自作 3号機で,/etc/rc.conf に

nfs_client_enable="YES"

と記述して再起動し,mount_nfs を試みたのだが….

# mount_nfs kdo4:/usr/home/public /mnt
[udp] kdo4:/usr/home/public: RPCPROG_NFS: RPC: Port mapper failure - RPC: Authentication error

止まってしまった.なぜだ?

google で調べてみると

がみつかった. rpcbind が tcp wrapper でフィルタされているとこうなるらしい. さっそく 4号機の /etc/hosts.allow に

rpcbind : 192.168.107. : allow

の記述を追加して再起動. 難なく mount_nfs できた.ファイルの読み書きができることも確認.


2008年 3月 7日:xpdf

PDFファイルを見るために,xpdf をインストール. acroread を入れるのがいいんだろうけど, package がないので,とりあえず xpdf を入れることにした.

ja-xpdf-3.00_2.tbz を pkg_add.

やっぱり,日本語の PDF で読めないのがあるなあ. あれ,FreeBSD で TeX から作った PDF が読めない.何でだ. Windows で作った PDF が読めないのは仕方ないとも思うのだが, これは納得いかないなあ.


2008年 3月 7日:xlock

一人暮しなので,あんまり意味ないかもしれないけど,xlock をインストールした. xlockmore-5.22.tbz を pkg_add.


2008年 3月 4日:Samba ふたたび [public]

1月の Sambaの設定では, Windows からユーザのホームにアクセスするようになっているのだが, これだとドットファイルのような設定ファイルがごちゃごちゃと見えてしまい,わずらわしい. 作りたいのは動画ファイルのサーバなので,置くのはデータファイルだけにしたい.

あと,データを置くディレクトリのユーザ名で Windows にログオンしなくてはならないのもいやだ. できれば Windows でも "kdo" でログオンしたいのだ."samba" とかでなく.

ということで,ユーザのホームへのアクセスをやめて,共有フォルダの設定をすることにした.

共有フォルダとするディレクトリ /usr/home/public を作り, chmod a+w しておいてから, /usr/local/etc/smb.conf を以下のように編集しなおした.

[global]
   workgroup = MYGROUP
   server string = Samba Server
   security = user
   hosts allow = 192.168.107.70
   log file = /usr/local/samba/var/log.%m
   max log size = 50
   dns proxy = no 
   display charset = EUCJP-MS
   unix charset = EUCJP-MS
   dos charset = CP932 
[public]
   path = /usr/home/public
   public = yes
   only guest = yes
   writable = yes
   printable = no

[homes] の記述をコメントアウトし,[public] の記述のコメントアウトをはずして path の項を書き換えた.

再起動すると, Windows からはコンピュータkdo4内の publicフォルダとして見えるようになり, ファイルの読み書きもちゃんとできた.


2008年 2月 15日:PostgreSQL

自宅でもデータ処理をしたくなったので,PostgreSQL をインストール.

postgresql-server-8.1.4_1.tbz を pkg_add. 同時に postgresql-client-8.1.4_1.tbz もインストールされた.

インストール時のメッセージにしたがい,

# /usr/local/etc/rc.d/010.pgsql.sh initdb
# /usr/local/etc/rc.d/010.pgsql.sh start

と打つ.何も起こらないが,大丈夫なのかな?

マシンを立ち上げたとき起動するように,/etc/rc.conf に

posrgresql_enable="YES"

を追加する.

PostgreSQLのスーパユーザ pgsql になって,ユーザ kdo を追加する. データベースを作れるユーザにした.

# su pgsql
$ createuser kdo
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create database? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
createuser: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
$

あれ,サーバに接続できないみたい.ps ax でプロセスを調べてみたら, postmaster が動いていない.なぜだろう. もう一度,010.pgsql.sh をためしてみる.

# /usr/local/etc/rc.d/010.pgsql.sh initdb
The files belonging to this database system will be owned by user "pgsql".
This user must also own the server process.

The database cluster will be initialized with locale C.

creating directory /usr/local/pgsql/data ... ok
creating directory /usr/local/pgsql/data/global ... ok
creating directory /usr/local/pgsql/data/pg_xlog ... ok
creating directory /usr/local/pgsql/data/pg_xlog/archive_status ... ok
creating directory /usr/local/pgsql/data/pg_clog ... ok
creating directory /usr/local/pgsql/data/pg_subtrans ... ok
creating directory /usr/local/pgsql/data/pg_twophase ... ok
creating directory /usr/local/pgsql/data/pg_multixact/members ... ok
creating directory /usr/local/pgsql/data/pg_multixact/offsets ... ok
creating directory /usr/local/pgsql/data/base ... ok
creating directory /usr/local/pgsql/data/base/1 ... ok
creating directory /usr/local/pgsql/data/pg_tblspc ... ok
selecting default max_connections ... 40
selecting default shared_buffers ... 1000
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
enabling unlimited row size for system tables ... ok
initializing dependencies ... ok
creating system views ... ok
loading pg_description ... ok
creating conversions ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    /usr/local/bin/postmaster -D /usr/local/pgsql/data
or
    /usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

# /usr/local/etc/rc.d/010.pgsql.sh start

今度はちゃんと起動した. どうも先に /etc/rc.conf を編集しなくてはならなかったようだ.

pgsql に su して,createuser しなおす.

# su pgsql
$ createuser kdo
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create database? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
$

ためしにユーザ kdo でデータベースを作ってみる.

$ createdb j1
CREATE DATABASE
$ psql -d j1
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

j1=> \d
No relations found.
j1=> \q
$

データベース j1 ができて,psql で操作できた.


2008年 2月 6日:gnuplot

データをちょこっと見るのに便利な gnuplot をインストール.

package は gnuplot-4.0.0_5.tbz と gnuplot371+-1.2.0_2.tbz の 2つがあった. 4.0.0 の方が新しいのだが(最新は 4.2.1 だけど), この version は pdflib が必要. pdflib は package が用意されていないので ports で make する必要があるのだが, PDFlib のサイトには, もう 1年前の version は残っていなかった. pdflib のために ports を新くしたりするのはめんどうなので, ちょっと古いけど version 3.7 の方をインストールすることにした.

gnuplot371+-1.2.0_2.tbz を pkg_add. 同時に freetype,ja-vflib の 2つの packages もインストールされた.


2008年 1月 26日:a2ps

テキストファイルを PSファイルに変換するツール a2ps をインストールした. ja-a2ps は package がないので,ソース

をダウンロードしてきて,/usr/ports/distfiles/ に置き,make する.

# cp a2ps.pl-1.45 /usr/ports/distfiles/
# cd /usr/ports/japanese/a2ps
# make 
# make install
# make package
# make clean

コマンドは a2ps-j である. a2ps で使えるように alias の設定を ~/.bashrc に追加しておく.

alias a2ps='a2ps-j'

2008年 1月 24日:latex2html

TeX ファイルから HTMLファイルをつくる latex2html をインストールした. ja-latex2html は package がないので,ソース

をダウンロードしてきて,/usr/ports/distfiles/ に置き,make する.

# cp latex2html-2002-2-1.tar.gz /usr/ports/distfiles/
# cp l2h-2002-2-1+jp2.0.patch.gz /usr/ports/distfiles/
# cd /usr/ports/japanese/latex2html
# make 
# make install
# make package
# make clean

2008年 1月 22日:freebsd-update

FreeBSD をバイナリでアップデートするツール freebsd-update を使ってみた. 最初からインストールされているので,

# freebsd-update fetch
# freebsd-update install

と打ち込むだけでいい. 73個の patches をダウンロードするのに AirH" で 13分.早い.

patches を fetch したときに,こんなメッセージが出た.

WARNING: FreeBSD 6.2-RELEASE is approaching its End-of-Life date.
It is strongly recommended that you upgrade to a newer
release within the next 4 months.

むむむ,当分 6.2 で行くつもりだったのだが, アップグレードを強く推奨か…. CVSup で 6.3 にアップグレードできるんだったかな. ちょっと調べてみないと.


2008年 1月 21日:XEphem

天体表示ソフト XEphem をインストール. package がないので,ports からインストールする.

まず,依存している open-motif-2.2.3_2.tbz を pkg_add.

それから /usr/ports/astro/xephem にうつって make.

# cd /usr/ports/astro/xephem
# make
===>  xephem-3.7.2 :
 Because of licensing restrictions, you must manually fetch
 xephem-3.7.2.tar.gz from http://www.clearskyinstitute.com/xephem/,
 place it in /usr/ports/distfiles and then run make again.
.*** Error code 1

Stop in /usr/ports/astro/xephem.
#

ライセンスの制限で,ソースファイルは手動で取ってこなくてはいけないらしい. XEphem のサイトから, xephem-3.7.2.tar.gz をダウンロードして, もう一度 make.

# cp xephem-3.7.2.tar.gz /usr/ports/distfiles/
# cd /usr/ports/astro/xephem
# make
# make install
# make package

無事インストール完了.


2008年 1月 20日:Audacity

音声編集ソフト Audacity をインストール. audacity-1.3.0b.tbz を pkg_add した. 同時に 6個の package がインストールされる. 問題なく使えた.


2008年 1月 20日:alias の設定(emacs, w3m)

~/.bashrc に,以下の 2行を追加

alias w3m='w3m -B -F'
alias emacs='emacs -nw'

w3m については,起動時にブックマークを表示するようにし, フレーム表示も有効にした. emacs については,ターミナル内での起動をデフォルトにした. 別ウインドウで起動するときは,\emacs と打つ.


2008年 1月 20日:WindowMaker の設定(focus, workspace, kterm, wmclock)

ウィンドウフォーカスとワークスペース

画面右上の工具(ドライバー)のアイコンをダブルクリックすると, Window Maker Perferences が起動する. これで,ウィンドウのフォーカスとワークスペースの追加の設定を変える.

Save して,Restart Window Maker する. マウスを乗せたウィンドウにフォーカスがうつり, Ctrl+Alt+"→" で新しいワークスペースができるようになった.

kterm

画面上で右クリックし,メニューから Run... を選択. kterm と入力して OK すると,kterm のウィンドウとともに, 左下にアイコンが現れる. このアイコンをドラッグして右上の Dock に追加. 右クリックして Settings... で Icon Image を /usr/X11R6/share/WindwoMaker/Icons/Terminal.tiff に変更する.

まぎらわしいので, もとからある xterm のアイコンを画面中央にドラッグして破壊しておく.

このままでは,このアイコンからは kterm ひとつしか起動できない. 何度も起動できるようにするには, 起動した kterm のウィンドウのタイトルバーを右クリックして, Attributes... を選択し,Application Specific の No application icon にチェックを入れて Save すればよい.

を参考にして解決した.

画面上右クリックで現れるアプリケーションメニューの項目も変更しておく. Window Maker Preferences で Applications Menu Definition を選択すると, メニューが現れるので,XTerm をダブルクリックし,KTerm に変更する. KTerm: Execute Program の Program to Run を kterm に変更する.

wmclock

時計・カレンダーの Dockアプリ wmclock をインストールする. wmclock-1.0.12.2_1.tbz を pkg_add し,wmclock & で起動. 左下にアイコンが現れるので,Altキーを押しながらドラッグして, 右上の Dock に追加する. 一度 Restart Window Maker してから,Settings... で Start when Window Maker is started にチェックを入れる. これで X と同時に起動するようになった.


2008年 1月 19日:bsfilter, fetchmail, procmail

現在,このシステムではメールの受信を Mew の iコマンドで行っているが, 毎回パスワードを入力するのがめんどうなのと,スパムが多くてわずらわしいので, fetchmail で取ってきて,スパムフィルタで選別することにした. スパムフィルタには bsfilterを使ってみることにした.

設定などは

を参考にした.

最初に bsfilter をインストールして, スパム判定のチェックをしておく. bsfilter-1.0.15.tbz を pkg_add. 同時に ruby18-gdbm もインストールされた.

まずはデータベースの準備をする.

$ bsfilter --add-clean ~/Mail/inbox/*
$ bsfilter --add-spam ~/Mail/spam/*
$ bsfilter --update

~/Mail/inbox/ には 1000件の,~/Mail/spam/ には 8000件のメールがある. データベースの準備には 11分かかった.

つづいてメールの判定テストをする.

$ bsfilter ~/Mail/inbox/1
combined probability /home/kdo/Mail/inbox/1 1 0.000000
$ bsfilter ~/Mail/spam/1
combined probability /home/kdo/Mail/spam/1 1 1.000000
$ bsfilter < ~/Mail/inbox/1 ; echo $?
1
$ bsfilter < ~/Mail/spam/1 ; echo $?
0

きちんと動いているようだ.

次に,fetchmail,procmail をインストールする. fetchmail-6.3.4_3.tbz,procmail-3.22_6.tbz を pkg_add.

fetchmail の設定ファイル ~/.fetchmailrc を作る.

defaults
  protocol pop3
  no rewrite
  no mimedecode
  mda "/usr/local/bin/procmail"
  
poll POPサーバ
  username "ユーザネーム"
  password "パスワード"

POPサーバから取ってきたメールを procmail にわたすように設定した. ~/.fetchmailrc は 600 に chmod しておく.

procmail の設定ファイル ~/.procmailrc は参考サイトのまねをして適当に作った.

PATH=/usr/bin:/bin:/usr/local/bin

MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/inbox/.
LOGFILE=$MAILDIR/from-log
LOCKFILE=$HOME/.lockmail

MAG=mailmagazine/.
SPAM=spam/.

# いらないメールマガジンなど

* ^From:.*weeklymag2@mag2.com
$MAG

:0H
* ^From:.*weeklymag2e@mag2.com
$MAG

# …

# spam メール

:0 HB:
* ? bsfilter --auto-update
$SPAM

# 残りのメール

:0:
inbox/.

まず,読まないメールマガジンなどを別フォルダに移し, その後 bsfilter で選別する.

さっそく fetchmail してみる. 新着メール 16件を取得し, 1件の一般メールと 15件のスパムメールに振り分けられた. Mew でメールの内容を確認 (注:Mew で新しいメールを表示するには,sコマンドで再表示する必要があった). 正しく振り分けられていることを確認した.


2008年 1月 13日:gqview

画像一覧表示ソフト gqview をインストール. gqview-2.1.1_2.tbz を pkg_add する.


2008年 1月 10日:portupgrade, libiconv, samba

「FreeBSD ビギナーズバイブル」を参考に samba をインストールした.

まず,samba 3 が依存する libiconv が eucJP-ms をサポートしているかをたしかめる.

$ iconv -l | grep EUC
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
CN-GB EUC-CN EUCCN GB2312 CSGB2312
EUC-TW EUCTW CSEUCTW
EUC-KR EUCKR ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSEUCKR CSKSC56011987
EUC-JISX0213

やっぱりデフォルトではサポートしていないようだ. libiconv を ports からオプション WITH_EXTRA_PATCHES=yes を指定して, 再インストールすることにする.

libiconv は,すでに 70以上のアプリケーションが依存している. 依存関係を維持しながらアップグレードするために, まず portupgrade をインストールする. package portupgrade-2.1.3.3_1,2.tbz を pkg_add. 同時に db41,ruby,ruby18-bdb の 3つの package がインストールされた.

さっそく libiconv を makeオプション付きでアップグレードする.

アップグレードはオフラインで行なう. 2007年 2月 20日の古い portsツリーのままで再インストールしたいからである. libiconv に依存しているアプリケーションが多いので, libiconv のバージョンを上げたくないのだ. オンラインで portupgrade すると最新のインデックスファイル INDEX-6.bz2 をダウンロードしてくるので都合が悪い. オフラインでは ports index の構築に時間がかかるが,やむを得ない.

ソース libiconv-1.9.2.tar.gz とパッチ libiconv-1.9.2-cp932.patch.gz をダウンロードして,/usr/ports/distfiles/ に置いて,portupgrade を行なう.

# portupgrade -f -m WITH_EXTRA_PATCHES=yes libiconv
cd: can't cd to /usr/ports/sysutils/portupgrade
[Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ...- 201 packages
found (-0 +201) ..........................................................
..........................................................................
..................................................................... done]
cd: can't cd to /usr/ports/sysutils/portupgrade
Fetching the ports index ... fetch: http://www.FreeBSD.org/ports/INDEX-6.bz2:
No address record
failed to fetch INDEX!
Updating the ports index ... 
. Warning: Duplicate INDEX entry: freeciv-gtk2-2.0.8_2
done
[Updating the portsdb <format:bdb_btree> in /usr/ports ... - 16567 port
entries found .........1000.........2000.........3000.........4000.......
..5000.........6000.........7000.........8000.........9000.........10000.
........11000.........12000.........13000.........14000.........15000....
.....16000.......... done]
[missing key: categories] [Updating the portsdb <format:bdb_btree> in
/usr/ports ... - 16567 port entries found .........1000.........2000.....
....3000.........4000.........5000.........6000.........7000.........8000
.........9000.........10000.........11000.........12000.........13000....
.....14000.........15000.........16000.......... done]
missing key: categories: Cannot read the portsdb!
database file error
[missing key: categories] [Updating the portsdb <format:bdb_btree> in
/usr/ports ... - 16567 port entries found .........1000.........2000.....
....3000.........4000.........5000.........6000.........7000.........8000
.........9000.........10000.........11000.........12000.........13000....
.....14000.........15000.........16000.......... done]
missing key: categories: Cannot read the portsdb!
/usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:567:in open_db': database file
error (PortsDB::DBError)
        from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:736:in port'
        from /usr/local/lib/ruby/site_ruby/1.8/portsdb.rb:924:inall_depends_list'
        from /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb:915:in tsort_build'
        from /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb:907:in each'
        from /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb:907:intsort_build'
        from /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb:929:in sort_build'
        from /usr/local/lib/ruby/site_ruby/1.8/pkgdb.rb:933:in sort_build!'
        from /usr/local/sbin/portupgrade:694:in main'
        from /usr/local/lib/ruby/1.8/optparse.rb:755:ininitialize'
        from /usr/local/sbin/portupgrade:210:in new'
        from /usr/local/sbin/portupgrade:210:in main'
        from /usr/local/sbin/portupgrade:1981

エラーが出て止まってしまった.何でだ?

google で検索したところ,次のようなページがみつかった.

portupgrade のカテゴリが sysutils から ports-mgmt へ移ったことが原因らしい. packages-6.2-release の portupgrade が 2006年 10月 19日作成で, 現在の 4号機の portsツリーは 2007年 2月 20日のものである. portupgrade のカテゴリ移動が 2007年 2月 5日だから, 影響をまともに受けてしまっている.

portupgrade を ports から再インストールする. ソースファイル pkgtools-2.2.2.tar.bz2 を取ってきて,

# pkg_delete portupgrade-2.1.3.3_1,2
# cp pkgtools-2.2.2.tar.bz2 /usr/ports/distfiles/
# cd /usr/ports/ports-mgmt/portupgrade
# make
  (オプションは指定しなかった.)
# make install

portupgrade-2.2.2_4,2 がインストールされた.

あらためて libiconv をアップグレードする.

# portupgrade -f -m WITH_EXTRA_PATCHES=yes libiconv
…
…
# iconv -l | grep EUC
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
EUC-JP-MS EUCJP-MS EUCJP-OPEN EUCJP-WIN
CN-GB EUC-CN EUCCN GB2312 CSGB2312
EUC-TW EUCTW CSEUCTW
EUC-KR EUCKR ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSEUCKR CSKSC56011987
EUC-JISX0213

再インストールは無事終了し, iconv -l で EUC-JP-MS,EUCJP-MS があることも確認できた.

さて,ようやく Samba のインストールだ. ja-samba-3.0.23c,1.tbz を pkg_add する.

「ビギナーズバイブル」を参考に,設定ファイルを書いていく.

まず,システム起動時に Samba が動くよう /etc/rc.conf に samba_enable="YES" を追加.

次に Samba の設定ファイル smb.conf のサンプルをコピーする.

# cp /usr/local/share/examples/ja-samba/smb.conf.default /usr/local/etc/smb.conf

smb.conf を以下のように編集した.

[global]
   workgroup = MYGROUP
   server string = Samba Server
   security = user
   hosts allow = 192.168.107.70
   log file = /usr/local/samba/var/log.%m
   max log size = 50
   dns proxy = no 
   display charset = EUCJP-MS
   unix charset = EUCJP-MS
   dos charset = CP932 
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

Samba 用のユーザ samba を作る.

# adduser samba
Username: samba
Full name: Samba User
Uid (Leave empty for default): 
Login group [samba]: 
Login group is samba. Invite samba into other groups? []: staff
Login class [default]: 
Shell (sh csh tcsh bash nologin) [sh]: nologin
Home directory [/home/samba]: 
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]: 
Username   : samba
Password   : <disabled>
Full Name  : Samba User
Uid        : 1002
Class      : 
Groups     : samba staff
Home       : /home/samba
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (samba) to the user database.
Add another user? (yes/no): no
Goodbye!
# smbpasswd -a samba
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/etc/samba/smbpasswd did not exist. File successfully created.
account_policy_get: tdb_fetch_uint32 failed for field 1 (min password length), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 2 (password history), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 3 (user must logon to change password), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 4 (maximum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 5 (minimum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 6 (lockout duration), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 7 (reset count minutes), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 8 (bad lockout attempt), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 9 (disconnect time), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 10 (refuse machine password change), returning 0
Added user samba.

ためしに Samba を起動してみる.

# /usr/local/etc/rc.d/samba start
# smbstatus

Samba version 3.0.23c
PID     Username      Group         Machine                        
-------------------------------------------------------------------

Service      pid     machine       Connected at
-------------------------------------------------------

No locked files

自作 5号機(Windows98SE)でネットワークコンピュータを開くと Kdo4 がある. ダブルクリックするとパスワードを聞かれるので入力するが入れない. 一度ログオフして,ユーザ samba で再ログイン. 今度は Kdo4 のフォルダを開くことができ, ユーザ samba のホームディレクトリでファイルの読み書きができた.

ユーザ kdo も smbpasswd で Sambaサーバに追加してみた. が,Windows からは入れたり,入れなかったりする. いろいろためしてみると,ユーザ samba でも入れないことがある. これは Windows側の設定の問題かな.

とりあえず,

  1. Windows 起動
  2. ログオフ
  3. samba でログイン

という手順を踏めば Sambaサーバにアクセスできるようだ.

Sambaサーバ,Windows の設定については, もうちょっと調べる必要があるが, とりあえず,今日はここまで.


2007年 12月 28日:XTide

谷津干潟へ鳥を見に行くとき,事前に潮位を調べるため, XTide をインストールした. xtide-2.8.2.tbz を pkg_add.

さっそく xtide を起動してみたが….日本の地点がない! っていうか,アメリカ,イギリスあとドイツくらいしかない. 昔インストールしたときは,もっとたくさんの地点が選べたと思うのだが….

english linux farmer: FC6 Xtide によると,作者にどこからか圧力がありデータをはずすことになったのだそうだ. 古いバージョン 2.6用のデータで日本も表示できるようになるそうなので, 作者のページの About harmonic constants and sub station corrections からリンクをたどって, XTide File Listharmonics.tcd.gz をダウンロード. 解凍して /usr/X11R6/share/xtide/harmonics.tcd と入れ換えた.

$ cd ~kdo
$ fetch http://harmonics.unh.edu/xtide/harmonics.tcd.gz
$ gunzip harmonics.tcd.gz
$ su
# cd /usr/X11R6/share/xtide
# mv harmonics.tcd harmonics.tcd.bak
# cp ~kdo/harmonics.tcd ./
# exit
$ xtide

マップ上に日本があらわれた. Tiba Light, Tiba, Japan(千葉灯標)を選択,表示してみる. 12月 24日の観測値と比較して, ちゃんとあっていることを確認. 古いデータセットだが,探鳥の参考程度になら十分使える.


2007年 12月 11日:GMT, NetCDF

地図作図・データ処理ツール群 GMT(Generic Mapping Tools)をインストールする.

GMT の現在の最新バージョンは 4.2.1 であるが, FreeBSD の FTPサイトに用意されているのは, package も ports もバージョンが 3.4.1 でかなり古い. GMT はバージョン4 から時間軸をあつかえるようになっていて, 時間変化のグラフとかを多く作っているので, どうしてもバージョン4 をインストールする必要がある. ここで ports をちょいちょいと改造できればかっこいいんだろうけど, そういうことはできないので, 本家ページ The GMT Home Page に用意されているインストールスクリプトを使ってインストールする.

まずバイナリのグリッドファイルをあつかうために必要とされる NetCDF をインストールする.package netcdf-3.6.1.tbz を pkg_add.

GMT のインストールスクリプトは ftp://ftp.soest.hawaii.edu/gmt/install_gmt である. これをダウンロードし,/usr/local/ に cp して実行する.

# cp install_gmt /usr/local/
# cd /usr/local
# sh install_gmt
====>>>> Interactive installation of GMT <<<<====
		 
We first need a questions and answer session to
determine how and where GMT is to be installed.
Then, when all parameters have been assembled,
we will run the installation (unless you chose
-n when starting this script).
…

いろいろ聞いてくるが, 基本的にデフォルトで答える(リターンキーを押すだけ). デフォルトと違う入力をするのは以下の 3ヶ所.

◯ 4番目:

==> Enter directory with netcdf lib and include [/usr/local/netcdf-3.6.2]: /usr/local

◯ 6番目:

We offer 8 different ftp sites.  Choose the one nearest
you in order to minimize net traffic and transmission times.
The sites are:
 
1. SOEST, U of Hawaii [GMT Home], Honolulu, Hawaii, USA
2. NOAA, Lab for Satellite Altimetry, Silver Spring, Maryland, USA
3. IRIS, Incorporated Research Institutions for Seismology, Seattle, Washington, USA
4. IAG-USP, Dept of Geophysics, U. of Sao Paulo, BRAZIL
5. Dept of Geosciences, U of Oslo, NORWAY
6. Goodie Domain Service, Vienna U of Techology, AUSTRIA
7. Tokai U, Shimizu, JAPAN
8. Charles Sturt U, Albury, AUSTRALIA
 
==> Enter your choice [1]: 7
 You selected site number 7:
7. Tokai U, Shimizu, JAPAN

◯ 26番目:

PostScript (PS) files may contain commands to set paper size, pick
a specific paper tray, or ask for manual feed.  Encapsulated PS
files (EPS) are not intended for printers (but will print ok) and
can be included in other documents.  Both formats will preview
on most previwers (out-of-date Sun pageview is an exception).

==> Do you prefer PS or EPS as default PostScript output (p/e) [p]: e

NetCDF の lib/* や include/* は /usr/local/lib/, /usr/local/include/ 以下に配置されている. ファイルのダウンロードは国内のサーバからにした. GMTの出力をそのままプリントアウトすることは少なく, TeX などで文書に貼りつけることが多いので, 出力ファイルはデフォルトで EPS にした.

一通り答えると,ファイルのダウンロードがはじまる. ところが,4つ目のファイルをダウンロードしたあたりで, ftp のコネクションが切れてしまった….

しかたがないので,FTPサイトから関係あるファイルを事前にダウンロードしておいて, オフラインでインストールすることにした. インストールに必要なファイルは ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/4/ にそろっている. このディレクトリにある README.GMT を読んで以下の 11個のファイルをダウンロードした.

まとめてダウンロードするスクリプトを書いて走らせて寝る. Air H" で一晩かかった.

前回のインストールでできた /usr/local/ の中途半端なファイル, ディレクトリを rm して,インストールのやりなおし.

# cp GMT_*.tar.bz2 /usr/local/
# cp GSHHS_*.tar.bz2 /usr/local/
# cp install_gmt /usr/local/
# cd /usr/local
# sh install_gmt
====>>>> Interactive installation of GMT <<<<====
		 
We first need a questions and answer session to
determine how and where GMT is to be installed.
Then, when all parameters have been assembled,
we will run the installation (unless you chose
-n when starting this script).
…

いろいろ聞いてくるが,デフォルトと違う入力をするのは以下の 4ヶ所.

◯ 4番目:

==> Enter directory with netcdf lib and include [/usr/local/netcdf-3.6.2]: /usr/local

◯ 5番目:

==> Get any of the GMT version 4.2.1 archives via ftp? (y/n) [y]: n

◯ 6番目:

GMT can use two different algorithms for Delauney triangulation.
 
   Shewchuk [1996]: Modern and very fast, copyrighted.
   Watson [1982]  : Older and slower, public domain.
 
Because of the copyright, GMT uses Watson's routine by default.
However, most will want to use the optional Shewchuk routine.
==> Use optional Shewchuk's triangulation routine (y/n)? [y]: n

◯ 15番目:

PostScript (PS) files may contain commands to set paper size, pick
a specific paper tray, or ask for manual feed.  Encapsulated PS
files (EPS) are not intended for printers (but will print ok) and
can be included in other documents.  Both formats will preview
on most previwers (out-of-date Sun pageview is an exception).

==> Do you prefer PS or EPS as default PostScript output (p/e) [p]: e

ファイルが展開され,コンパイルがはじまる.が,

…
/usr/local/matlab/bin/mex:No such file or directory
*** Error code 1

Stop in /usr/local/GMT4.2.1/src/mex.
*** Error code 1

Stop in /usr/local/GMT4.2.1.
*** Error code 1

Stop in /usr/local/GMT4.2.1.

エラーが出て止まってしまう. 24番目の supplemental programs のインストールについて, a(ll) ではなく y を選択し,mex をはずすように答える.

◯ 24番目:

Several supplemental packages are available:

------------------------------------------------------------------------------
dbase:     Extracting data from NGDC DEM and other grids
gshhs:     Global Self-consistent Hierarchical High-resolution Shoreline extractor
imgsrc:    Extracting grids from global altimeter files (Sandwell/Smith)
meca:      Plotting special symbols in seismology and geodesy
mex:       Matlab interface for reading/writing GMT grdfiles (REQUIRES MATLAB)
mgd77:     Programs for handling MGD77 data files
mgg:       Programs for making, managing, and plotting .gmt files
misc:      Digitize or stitch line segments, read netCDF 1-D tables, and more
segyprogs: Plot SEGY seismic data files
spotter:   Plate tectonic backtracking and hotspotting
x2sys:     New (Generic) Track intersection (crossover) tools
x_system:  Old (MGG-specific) Track intersection (crossover) tools
xgrid:     An X11-based graphical editor for netCDF-based .grd files
------------------------------------------------------------------------------

==> Install any of the supplemental programs? (y/n/a(ll))? [a]: y

◯ 29番目:

==> Install the mex supplemental package? (y/n)? [y]: n

今度は xgrid でエラー出た.mex 同様 supplemental packages の選択からはずす.

◯ 37番目:

==> Install the xgrid supplemental package? (y/n)? [y]: n

今度は無事にインストール終了.以下のようなメッセージが出る.

-----------------------------------------------------------------------
For csh or tcsh users:
setenv NETCDFHOME /usr/local
set path=(/usr/local/GMT4.2.1/bin $path)

For sh or bash users:
export NETCDFHOME=/usr/local
export PATH=/usr/local/GMT4.2.1/bin:$PATH

For all users:
Add /usr/local/GMT4.2.1/man to MANPATH
Add /usr/local/GMT4.2.1/www/gmt/gmt_services.html as browser bookmark
-----------------------------------------------------------------------

指示にしたがい,~/.bash_profile に以下の記述を追加.

PATH=$PATH:/usr/local/GMT4.2.1/bin
export PATH

NETCDFHOME=/usr/local; export NETCDFHOME

.bash_profile を読み込みなおして,pscoastコマンドを実行してみる.

$ . ~/.bash_profile
$ pscoast
pscoast 4.2.1 - Plot continents, shorelines, rivers, and borders on maps

usage: pscoast -B<params> -J<params>
	[-A<min_area>[/<min_level>/<max_level>]] [-R<west>/<east>/<south>/<north>[/<zmin/zmax>][r]] [-C[<fill>]]
…

pscaost のオプションの説明が出力される. パスが通っていて実行できることが確認できた.

GMT の man を見る方法だが, 環境変数 MANPATH は空で,/usr/local/GMT4.2.1/man を設定すると, GMT以外の man が見れなくなってしまう. そこで /etc/manpath.config に以下の記述を追加することにした.

OPTIONAL_MANPATH     /usr/local/GMT4.2.1/man

manpathコマンドで,パスが通っていることを確認. man pscoast でマニュアルがちゃんと表示されるのも確認した.

/usr/local/ のソースファイル GMT_*.tar.bz2,GSHHS_*.tar.bz2 や, 設定ファイル GMTparam.txt を掃除して終了.


2007年 12月 8日:sudo

sudo をインストールした. sudo-1.6.8.12_1.tbz を pkg_add.

ふだんログインするユーザ kdo が属しているグループ wheel について, すべての操作が可能なように設定する.

# visudo
〜内容を以下のように編集して保存.
root    ALL=(ALL) ALL
%wheel  ALL=(ALL) ALL
#

これで,kdo で sudo できるようになった.


2007年 11月 26日:PostScriptファイル関連:gv,TeX, psutils

gv

PostScriptファイルの閲覧用に gv-3.6.1.tbz をインストールした.

このままでは日本語を表示できないので, 日本語フォントセットもインストールする.

ja-ghostscript-gnu-jpn-7.07_3.tbz をインストール. ほかに 7つの package (adobe-cmaps, blas, fftw, gd, ghostscript-gnu-commfont, grass-i18n+ipafont, lapack) がインストールされた. 要求される IPAフォントのバージョンがちがうと警告が出るが, インストールは無事終了. gv で IPAフォントを使った表示ができるようになった.

ps2pdf でも IPAフォントを使った日本語の PDFファイルが作れるようになった.

TeX

きれいな PostScriptファイルを作るため TeX をインストールした. meta package である ja-teTeX-1.5.tbz をインストール. 関連する package 15個が一気にインストールされる. フォントパスを追加しろとのメッセージが出るので, その通りに /etc/X11/xorg.conf を編集する.

Section "Files"
     :
     :
    FontPath    "/usr/local/share/fonts/amspsfont/type1"
    FontPath    "/usr/local/share/fonts/cmpsfont/type1"
     :

当座は xset でフォントを追加しておく.

$ xset fp+ /usr/local/share/fonts/amspsfont/type1
$ xset fp rehash
$ xset fp+ /uar/local/share/fonts/cmpsfont/type1
$ xset fp rehash

試しに既存の texファイルをコンパイルしようとしたところ, jsbookクラスがないといわれた. そこで ja-platex-jsclasses-1.0.20060212.tbz もインストール. 無事に texファイルのコンパイルができるようになった.

psutils

PostScriptファイルをあれこれ加工するコマンド群, psutils もインストールした. psutils-a4-1.17_2.tbz を pkg_add(私の場合は ./pkgadd.sh) すればよい.


2007年 11月 5日:tgif のフォントのつづき:sazanami, xorg.conf, ipa の fonts.dir

tgif で表示される日本語フォント -jis-fixed- はゴシック体ではなかった. フォントサイズが小さいときは線の太さが一様だが, サイズを大きくすると線の太さに変化がある.明朝体なのかな….

tgif の日本語フォント -jis-fixed-
tgif の日本語フォント -jis-fixed-

サイズによって字体が違うのはちょっと困るし, Properties -> Font で Ryumin を選んでも GothicBBB を選んでも同じフォントというのも気に入らない. そこで,新しいフォントをインストールすることにした.

一度アンインストールした sazanamiフォントをもう一度入れてみることにする. ja-sazanami-ttf-20040629_1.tbz をインストールし,X を再起動. xfontsel でフォントを確認すると,sazanami がない….おっかしいなあ. とりあえず,/usr/X11R6/lib/X11/app-defaults/Tgif を編集して, -jis-fixed- を -sazanami-mincho-,sazanami-gothic- に書き換えてみた. すると,日本語フォントの選択ができなくなってしまった. 「The 'Ryumin-Light-EUC-H-14' font is not available.」 のようなメッセージが出て先にすすまない.

同じく FreeBSD 6.2 をインストールしてある Let's note CF-B5ER でためしたところ, インストールした sazanamiフォントは xfontsel で出てくるし, Tgif の設定もうまくいった.何が違うのだろう.

設定ファイルをいろいろ比較してみたところ, 違っていたのは /etc/X11/xorg.conf だった. 自作 4号機では,なぜか Section "Module" で Load "freetype" をコメントアウトしてあったのだ. ためしにコメントアウトをはずして X を再起動すると, xfontsel で sazanami が出てくるようになり, tgif で sazanamiフォントの明朝体,ゴシック体が使えるようになった.

tgif の日本語フォント -sazanami-mincho, gothic-
tgif の日本語フォント -sazanami-mincho, gothic-

一応,使えるようにはなったが,なんかかっこう悪い. できれば IPAフォントを使いたい.

IPAフォントは /usr/X11R6/lib/X11/fonts/TrueType/ にリンクがあるが, fonts.dir には記述がない.この辺に問題がありそうである. IPAフォントの設定が書いてある fonts.dir は, なぜか /usr/X11R6/lib/X11/fonts/ にあった. この内容を /usr/X11R6/lib/X11/fonts/TrueType/fonts.dir に加えてみよう.

# cd /usr/X11R6/lib/X11/fonts
# tail +2 fonts.dir >> TrueType/fonts.dir
# cd TrueType
# wc -l fonts.dir
     390 fonts.dir
# emacs -nw fonts.dir
  〜 先頭の数値を 389 に書き換える.

としてから,X を再起動. xfontsel でフォントを確かめると,ちゃんと ipa が出てくるようになった.

/usr/X11R6/lib/X11/app-defaults/Tgif の -sazanami-mincho-,-sazanami-gothic- を, -ipa-ipapmincho-,-ipa-ipapgothic- に書き換えた. 結果は以下のようになった.

tgif の日本語フォント -ipa-ipapmincho, ipapgothic-
tgif の日本語フォント -ipa-ipapmincho, ipapgothic-

う〜ん.どっちもどっちのような気もする. 最終的な /usr/X11R6/lib/X11/app-defaults/Tgif を別ファイルで載せておく (Tgif.ipa).


2007年 11月 3日:グラフィックス gimp, xpaint, tgif

グラフィックスのツール 3つをインストールした.

まずは gimp-2.2.13_2,1.tbz をインストール. 同時に 12個の packages がインストールされる.

次に xpaint-2.7.8.1.tbz をインストール.

最後に ja-tgif-4.1.44.tbz をインストール. ja-kaname12 などの 3つの packages がインストールされた.

それぞれのツールで,テキストの日本語入力をためしてみた. GIMP では普通に入力できたが,xpaint,tgif はだめだった. tgif では日本語の入力を結構使うので,何とかしなくては….

まず,/usr/X11R6/lib/X11/app-defaults/ に Tgif がないので, /usr/X11R6/lib/X11/ja_JP.eucJP/app-defaults/Tgif をコピーする (環境変数 LANG=Cで使用したいので). これで Tgif を起動すると Properties -> Font で, Ryumin,Ryumin-V,GothicBBB,GothicBBB-V が選択できるようになる. でも実際にテキスト入力モードで Ctrl-Space とすると, "There is no Selection Owner of _JAPANESE_CONVERSION" というメッセージダイアログがでて日本語の入力ができない. そこで,さっきの app-defaults/Tgif の中身を見ると, 最初の行で,2バイトフォント入力が kinput2 に指定されている. これを xim を使うように書き換える.

Tgif.DoubleByteInputMethod: xim

これで,テキスト入力モード時, Shift-Space で日本語の入力が可能になった.

フォントが,明朝を選んでもゴシックを選んでも, 同じゴシックだった. app-defaults/Tgif でフォントの設定をしようとしたのだが, xfontsel でインストールされているフォントを調べてみたら, 日本語フォントに mincho がなかった.


2007年 4月 18日:メール Mew

メールを使えるようにした.

まず常用マシン 3号機のメールフォルダを rsync でコピーする.

$ rsync -e ssh -a kdo3:/home/kdo/Mail ~/

Mew の package mew-emacs21-5.1.tbz をインストールした.

常用マシン 3号機の ~/.emacs(元は Vine Linux 2.6 のもの)を参考に ~/.emacs に以下の内容を追加した.

;
;; 2007年 4月 18日
;
; Mew の設定

(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)

;; POP サーバの設定

(setq mew-name "フルネーム")
(setq mew-user "ユーザID")
(setq mew-mail-domain "ドメイン")
(setq mew-pop-user "ユーザID")
(setq mew-pop-server "POPサーバ")
(setq mew-icon-directory "/home/kdo/Mail")

;; POP の認証方式の設定
(setq mew-pop-auth 'apop)

;; POP サーバからメッセージを取得後、
;; POP サーバにあるメッセージを削除するなら t
(setq mew-pop-delete t)

;; SMTP サーバの設定
(setq mew-smtp-server "SMTPサーバ")

;; 起動時にメールを取りにいかないようにする
(setq mew-auto-get nil)

Mew を使ってメールの送受信ができることを確認した.


2007年 3月 18日:音楽CD のリッピングと mp3エンコード:Grip

リッピングする曲に,タイトルが 30バイト以上のものがあったので, ID3v2タグを付けられる Grip をインストールした.

をインストール.同時に 46もの package がインストールされる.

Grip での CD のリッピングでは以下のサイトを参考にした.

CDドライブに CD を入れて,grip を起動. 自動でアルバムタイトル,曲タイトルが表示された. Config で以下の項目を変更した.

Tracks に戻り,曲タイトル右の Rip のチェックを入れる.

Rip の Rip+Encode をクリックするとリッピングとエンコーディングがはじまる.

できあがったファイルを各種プレイヤーで再生して曲情報の表示を確かめてみると,

mpg123,mplayer で ID3v2タグの情報が表示されない. それでは困るので ID3v1タグを追加するように Config の ID3 を

に変更してエンコードしなおした. ID3v1 と ID3v2 の 2つのタグをつけた場合, プレイヤーはどのように判断するのだろうか.

期待したとおりの結果になった.

ID3v1タグを使うのは FreeBSD上のソフトだけなので, ID3v1タグの日本語コードは EUC にしてみた.

Config -> ID3 の ID3v1 Charactoer set encodeing を EUC_JP にして Rip+Encode.

結果は,mpg123 の出力は文字化けし,mplayer では文字化けはしないものの, 曲情報が 20バイトくらいで切れてしまうファイルがあった. 今まで通り ID3v1タグも SHIFT_JIS でつけて, mplayer の曲情報出力は kcc にパイプで流して表示するようにしよう.

あれ,曲情報でコメントを入力する欄がない.これはないと困るなあ.


2007年 3月 17日:ウェブブラウザ:w3m,firefox/sazanamiフォント,IPAフォント

まずはテキストブラウザの w3m をインストール.

の package を pkg_add でインストールした. 同時に,

もインストールされた.

ちゃんと HTMLファイルが表示される. 画像ファイルも表示された.

次に Firefox をインストール

の package を pkg_add でインストールした. 同時に,

がインストールされた.

コマンドは firefox-devel だった.開発中のバージョンだったか. 一応使えるようだが,安定版のバージョン 1.5 もインストールしておく.

の package を pkg_add でインストール. こちらはコマンド firefox で起動する.

デフォルトで日本語の HTMLファイルを表示すると, 英数字が全角で読みにくいし,かっこうが悪い. いろいろ試してみて, Edit -> Preferences -> Content -> Fonts & Colors -> Advanced で, Serif,Sans-serif,Monospace を Luxi Sans に変更すると, 漢字が日本語で英数字が半角になることがわかった.

しかし,いくつか HTMLファイルを開いていて気がついたのだが, H1タグ内などの日本語フォントの大きさが変わらない. どうやらフォントサイズが固定されているようだ (ビットマップフォントか?).

そこで,オープンソースの TrueTypeフォントである sazanamiフォントをインストールした.

をインストール.

を参考にして Firefox のフォント設定を,

に変えた.日本語フォントのサイズが変化するようになった.

が,今度はボールド体の文字がボールドで表示できていないことに気づいた.

を見て,sazanamiフォントをやめて IPAフォントを入れることにした. IPA フォントは package がないので,ソースファイル

をダウンロードして,/usr/ports/distfiles/ に置き,

# cd /usr/ports/japanese/ipa-ttfonts
# make install
# make package
# mv ja-ipa-ttfonts-1.0.20060520,1.tbz ~kdo/packages/
# make clean

でインストール完了.package も作った. Firefox のフォント設定を,

と変えた.が,あいかわらずボールド体の表示ができていない. まあ,sazanamiフォントよりきれいだからこっちを使うことにするけれど, ちょっと期待はずれだった.

Firefox でボールドが表示されないことについて Google で調べたが, いろいろな解決法があり,どれがいいのかわからない. あと,タイトルの日本語が正しく表示されないという問題もある.


2007年 3月 17日:ディレクトリの同期:lftp,rsync

ディレクトリの同期をとる mirrorコマンドが使える lftp をインストールした. package lftp-3.5.4_1.tbz を pkg_add でインストール. 同時に readline-5.1.tbz もインストールされた.

次に同期専門のツール rsync をインストール. これは CD-ROM や HDD の内容のコピーに使う. package rsync-2.6.8_2.tbz をインストールした.


2007年 3月 17日:日本語関連:uim

Emacs 以外の X のソフトから日本語入力を行なうために, IM管理ソフト uim をインストールした.

package uim-1.2.1_1.tbz をインストール.

uim - インストール を参考にして,~/.xinitrc を編集.

LC_CTYPE=C

export XMODIFIERS=@im=uim
export GTK_IM_MODULE=uim
exec uim-xim &

exec wmaker

X Window System を立ち上げなおしたが, kterm で Shift-Space としても日本語入力にならない.

FreeBSD Expert 2005 の付録の FreeBSD 5.3 から ~/.uim をコピーしてみたがだめ. LANG,LC_CTYPE,LC_ALL などを ja_JP.eucJP にしてもやっぱりだめだった.

何の気なしに uim-sh を起動してモジュールを確かめてみたら,

$ uim-sh
ERROR: unbound variable (errobj ja-direct-rule)

uim> installed-im-module-list
("pyload" "skk" "tcode" "tutcode" "byeoru" "hangul" "viqr" "ipa-x-sampa" "latin")

というふうに anthy のモジュールがインストールされていない. そこで lib-uim-anthy.a などが入っている package ja-uim-anthy-1.2.1_1.tbz をインストールした.すると

$ uim-sh
ERROR: unbound variable (errobj ja-direct-rule)

uim> installed-im-module-list
("anthy" "pyload" "skk" "tcode" "tutcode" "byeoru" "hangul" "viqr" "ipa-x-sampa" "latin")

となり anthy のモジュールがインストールされたことが確認できた. でも,やっぱり日本語入力ができない. 何がまずいんだろうなあ.

kterm で uim-xim が使えないという記事をみつけた.

試しに xterm で Shift-Space と打ってみたら, ちゃんと日本語が入力できた. というか,xterm で日本語の表示ができるとは知らなかった.

いろいろ試してみたが,kterm から xterm を起動したときは, 日本語の表示が可能だが,WindowMaker のメニューから xterm を起動したときは, 日本語表示は文字化けし,日本語入力もできなかった. ~/.xinitrc の LC_CTYPE=C をコメントアウトして X Window System を立ち上げなおすと, WindowMaker のメニューから xterm を起動したときでも,日本語の表示が可能となった. xterm を起動する元の環境変数 LC_CTYPE が ja_JP.eucJP であることが必要のようだ. 仕組みがよくわからない.

脱線した. FreeBSD Expert 2005 の付録の FreeBSD 5.3 では, kterm で日本語入力ができている.何が違うのだろう. FreeBSD Expert 2005 の ~/.Xdefaults に kterm の XIM関連の記述をみつけた. まねをして 4号機の ~/.Xdefaults に以下の記述を追加してみた.

kterm.vt100.openIm: true

X Window System を起動しなおすと,kterm でも日本語の入力ができるようになった.

~/.uim をシンプルなものに作りなおした.

(define default-im-name 'anthy)

IM に Anthy を指定する 1行だけあればいいようだ. あとはデフォルトの設定で十分である(いまのところ).


2007年 3月 14日:電子辞書:eb,eblook,lookup

EPWING の電子辞書を持っているので, 辞書ブラウザをインストールしてみた.

の package を順にインストールする.

~/dict/ 以下に gakken/,genius/,koujien/ のディレクトリをつくり, 辞書CD の内容を $ cp -R /cdrom/* ~/dict/…/ でコピーした.

第2部 UNIXで使えるブラウザ を参考にして ~/.emacs に以下の記述を追加する.

; lookup の設定

; オートロードの設定
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

; キーバインドの設定
(define-key ctl-x-map "l" 'lookup)
(define-key ctl-x-map "y" 'lookup-region)
(define-key ctl-x-map "\C-y" 'lookup-pattern)

; 検索エージェントの設定(eblook を使う)
(setq lookup-search-agents
      '((ndeb "~/dict/koujien")
        (ndeb "~/dict/gakken")
        (ndeb "~/dict/genius")
        ))

Emacs 上で C-x C-y と打つと Lookup が起動して, 単語の検索ができるようになった. 外字はちゃんと表示されるし,画像もあれば表示される.


2007年 3月 14日:日本語関連:kcc

手持ちの MP3プレイヤーの都合で mp3ファイルの ID3タグは Shift-JIS でつけている. そのため,FreeBSD上の mplayer で再生したとき出力が文字化けしてしまう. これを正しく表示するため,mplayer の出力をパイプで nkf に流すのだが, 再生がはじまってから表示が開始されるまで 5〜10秒かかる. できれば,再生と同時にタイトルなどの曲情報を見たいので, kcc という別の漢字コードコンバータをインストールすることにした.

の package をインストールする.

$ mplayer test.mp3 | kcc -e

で再生と同時に曲情報が日本語で表示された.

mp3ファイルの日本語曲情報は, mplayer から出力された時点ですでに文字化けしていることがある. 3年前のバージョンの mplayer 1.0pre5 ではこういう不具合はないのだが, どうしたことだろうか.


2007年 3月 7日:日本語関連:jman

あると便利なので,日本語のマニュアルをインストールした.

をインストールした. ja-man-1.1j_5.tbz のインストールのときに rm のエラーが出たが, pkg_info でみると ja-man はちゃんとインストールされているようだ. /var/tmp/ にゴミ(?)が残るので # rm -r で消しておく.

ja-man-doc のインストール時のメッセージによると, 環境変数 LC_CTYPE を ja_JP.eucJP にしなくてはいけない. jman 以外では英語の表示にしたいので ~/.bashrc に

LANG=C
LC_CTYPE=ja_JP.eucJP
export LANG LC_CTYPE

の記述を追加した.

すると WindowMaker のダイアログなどの表示が全角英数字になってしまった. メッセージがダイアログボックスにおさまらなかったりして, かなりかっこうがわるい. そこで,~/.xinitrc を以下のように書きなおした.

LC_CTYPE=C
exec wmaker

こうすることにより,WindowMaker は LC_CTYPE=C で立ち上がり, kterm を開いたときは ~/.bashrc が読み込まれて, LC_CTYPE が ja_JP.eucJP にセットされる. WindowMaker のダイアログなどの表示が半角英数字になり, jman の表示も正常に行われることを確認した.


2007年 3月 7日:日本語関連:Emacs の漢字コード

Emacs で作られる日本語ファイルの漢字コードが JIS になっていた. jless などで表示するぶんには不都合はないが, grep で検索するときなど具合が悪い. デフォルトで EUC になるように, ~/.emacs に以下の記述を加える

;漢字コードの設定
(set-default-coding-systems 'euc-jp)
(set-buffer-file-coding-system 'euc-jp-unix)
(set-terminal-coding-system 'euc-jp)
(set-keyboard-coding-system 'euc-jp)

これは Vine Linux 3.1 の設定を参考にした.

日本語のファイル nihongo.txt を新しく作って漢字コードを調べてみる.

$ nkf --guess nihongo.txt
EUC-JP

ちゃんと EUC になっていることを確認できた.


2007年 3月 5日:日本語関連:kterm,jless,lv,nkf/bashの設定

日本語関連の以下の package をインストールした.

kterm はインストールしたままでは, 日本語のファイルを正常に表示できなかった. FreeBSD Expert 2005 の付録に付いてきた FreeBSD 5.3 の設定を参考にして, 以下のように記述した ~/.Xdefaults を作った.

kterm.vt100.kanjiMode: euc
kterm.vt100.scrollBar: true

$ xrdb -merge ~/.Xdefaults とすると, 新しく起動した kterm にスクロールバーが付き, lvコマンドで日本語ファイルの表示ができるようになった.

jlessコマンドはインストールしたままでは日本語ファイルが正常に表示できなかった. 環境変数 JLESSCHARSET をセットする必要がある.

$ export JLESSCHARSET=japanese-euc

これで日本語ファイルが表示できるようになる. japanese だけだと EUCファイルの表示が化けたので, japanese-euc と記述する必要があるようだ. この記述は ~/.bashrc に記述しておく.

この機会に ~/.bashrc と ~/.bash_profile を作ることにした.

~/.bashrc は

alias ls='ls -F'

PS1="[\u@\h \W]\\$ "
export PS1

JLESSCHARSET=japanese-euc
export JLESSCHARSET

~/.bash_profile は

if [ -f ~/.bashrc ]
then
    . ~/.bashrc
fi

PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=$PATH:/usr/games:/usr/local/sbin:/usr/local/bin
PATH=$PATH:/usr/X11R6/bin
PATH=$PATH:$HOME/bin
export PATH

BLOCKSIZE=K;  export BLOCKSIZE
EDITOR=vi;    export EDITOR
PAGER=jless;  export PAGER

これらは ~/.profile と Vine 2.6 の ~/.bashrc,~/.bash_profile を参考に, 最小限の記述をしている.


2007年 2月 26日:AirH" の ppp とネットワーク設定

を参考にして,USBタイプの AirH", Fujitsu AH-F401U でのダイアルアップ接続を試みた.

AH-F401U のバージョンだが,これは 1.06 にアップデートしてある.

/sys/dev/usb/usbdevs に,すでに AH_F401U の記述があるので, カーネルの再構築などは行なわない.

AH-F401U を USBポートに挿してみる. dmesg の結果は

ugen0: Fujitsu Ltd. AH-F401U, rev 1.10/1.00, addr 2

となった.これではモデムとして使えない. 一度はずして,

# kldload ucom

としてカーネルモジュール ucom.ko を 読みこんでから.もう一度トライ.やっぱりだめ. umodem.ko を読みこませてみる.

# kldload umodem

今度はうまくいった. dmesg の出力は,

ucom0: Fujitsu Ltd. AH-F401U, rev 1.10/1.00, addr 2, iclass 2/2
ucom0: data interface 1, has CM over data, has no break
ucom0: status change notification available

となり,ucom0 と認識されて使えるようになった. /boot/loader.conf に umodem_load="YES" を追加し, 再起動してみる.kldstat でカーネルモジュールを確認すると, umodem.ko と一緒に ucom.ko も読み込まれていた. dmesg で AH-F401U が,ちゃんと ucom0 として認識していることも確認.

PPP接続は ユーザPPP で行なうことにする.

/etc/ppp/ppp.conf を編集(3号機からコピー).

default:
 ident user-ppp VERSION (built COMPILATIONDATE)
 set log Phase Chat LCP IPCP CCP tun command
 set speed 115200
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
           \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 set timeout 300
 add default HISADDR
 enable dns
 allow users kdo

airh:
 set device /dev/ucom0
 set phone "電話番号"
 set authname ログインID
 set authkey パスワード

@nifty の DNS を使うように /etc/resolv.conf も編集.

domain localhost
nameserver DNSプライマリサーバの IPアドレス
nameserver DNSセカンダリサーバの IPアドレス

ふだんログインしているユーザ kdo から ppp接続できるように, /etc/group を編集して,network グループに kdo を追加した. システムを再起動.ppp コマンドで @nifty に接続してみる.

$ ppp -auto airh
Working in auto mode
Using interface: tun0

と出るが,接続できていない. デバイスを確かめると /dev/ucom0 ができていないようだ.

AH-F401U を挿したときにできるデバイスは /dev/ucom0 ではなく, /dev/cuaU0 だった. /etc/ppp/ppp.conf の /dev/ucom0 を /dev/cuaU0 に書き換えてみる. 今度は,うまくいった. 試しに FreeBSD の ftpサイトに接続してみたが,これもうまくいった.

うまくいったときの /etc/ppp/ppp.conf を以下に載せておく.

default:
 ident user-ppp VERSION (built COMPILATIONDATE)
 set log Phase Chat LCP IPCP CCP tun command
 set speed 115200
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
           \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 set timeout 300
 add default HISADDR
 enable dns
 allow users kdo

airh:
 set device /dev/cuaU0
 set phone "電話番号"
 set authname ログインID
 set authkey パスワード

2007年 2月 26日:ローカルなネットワーク設定

ローカルなネットワークの設定を行なった.

まず /etc/hosts の編集.

::1			localhost.localhost localhost
127.0.0.1		localhost.localhost localhost
192.168.107.75		kdo4.localhost kdo4
192.168.107.75		kdo4.localhost.
192.168.107.70		kdo5
192.168.107.32		kdo2
192.168.107.80		kdo3

これで IPアドレス($ ftp 192.168.107.80とか) を打ち込まなくて済むようになった.

次に sshd と inetd を動かす.

root でログインし,sysinstall コマンドで sysinstall Main Menu に入り, Configure を選択し,さらに Networking を選択. Network Services Menu に入る. inetd にチェックをつけると /etc/inetd.conf の編集に入るので, コメントアウトされている ftp の行頭の # を取り去る.

ftp	stream	tcp	nowait	root	/usr/libexec/ftpd	ftpd -l

保存終了すると,Networkk Services Menu にもどるので, sshd にもチェックを入れる. 何度か OK,Cancel して sysinstall を終了する.

ftp と ssh をローカルだけから受け付けるように, /etc/hosts.allow を編集する.

sshd : 192.168.107. : allow
ftpd : 192.168.107. : allow
ALL : ALL : deny

設定が終わったら reboot する.

3号機から ssh と ftp でログインできることを確認した.


2007年 2月 25日:MPlayer その2

MPlayer の wma ファイルの再生に失敗したときのメッセージをよく読むと,

- MPlayer crashed by bad usage of CPU/FPU/RAM

とある.CPU が VIA C3 だからかもしれない. ports でソースからコンパイルすれば解決するかもしれないと思い, 試してみることにした.

からソースをとってきて /usr/ports/distfiles/ に置く.

MPlayer をインストールする前に ports の最新のもの(2月 20日)を

からダウンロードして,昨日の手順で置き換えておいた.

pkg_delete で mplayer をアンインストールし, ports からインストールを試みる.

# pkg_delete mplayer-0.99.8_5
# cd /usr/ports/multimedia/mplayer
# make install
  〜 Option をいろいろ聞かれるが,
     とりあえずデフォルトのままにしておく.
  〜 asmrules_fix_20061231.diff がないと言われ,
     make がストップ.

をダウンロードして,/usr/ports/distfiles/ に置き, 再度インストールを試す.

# cd /usr/ports/multimedia/mplayer
# make install
  〜 libdts.a が足りないと言われ,
     make がストップ

libdts-0.0.2_2.tbz をダウンロードしてインストール. 再々度 make install するが,今度は intltool が足りない. これも intltool-0.35.0.tbz をインストール. これで依存するものはすべてそろった.

# cd /usr/ports/multimedia/mplayer
# make install
  〜 win32-codecs を make しようとするが,
     古いバージョンが入っているので,
     deinstall するように言われて,
     make がとまる.
# pkg_delete win32-codecs-3.1.0.p8,1
# make install
# make package
# mv mplayer-0.99.10_3.tbz ~kdo/packages/
# make clean
# cd ../win32-codecs
# make package
# mv win32-codecs-3.1.0.r1,1.tbz ~kdo/packages/
# make clearn

コンパイルには 30分以上かかった.

ファイル再生のテストをする.

wmaファイルの再生に成功した.よかったよかった.

mplayer をリコンパイルしたのがよかったのか, win32-codecs が新しくなったがよかったのかは,よくわからないが, とりあえず使えるようになった.これで安心して乗り換えられる.


2007年 2月 24日:MPlayer

先にインストールしたり,設定したりすることがあるだろうとは思うが, 動画の再生を早くためしてみたくて MPlayer をインストールした.

MPlayer のインストールに必要な package のうち, lame と win32-codecs の package が用意されていない. これらは ports からインストールしておく必要がある.

まずは lame のインストール.

lame のインストールに必要な libtool がまだインストールされていないので, 先に package からインストールしておく.

FreeBSD Ports」 からリンクをたどって,ソースファイルを

からダウンロードして /usr/ports/distfiles/ に置く. ports からインストール. あとで常用マシンの 3号機にインストールするときのために, make package で lame の package lame-3.97_1.tbz を作っておく.

# cd /usr/ports/audio/lame
# make install
# make package
# mv lame-3.97_1.tbz ~kdo/packages/
# make clean

次に win32-codecs をインストールする.

から必要なファイル

をダウンロードし,/usr/ports/distfiles/ に置き, ports からインストールする.

# cd /usr/ports/multimedia/win32-codecs
# make install
  〜 quicktime,realplayer をインストールするか
     聞かれるがデフォルトの realplayer のみの
     インストールとする.
  〜 ソースファイルがないとエラーが出て止まる.

ports の内容が古いようだ. 昨年末にダウンロードしていた ports.tar.gz を展開して, 再インストールを試みる.

# mv /usr/ports/distfiles ~/
# rm -r /usr/ports
# cd /usr
# tar zxf ~kdo/ports.tar.gz
# mv ~/distfiles /usr/ports/
# cd /usr/ports/multimedia/win32-codecs
# make install
  〜 ソースフィルがないと言われる.
  〜 /usr/ports/distfiles/win32/ をさがしているようだ.

上記の 6つのファイルを /usr/ports/distfiles/win32/ 以下にうつして, 再再度インストールを試みる.

# cd /usr/ports/multimedia/win32-codecs
# make install
# make package
# mv win32-codecs-3.1.0.p8,1.tbz ~kdo/packages/
# make clean

最後に MPlayer の package をインストールする.

# cd ~kdo/packages
# ./pkgadd.sh mplayer-0.99.8_5.tbz
# tail -15 pkglog
> libtool-1.5.22_2    Generic shared library support script

mplayer-0.99.8_5.tbz
> atk-1.12.3          A GNOME accessibility toolkit (ATK)
> cairo-1.2.4         Vector graphics library with cross-device output support
> glib-2.12.4         Some useful routines of C programming (current stable versi
> gtk-2.10.6_2        Gimp Toolkit for X11 GUI (current stable version)
> hicolor-icon-theme-0.9_2 A high-color icon theme shell from the FreeDesktop project
> libogg-1.1.3,3      Ogg bitstream library
> libvorbis-1.1.2,3   Audio compression codec library
> mplayer-0.99.8_5    High performance media player/encoder supporting many forma
> mplayer-skins-1.1.2_5 Skins for MPlayer's Graphical User Interface (GUI)
> pango-1.14.7        An open-source framework for the layout and rendering of i1
> shared-mime-info-0.19 A MIME type database from the FreeDesktop project
> xvid-1.1.0,1        An opensource MPEG-4 codec, based on OpenDivx

インストールには成功した.ファイルの再生はどうか.

mpeg2ファイルはマシンの能力上,再生できないのはしかたないが, wmaファイルの再生に失敗するのは困る. しかたがないので ports から作りなおすことにする.

が,とりあえず,今日はここまで.


2007年 2月 24日:日本語の入力:Anthy,.emacs

Anthy をインストールした.

# cd ~kdo/packages
# ./pkgadd.sh ja-anthy-7900.tbz

Emacs から Anthy を使うように 「Anthy wiki - Emacsから」 を参考に(というかそのまま書き写して).emacs をつくった.

; 日本語をデフォルトにする.
(set-language-environment "Japanese")
; anthy.el をロードできるようにする(必要に応じて).
(push "/usr/local/share/emacs/site-lisp/anthy/" load-path)
; anthy.el をロードする.
(load-library "anthy")
; japanese-anthy をデフォルトの input-method にする.
(setq default-input-method "japanese-anthy")
; ひらがなの map を変更する(半角の"."","を全角の",""."に割り当てる).
(anthy-load-hiragana-map anthy-alt-char-map)
; かな漢字変換入力モードで Space を押したとき,半角空白が挿入されるようにする.
(setq anthy-wide-space " ")
; ひらがなの map を変更する(数字を半角数字に割り当てる).
(anthy-change-hiragana-map "0" "0")
(anthy-change-hiragana-map "1" "1")
(anthy-change-hiragana-map "2" "2")
(anthy-change-hiragana-map "3" "3")
(anthy-change-hiragana-map "4" "4")
(anthy-change-hiragana-map "5" "5")
(anthy-change-hiragana-map "6" "6")
(anthy-change-hiragana-map "7" "7")
(anthy-change-hiragana-map "8" "8")
(anthy-change-hiragana-map "9" "9")

これで Emacs で日本語の入力ができるようになった. 全角の数字を入力する習慣がないので, anthy-change-hiragana-map で数字を半角数字に割り当てている. なお,日本語のコメント行は,日本語入力が可能になってから追加したものである.


2007年 2月 24日:package インストールのログ/ImageMagick

pkg_add で package をインストールしたとき, どんな package が新しくインストールされたのか, 記録を録るスクリプト ~kdo/packages/pkgadd.sh を書いた.

#!/bin/sh

PKGFILE=$1

LOG=~kdo/packages/pkg_log

OLDLIST=/root/tmp.$$.old
NEWLIST=/root/tmp.$$.new

pkg_info > ${OLDLIST}

pkg_add ${PKGFILE}

pkg_info > ${NEWLIST}

echo >> ${LOG}
echo ${PKGFILE} >> ${LOG}
diff ${OLDLIST} ${NEWLIST} | grep "^>" >> ${LOG}

rm -f ${OLDLIST} ${NEWLIST}

pkg_add で package をインストールする前後で, pkg_info の出力を保存しておき,diff で比較した結果をログに追加している.

ためしに依存 package の多そうな ImageMagick をインストールしてみる.

# cd ~kdo/packages
# ./pkgadd.sh ImageMagick-6.2.9.8.tbz
# cat pkglog

ImageMagick-6.2.9.8.tbz
> ImageMagick-6.2.9.8 Image processing tools
> ghostscript-gnu-7.07_15 GNU Postscript interpreter
> gsfonts-8.11_2      Fonts used by GNU Ghostscript (or X)
> jasper-1.701.0_1    An implementation of the codec specified in the JPEG-2000 s
> jbigkit-1.6         Lossless compression for bi-level images such as scanned pa
> lcms-1.15_1,1       Light Color Management System -- a color management library
> libfpx-1.2.0.12     Library routines for working with Flashpix images
> libltdl-1.5.22      System independent dlopen wrapper
> libxml2-2.6.26      XML parser library for GNOME
> mpeg2codec-1.2_1    An MPEG-2 Encoder and Decoder

うまく動いているようだ.

ImageMagick はよく使う convert,display,import のコマンドが動くことをチェックした.


2007年 2月 23日:依存関係にある package のインストール/Emacs

FreeBSD の package のインストールには pkg_addコマンドを使うのだが, マニュアルには, 依存関係にある package を見つけて自動的にインストールするとある. そこで,インストールする package の依存関係を Ports の解説ページ (FreeBSD Ports) で調べて,関係のある package をダウンロードして, 一ヶ所(~kdo/packages/)にまとめて置いた. インストールCD 2枚に収録されている package も一緒にした.

ためしに Emacs をインストールしてみる.

$ su
# cd ~
# pkg_info > pkg_list
# cd ~kdo/packages
# pkg_add emacs-21.3_9.tbz
  ...
  ...
# cd ~
# pkg_info > pkg_list.new
# diff pkg_list pkg_list.new
0a1
> Xaw3d-1.5E_1        A 3-D Athena Widget set that looks like Motif
2a4
> emacs-21.3_9        GNU editing macros
#

emacs-21.3 の package の他に Xaw3d-1.5E の package がインストールされた.

Emacs の設定(.emacs など)はまた今度. とりあえず 日本語EUC のファイルの表示はできている.


2007年 2月 21日:サウンドの設定

FreeBSD Expert 2006 を参考にしてサウンドの設定をした.

まずは,ためしに kldload でサウンドカードのモジュールを読み込んだ.

# kldload sound
# kldload snd_driver
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <VIA VT82C686A> at io 0xdc00 irq 10 kld snd_via82c686 (1p/1r/0v channels duplex default)

mpg123 で mp3ファイルの再生をテスト. 無事に音がでた.

/boot/loader.conf に

sound_load="YES"
snd_driver_load="YES"

を追加してシステムを再起動. $ cat /dev/sndstat でサウンドが有効になっているのを確認し, mp3ファイルの再生テストにも成功した.


2007年 2月 18日:bash,X.Org,WindowMaker

bash のインストール

いつまでも sh では不便なので, インストールCD2 の中にある bash をインストールし, ログインシェルを変更した.

$ su
# pkg_add bash-3.1.17.tbz
# exit
$ chsh -s /usr/local/bin/bash kdo

設定ファイル ~/.bash_profile,~/.bashrc がないが, ファイル名の補完はできるし, ~/.profile があるので PATH も通っている. なにか困るまでとりあえずこのままでいくことにする.

X Window System(X.Org)の設定

FreeBSD Expert 2006 を参考に X Window System(X.Org)の設定をおこなう.

X.Org は FreeBSD をインストールするとき, Distributions で All を選択したので, すでにインストールされている.

FreeBSD 5.2.1 をインストールしてある 3号機の /etc/X11/XF86Config を ftp で 4号機にもってきて, /etc/X11/xorg.conf にコピーした. 3号機と 4号機は双子の関係にある (チップセットが同じ)ので, こういうことができる.

$ su
# cp XF86Config /etc/X11/xorg.conf
# exit
$ xinit

で無事に X が起動した. 使用した xorg.conf を別ファイルにして載せておく (xorg.conf_for_ple133t). ビデオカードはチップセット VIA PLE133T にオンボードのもの, 使用しているモニタは EIZO の FlexScan L465 である.

WindowMaker のインストール

ウインドウマネージャの WindowMaker をインストールする. インストールCD2 にパッケージがあるので,これを利用する.

# pkg_add windowmaker-0.92.0_2.tbz

~/.xinitrc に

exec wmaker

と記述し,

$ startx 

で起動. まだ DockApp をなんにも入れていないので非常にシンプル. twm とたいしてかわらないかも.


2007年 2月 17日:音楽CD のリッピングと mp3エンコード:gogo

を参考に音楽CD から mp3ファイルをつくってみた.

cdcontrolコマンドでオーディオトラックの情報を読み込み, ddコマンドでデータを吸い出す.

$ cdcontrol -f /dev/acd0 info
$ dd if=/dev/acd0t01 of=a1984_01.raw bs=2352
$ dd if=/dev/acd0t02 of=a1984_02.raw bs=2352
$ dd if=/dev/acd0t03 of=a1984_03.raw bs=2352
     :
     :

mp3ファイルへの変換には「午後のこ〜だ」を使った. FreeBSD の ftpサイト

からダウンロードした gogopetit-3.13.tbz を pkg_add でインストールした. 4号機はまだインターネットにつながっていないので, AirH" をつないでいる常用マシン 3号機でダウンロードしたものを ftp でもってきている. 試しに 1曲エンコードしてみた.

$ gogo-petit -nopsy a1984_01.raw

できあがった mp3ファイルを聞くために, mpg123 をインストールして(# pkg_add mpg123-0.50r_17.tbz), 再生しようとしたら,

$ mpg123 a1984_01.mp3
  :
  :
Can't open /dev/dsp!

サウンドの設定がまだだった. 3号機に転送して聞いてみたら,曲の頭にサッ(ザッ?シュッ?)というノイズが入っていた.

3号機の gogo 2.39 を使ってエンコードするとノイズは入らない. gogo-petit 固有の問題かもしれないので, 3号機と同じ gogo 2.39 をインストールしてみることにした.

gogo 2.39 のパッケージは用意されていないので, ports を使ってインストールする. 4号機はまだインターネットにつながっていないので, ports の make でソースをダウンロードできない. 3号機をつかって gogo のソース

をダウンロードして,ftp で 4号機にもってきた. 以下の手順でインストールをおこなう.

$ su
# cp gogo239.tgz /usr/ports/distfiles/
# cd /usr/ports/audio/gogo
# make
  〜 THREADS オプションをつけるか聞いてくるが,
     SMP ではないのでチェックしないで先にすすむ.
  〜 nasm がないと言われてコンパイルに失敗した.

FreeBSD の ftpサイトから nasm-0.98.39,1.tbz をダウンロードし, pkg_add でインストールし,再度 gogo のインストールにトライする.

# cd /usr/ports/audio/gogo
# make
  〜 gmake がないと言われてコンパイルに失敗.

gmake-3.81_1.tbz をインストールする. libiconv,gettext が足りないといわれるのでこれらもインストール. 再再度 gogo のインストールにトライ.

# cd /usr/ports/audio/gogo
# make
  :
# make install
  :
# make clean
  :

gogo のインストールに成功した.

さっそく 1曲エンコードしてみる.

$ gogo -offset 0 a1984_01.raw

3号機に ftp転送して試聴.先頭のノイズはなくなっていた. 同様にして読み出した RAW PCMファイルをすべて mp3ファイルにエンコードした.


2007年 2月 14日:ハードディスクのチェック

gmirror での RAID1 構築時に ad0 のディスクに読み取りエラーが出たので, 専用のツール (HGST Drive Fitness Test) でディスクチェックを行った.

結果,ad0 は「One or more corrupted sectors found」とのエラーが出た. ad2 は問題なし(Operation complete successfully).

ad0 のディスクをはずし,ad2 のディスクを ad0 につなぎなおして, RAID1 は片肺で運用することにした.


2007年 2月 11日:gmirror で RAID

を参考に RAID1 を構築した.

インストールCD 1 で起動. Country Selection で「110 Japan」を選択し, System Console Keymap で「Japanese 106」を選択する. sysinstall Main Menu で「Fixit」を選択し, Please choose a fixit option で 「2 CDROM/DVD」を選択し OK する. Fixit# とプロンプトが出る.

参考サイトを見ながら次々とコマンドを打っていく.

Fixit# chroot /dist
Fixit# mount_devfs devfs /dev
Fixit# gmirror load -v
Module available.
Done.
Fixit# gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0.
Done.
Fixit# mount /dev/mirror/gm0s1a /mnt
Fixit# echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
Fixit# echo 'swapoff="YES"' >> /mnt/etc/rc.conf
Fixit# ee /mnt/etc/fstab
       〜/dev/ad2s1d /home2 の行を削除.
       〜/dev/ad0 を /dev/mirror/gm0 に書き換え.
Fixit# gmirror insert -v gm0 ad2
Done.
Fixit# 

同期にしばらくかかる. HDD からコンコンと音が聞こえる. 古い HDD(2000年の)を使ってるんだけど大丈夫だろうか. 進行状況は gmirror status で確認できる. 40分ほどで同期が完了した.

Fixit# exit

で終了.Please choose a fixit option で「X Exit」を選択して, sysinstall Main Menu にもどり,「X Exit Install」で終了.

リブートするので,インストールCD を抜いて立ち上げる.

再立ち上げ中に止まってしまった. gm0: rebuilding provider ad2 finished とかいうメッセージが出たところで凍ってしまう.

一度 ad2 を抜いて立ち上げてみたら,うまく起動した. もう一度 ad2 をつないで立ち上げなおす. うまく起動するが,ad2 の同期を最初からやりなおすことになったようだ. 最初の同期処理が完全に終わっていなかったみたいだ.

ad0 に読み取りエラーが出た. gmirror list で ad0 の Flags が BROKEN になってしまった.

同期が終わったあたりでシステムが止まってしまった. リセットボタンで再起動する.

WARNING が出ながらも立ち上がった. 同期率 84% から rebuilding を再開した.

次のようなメッセージが出て終了.

GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.
GEOM_MIRROR: Device gm0: provider ad2 activated.

gmirror status,list は以下のようになった.

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad0
                      ad2
# gmirror list
Geom name: gm0
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 2
ID: 307323345
Providers:
1. Name: mirror/gm0
   Mediasize: 41174138368 (38G)
   Sectorsize: 512
   Mode: r5w5e6
Consumers:
1. Name: ad0
   Mediasize: 41174138880 (38G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 2
   ID: 5667172
2. Name: ad2
   Mediasize: 41174138880 (38G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 2
   ID: 455625177

ad0 の Flags が NONE になっている. 読み取りエラーの箇所はスキップしたんだろうか.

システムを再起動.今度は無事に起動した. # gmirror status で RAID もうまく働いていることを確認して, 今日は終了.


2007年 2月 4日:インストール

4号機は,今まで使っていた Seagate の HDD 60GB をおろし, 試験用に IBM の HDD 40GB 2台を積んだ. HDD を 2台積んだのは RAID によるミラーリングをテストするためである. ドライブの構成は,

とした.

インストールの手順は,FreeBSD Expert 2006 に載っている FreeBSD 6.1 インストールの記事を参考にした.

インストール

電源を入れ,インストールCD 1 を挿入すると FreeBSD のインストーラが立ち上がる.

まず国を聞かれた(Country Selection).「110 Japan」を選択.

次にコンソールのキーボードを聞かれた(System Consle Keymap). 「Japanese 106」を選択.

sysinstall Main Menu で「Custom」を選択.

Choose Custom Installation Options で「3 Partition」を選択.

Select Drive(s) で「ad0 ad0」を選択.

FDISK Partition Editor で「A」を押し, すべての領域を freebsd に割り当てた.

Install Boot Manager for drive ad0? でブートマネージャ 「BootMgr」を選択.

ディスク ad2 はミラーリング用なのだが一応 ad0 と同じ手順で freebsdの 領域を割り当てておいた.

Select Drive(s) のメニューに戻るので「OK」し, Choose Custom Installation Options にもどる.

「4 Label」を選択してパーティションを切る. ad0 は「A」を押して,自動で設定する. ad2 は「C」を押して,すべての領域 8040262ブロックを FS(A file system) にし,/home2 に Mount するようにしておいた. 「Q」で Choose Custom Installation Options にもどる.

「5 Distributions」を選択し,Choose Distributions に進む. ここでは「All」を選択した. User Confrimation Requested で ports collection をインストールするか 聞かれるのでデフォルトの「Yes」を選択しておく. 「X Exit」で Choose Custom Installation Options にもどる.

「6 Media」を選択. 「1 CD/DVD」を選択して「OK」. Choose Custom Installation Options にもどる.

「7 Commit」で本当にインストールしてよいか聞かれるので 「Yes」を選択するとインストールがはじまる.

新しいファイルシステムが作られ(newfs),システムが展開されていく. ファイルシステム作成時にディスクのチェックは行わないようだ. ディスクのチェックを期待して ad2 にもファイルシステムを作成したのだが…. ミラーリングするとき /etc/fstab から削除しなくてはならないので余計な手間だった.

12,3分でインストールは終了. User Confirmation Requested で基本設定に入るか聞かれるので 「Yes」を選択する.

基本設定

FreeBSD Configuration Menu でまず「Root Password」を選択. root のパスワードを設定する.

次に「User Management」を選択. ふだん使うユーザの登録を行う. User and group management で「User」を選択. 以下のように新しいユーザを作成した.

ログインシェルはあとで bash をインストールしてから chsh するつもり.

「OK」すると User and group management にもどるので, 「X Exit」で FreeBSD Configuration Menu にもどる.

「Time Zone」を設定する. Select local or UTC (Greenwich Mean Time) clock では「No」を選択. Time Zone Selector では「5 Asia」を選択. Countries in Asia で「18 Japan」を選択. JSTがよさそうといってくるので「Yes」を選択. FreeBSD Configuration Menu にもどる.

「Mouse」を選択し,マウスの設定. 「2 Enable」を選択すると,マウスポインタがあらわれて動くので, 「Yes」を選択する. 「X Exit」で FreeBSD Configuration Menu にもどる.

「Networking」でネットワークの設定. 「Interfaces」を選択すると Network interface information required に進む. インターフェイス一覧の中から「vr0」を選択. IPv6 の設定は「No」,DHCP の設定は「No」をそれぞれ選択. Network Configuration で以下のように設定した.

vr0 インターフェイスを今動かすか聞いてくるので「Yes」を選択. 「X Exit」を選択して FreeBSD Configuration Menu にもどる.

さらに「X Exit」を選択すると Choose Custom Installation Options にもどる. ここでも「X Exit」を選択すると sysinstall Main Menu にもどる. 「X Exit Install」を選択しインストールを終了する.

マシンが再起動するので インストールCD を抜く.

ネットワークの確認など.

とりあえず kdo でログインして, ping コマンドでネットワークが立ち上がっていることを確認した. $ shutdown -p now で電源を切れることも確認して,今日は終了.


2007年 1月 31日:インストールディスク作成

ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/6.2/ から 6.2-RELEASE-i386-disc[12].iso をダウンロードして CDに焼いた.


[ KDOホームにもどる ]


(C) 2007, 2008 KDO