Macintosh で NetBSD


HOME > 雑篇 > 始まり | 1998年 | 1999年 | 話題集 | 資料類

NetBSD 周辺の話題

  1. NetBSD でアラビア語
  2. WWWブラウザ
  3. 『MACLIFE』1999年2月号
  4. 「UNIX-like Mac はいかが?」
  5. いくつかのシェルスクリプト

1. NetBSD でアラビア語

「Macintosh でアラビア語」の延長として当然考慮す べき話題だが、アラビア語を受け付けてくれるシェルやコンソールがあるのか どうか、まだよくわからない。

というわけで、ここでは、万能エディタ Mule でアラビア語を読み書きするた めの方法を略述。必要なものは基本的にアラビア語のフォントだけなので、簡 単だ。

Mule でアラビア語

  1. フォントを入手する。筆者が利用したのは「ftp.iij.ad.jp/pub/misc/mule/fonts/ETL/」。 ダウンロードしたのは以下の6種類(16ポイントだけでも足りると思うが、ど れもサイズは小さいから、この際まとめてダウンロード)。


  2. 「gunzip」で解凍し、「bdftopcf」というコマンドで「pcf」 形式に変換する。

    # gunzip etl16-arabic0.bdf.gz
    # bdftopcf etl16-arabic0.bdf > etl16-arabic0.pcf
  3. 「gzip」で再び圧縮し、Xがフォントパスとして参照している ディレクトリ(コマンド「xset q」で調べられる)へコピーする。わざわざ 「gzip」する必要はないのかもしれないが、他のフォントがすべてそうなって いたので、それに倣う。

    # gzip etl16-arabic0.pcf
    # cp etl16-arabic0.pcf.gz /usr/X11R6/lib/X11/fonts/misc
  4. 「mkfontdir」というコマンドで、フォントをコピーしたディ レクトリの中身を fontset として読み込ませる。そして、フォントパスを張 り直す。これで準備は完了。

    # mkfontdir /usr/X11R6/lib/X11/fonts/misc
    # xset fp rehash
  5. Mule を起動し、「M-x arabic-mode」でアラビア語モードを 呼び出す。「C-]」で arabic-mode とアスキーモードを切り換えられる。 arabic-mode を終了するには、「C-c C-c」をタイプする。

  6. 同サイトには、ギリシア文字やキリル文字のフォントもある。 それらを上と同様の手順で追加すれば、ギリシア語やロシア語も読み書きでき るようになる。

[ToC]

2. WWWブラウザ

NetBSD には適当なWWWブラウザがないようだ。日本語が不要なら Lynx でも構わないのだが、そうもいかない。「三浦本」のおまけCD-ROMにはバイナリ版の mozilla(Netscape Navegator + Composer)が収録されてたので試してみたけれど、遅くて重くてエラーメッセージの連続で不安定。「神山本」の「WWWは Mac でやるべき」という現実的な忠告に従うべきかもしれない、と思う。

ある日、本屋で FreeBSD 関連の本を立ち読みしていたら、Mule はWWWブラウザとしても使える、という記述が目に留まる。Mew との組合せでメーラーになるのと同様、W3 というプラグインを追加してやればいいらしい。Mule 愛好家としては、聞き捨てならない話。

しかしこの W3、NetBSD 周辺では見つからないのである。「駄目か」とあきらめかけたのだが、FreeBSD の ports の中にあった。ports は移植可能性ありという話なので、挑戦する。

Mule でWWW

  1. FreeBSD の ports は、NetBSD の package を pkgsrc からインストールする場合と同じような要領で利用できる。「三浦本」の143ページ以下、「神山本」の248ページを参照。

  2. W3 の ports(ftp.freebsd.org/pub/FreeBSD/ports-current/www/w3)をダウンロードして、「/usr/pkgsrc/www/」に置く。つまり「/usr/pkgsrc/www/w3/」以下に、4つのファイルおよびディレクトリ(Makefile、files、patches、pkg)が入ることになる。

  3. インターネットに接続してダウンロード可能な状態でmakeすれば、必要なファイルは勝手に取りに行ってくれるけれど、必要なソース(ftp.freebsd.org/pub/FreeBSD/distfiles/w3-2.2.26.tar.gz)を前もってダウンロードして、「usr/pkgsrc/distfiles/」以下に置いといてもいい。

  4. Makefile の書き換え。試行錯誤の結果、効果があったと思われる変更は以下のようなもの。

    BUILD_DEPENDS?=	mule
    RUN_DEPENDS?=	mule
    EMACSCMD?=	mule
    ELISPDIR?=	/usr/local/lib/mule/site-lisp
    .include "../../mk/bsd.pkg.mk"
    

    「.include "../../mk/bsd.pkg.mk"」は、末尾の「.include <bsd.port.mk>」と置き換える。「三浦本」145ページ参照。

  5. make。make install。成功すれば、Mule から「M-x w3」で呼び出せる。

  6. 試用してみた W3(2.2.26)の特徴。

[ToC]

3. 『MACLIFE』1999年2月号

PC系の雑誌ではLinux等の特集や連載を見かけることが珍しくもなくなった。Mac雑誌でもフリーUNIXの話題をもっと取り上げて欲しいもんだ。と思ってたら、『MACLIFE』(エクシードプレス)にはちゃんとそういう連載があったのだ(まえだひさこ「まえだひさこのMac the BSD」)。単なる筆者の無知でした。そういえば『MACLIFE』はMkLinux関連の連載もやってたっけ。

1999年2月号はオールドMac活用法の特集で、そちらの方でもNetBSDが取り上げられており、偉いことに付録CD-ROMにNetBSD/mac68kの1.3.2が収録されている。こんなおまけを付けられたらインストールしてみたくなる人も結構いるでしょう。特集の方には簡単な紹介があるだけなので、連載の方を参考にしながら、ということになる。

で、「まえだひさこのMac the BSD」第2回「SE/30へのNetBSDインストール〜前編」を読んでみる。ツールを揃えて、パーティションを切って、フォーマット(ファイルシステムの作成)して、起動。というところで以下次号(4ページしかないから)。
これは辛い。インストールに成功して無事に起動できたとしても、その後何すればいいかわからないまま、来月まで待たなきゃならないなんて。再起動の仕方も書いてないんだけど、1カ月間そのままの状態でいろってことなんでしょうか。

CD-ROMに収録されているのは、

X関連のファイルは「xserver.tgz」のみ。「三浦本」には「1.3.2(5/30にダウンロードした)のインストールには注意して下さい。kern.tgz、kernsbc.tgzがインストーラからインストールできません」(19ページ)とあるんだけど、問題なかったのかな。

「今回のインストールでは、思っていたよりもトラブルが多く、フォーマットとインストールの繰り返しでした」(273ページ)。どんなトラブルだったのか知りたいです。上の「kern.tgz、kernsbc.tgzがインストーラからインストールできません」という事態は発生しなかったのでしょうか(してたら書いてくれるよね)。

注意書き。

 なお、インストール作業はUNIXに関してきわめて高度な知識を要求されますので、初心者読者もしくは自信のない読者は決してインストール作業を行なわないでください。
 同時に、NetBSD/mac68kは無保証のフリーソフトウェアであるため、そのインストール作業によって読者が被ったあらゆるデータ損失/ハード損害に関しましては、筆者およびMACLIFE編集部は一切の責任を負いません。各自の責任で作業してください(『MACLIFE』1999-02、270ページ)。

読者に慎重を訴えるのは適切な配慮とは言え、「UNIXに関してきわめて高度な知識を要求されます」てのは少々大袈裟。インストールするだけなら、UNIXの知識なんか全然必要ない(Macに関する知識があればいい)。

「NetBSD/mac68kは無保証のフリーソフトウェアであるため」って、どういう意味なんでしょう。フリーソフトじゃなかったら「筆者およびMACLIFE編集部」は責任を負ってくれるんですかね? 

率直に言って、この連載記事だけを参考にインストールを行うのはかなり難しいと思うんだけど、「NetBSDに関して、筆者や月刊MACLIFE編集部は技術的なサポートを一切いたしません」(273ページ)。
その一方、「SE/30のEthernetカードがまだ手に入りません。……「テストに使ってもいいよ」という殊勝な心の持ち主の方を募集しております」(273ページ)。読者の技術的なサポートは期待しておられるのですね。

何だか文句ばかり書いてしまったけれど、それは期待の裏返しということで。こういう連載があるってのはうれしいことですから。3月号では1.3.3へのアップデート方法についても触れられるらしいので、楽しみに待ちましょう(CD-ROMには何か収録されるんでしょうか)。

[ToC]


4. 「UNIX-like Mac はいかが?」

『コンピュータ 悪のマニュアル 2』(backrs編著、データハウス、1988年)に掲載されていた「UNIX-like Mac はいかが?」(Una Bomer ●~ *)という短い記事。NetBSDと直接の関係はないのだけど、いかにしてMacをUNIXに近づけるか、って話で、

GUI 面よりもむしろ directory tree の階層構造とか各種ツール類とか、つまり作業環境をUNIXに近づけるっていうまにあっくなカスタマイズです(48ページ)。

いいですね、これ。

NetBSDと共存していると、Macとの間でファイルをやり取りする機会も何かと増えるし、ファイル名なんかはUNIX風にしておいた方が便利だったりする。階層構造までは考えなかったけど、かっこよさそう(合理的でもある)。早速、真似してみた(執筆者の「Una Bomer ●~ *」氏は、「.」「..」というエイリアスを作って各フォルダに入れたそうで、さすがにそこまでは真似できません)。NetBSDのディレクトリ構造きちんと理解できてなくて、作ってはみたものの、中に何を入れればいいのやら戸惑うことも多いんだけど。

 そして何といっても一番のツールは MacShell。
 これも名前通りのもので C shellベースの UNIX-likeな CUI(Command line User Interface)環境を提供してくれる(49ページ)。

MacShellは筆者も以前に試したことがある。NetBSDを導入する前で、UNIXのコマンドなんてものに興味のかけらもなかったし、日本語は化けるし、なかなか使い勝手が悪くて実用にまでは至らなかった。しかしNetBSDを使い始めると、MacでもCUIのシェルを使いたくなるのが人情。でないと、階層構造やファイル名をUNIX風にした意味もない。

他にも探してみたら、Msh (Mac Shell) というのがあった。これも Csh風のシェルプログラム。作成者が日本人であるおかげか、日本語も通るし、コマンドも豊富だし、カスタマイズの余地も大きい。パス表記にMac風の「:」じゃなくUNIX風の「/」が使えるし。他のアプリを起動・終了させることも可能。

MshとMacShellの比較表を作ってみた。改めて試用してみると、使いにくいという記憶しかなかったMacShellも、機能は豊富なのだった。カスタマイズもいろいろ出来るし。ファイルのタイプとクリエータを変更できるのは案外便利。Tabキーでファイル名の補完もしてくれる。

が、Mshが有利なのはFinder操作が可能(ゴミ箱を空にしたり、システムの再起動や終了まで。ついでにFinder自体の終了と起動も可)なのと、他のアプリをコマンドラインから呼べること。例えば、ミミカキエディットのエイリアスに「mimi」とか名前を付けて、「set path」したフォルダ(「/usr/local/bin」とか)に入れとけば、コマンドラインから、

mimi foo.txt

で、ミミカキエディットがfoo.txtを開いてくれる(foo.txtをエイリアスにドロップしたことになる)。AppleScriptのスクリプトも、アプリケーション形式で保存すれば実行可能。こうなると、本当にFinderなしでもやっていけるんじゃないかと思う。

MshはTabでファイル名の補完ができないし、画面のコピー&ペーストもできない(MacShellはどちらも可能)。だからファイル名を入力するのが結構面倒くさい。その代わり、Finder上で見えているフォルダやファイルをコンソールにドロップしてやると、そのパス名がコマンドラインに入る。

MacShellは、現在居るディレクトリ(cwd)のファイル及びディレクトリしか操作できない。ディレクトリ間の移動も、一段階ずつしかできない。これはかなり不便。Mshにはそういう制約はない。

今はMshを「Startup Items」フォルダに入れて使ってます。

[ToC]


5. いくつかのシェルスクリプト

『UNIX C SHELL フィールドガイド』(G・アンダーソン+P・アンダーソン、パーソナルメディア、1987年)を適当にめくりながら、簡単なシェルスクリプトを試してみる。

ファイル名をまとめて付け替える必要に迫られたのがきっかけ。perlとかを使ってもいいのだろうが、この程度のことならシェルに任せられるはず。目を付けたのは、端末からのループ。

その1:まとめて接尾辞を付けるスクリプト。

「bar***」を「bar***.old」に変える。

# set foo = (bar*)
# foreach f ( $foo )
foreach? mv $f $f.old
foreach? end

「foreach」構文を使った。最後に「end」を入力してリターンを押すと処理が始まる。

その2:次に試したのは、上と逆のパターン。

「bar***.old」を「bar***」に変える(接尾辞を削除)。

# set foo = (bar*.old)
# foreach f ( $foo )
foreach? mv $f $f:gr
foreach? end

これは少し迷った。ファイルの名前を削る方法が、すぐには思い付かない。パス名から接尾辞を除いたものを表現するためのオプション(「$f:gr」のところの「r」)が見付かったので、それを利用する。「g」オプションは、「foo」に set された単語のリストそれぞれに対して処理を行うためのもの。

その3:番号順にリネーム。

「bar***」で始まるファイルを、「new.1」「new.2」「new.3」……に変える。

# set $foo = (bar*)
# @ goo = $#foo + 1
# while ( $#foo )
while? @ n = $goo - $#foo
while? mv $foo[1] new.$n
while? shift foo
while? end

「while」ループ。
「$#foo」は、foo に含まれる単語の個数。
「@」は、数値の代入用符号(後ろにスペースが必要)。
「$foo[1]」は、リスト foo の一番目の単語。
「shift foo」で、リスト foo の最初の要素を削除。

[ToC]


HOME > 雑篇 > 始まり | 1998年 | 1999年 | 話題集 | 資料類

Copyright (c) 1998-1999 Kiwada Kats-hiro.
Last Modified : May 10, 1999