項目
/1)背景/2)概要/3)動作環境/4)libiconv-1.8にパッチ当て/5)Samba-3.0.0のインストール/6)ちゃんぽん管理/7)日本語名ファイルを作ってみる/
UNIX USER読者モニターもいよいよ最終回だ。だが前号で今号の予告をチェーックして最終回はこれでキメようと思っていた企画は変更になってしまった。それは激動のオープンソース・シーンには仕方のないことである。ではナニをやるか。えーと第1特集はSambaだ。でもSambaの設定とかはWebmin報告でもやったし、今うちのファイル共有はWebDAVだからなー、う〜んなどと見ているうちにふと思いついたことがあった。
最近、MSDNに入った。ていうかあの「インストールし放題」と噂の「MSDN Deluxe Edition」を買ってしまったのだ。もちろんインストールし放題というのは嘘で、いろいろな規約はある。だが要するに1年間のMSDN最シタッパ会員の資格を与えられるということなのだった。
後に送られてくるいろいろなCDにはものすごい上位版のOSが居並ぶ。これらを、ライセンス認証なしの60日間開発や学習にいじくりまわして、またきれいさっぱり再インストールする、ような使い方が認められており、添付文書にちゃんとそのように書いてある。続けて同程度の年会費を払っていけばそのまま会員でいられる。これは大変面白い制度で、年5,6万はちょとお高いが遊ぼうと思えば相当遊べるわけで、うーんどーしよと考慮中だ。
記事の進行に従い、以下の項目を実践してみた。
1)Sambaのセットアップ
2)スタンドアロンサーバの構築
3)Windows ADドメインへの参加
4)SambaPDCの構築
このうち1)-3) 、および4)のうち、ユーザ管理にsmbpasswdを用いた従来のPDC構築法を確認するところまではSolaris9で実験した。
ただし、4)で認証にLDAPを用いるところでは、Solarisには独自のLDAPサーバ・クライアントシステムがありそれとの差別化が難しそうだったので、Red
Hat Linux 9を用いた。
Sambaを導入したUNIX環境は、主にSun Blade 100のSolaris 9である。gccのバージョンは別途パッケージインストールした3.3。
あと、一部 Red Hat Linux9を使用したのは、自作のIAマシン。
Windows Serverを導入した環境は、Dell Optiplex GX-50。
加えて、Windows 2000 proのクライアントとして、実はマイメインWindows環境であるThinkPad S30をちょろっと用いた。以下に詳細を再掲する。クライアントのS30などはあまり細かいスペックは環境に影響しないと思うので、なんとなくクライアントっぽいものだけ記した。
****************************
Sun Blade100
CPU: Ultra-SPARCIIe 500MHz
RAM: 768MB
OS: Solaris 9
デスクトップ環境:Gnome-2.0リリース版
****************************
DELL Optiplex GX50
CPU: Celeron 900MHz
RAM: SDRAM 256MHz
チップセット: Intel 810
グラフィックアクセラレータ: オンボード
OS: Windows Server 2003 Standard Edition
***************************
IBM ThinkPad S30
CPU: モバイルPentiumIII 600MHz
チップセット: 440MX
LAN: Melco WLI-PCM-L11 による無線接続
筐体: ミラージュブラック(ぜんっぜん関係ねえ)
OS: Windows 2000 Professional SP3(新規インストール(むろん入れたのはわたしではない))
***************************
自作マシンのに子X号
CPU: Intel Celeron 2.7GHz
RAM: 1024MB
グラフィックボード: ATI Radeon 7200
LANボード: Intel pro 100+
マザーボード: Intel BOXD865PERLK
さて、まずは最近日本語コード処理体系が変わったというWindowsのために、libiconvをインストールしなければならない。
それもソースにパッチ当てをしてから、コンパイルしなければならない。
パッチ当てにはGNU-patchが必要だ。これは幸い、Sunfreeware.com(親玉はhttp://www.sunfreeware.comだが、おすすめの通りミラーサイトに飛んだほうが絶対速い)にSolaris9用のパッケージが出ているのですでにインストール済みだ。
さらにzcatもGNU版が必要なのだろうが、Solaris標準のzcatでもちょっとした工夫でできた。
それはもらってきたパッチのアーカイブ libiconv-1.8-cp932-patch.diff.gz を
gunzip -d libiconv-1.8-cp932-patch.diff.gz
で、一度 libiconv-1.8-cp932-patch.diff にしてから、
compress libiconv-1.8-cp932-patch.diff
で、libiconv-1.8-cp932-patch.diff.Z
と、Solaris特有のデカZタイプにしてやる。で、改めて
zcat libiconv-1.8-cp932-patch.diff.Z | /usr/local/bin/patch -p0
すると、「パッチを当てています」メッセージが十数行でて、無事当たったことがわかる。他の場合はエラーメッセージが出ることもあるし、黙って無を返された場合も失敗と考えた方がよさそうだ。
ここでGNU-patchはフルパスで書いてやらないとSolaris標準のpatchが使われてしまい、無論エラーとなる。でもソルパッチ様はたぶんOSのパッチ当てという尊いお仕事をなさるカタなので、無下に無効になどはできないと思うのだ。多分。
この方法が全てうまく行くとは限らないし、もっといいやり方もあるかも知れないのだが、Samba以前に補助ツールのそれも最初のパッチ当てでリタイヤかよ〜そりゃねーだろ〜とか半泣きであれこれいじった結果これだった。
Sambaもソースからのコンパイルである。わたしの場合はsamba-3.0.0/source 内で
./configure --with-libiconv=/usr/local
とやった。--with-pam はどうしようかなと思ったけど、まずは一番簡単なオプションでと思ったのだ。ldapでさえ標準で有効になってるんだからPAMってヤツがそれほど必要ならやっぱりなってるだろう。この考えが正しいかどうかは、不明である。
すると、configure の際、popt.hがないというエラーが出た。 調べてみるとコマンドラインを解析するなにからしい。なんとpopt-1.7のSolaris9用パッケージが出ていた。(以後、Solaris用パッケージが出ていたとは、特記しない限りsunfreeware.comに出ていたことを表す)。インストールしたところ今度は少なくとも中止はされなかった。ときどき「ファイルが存在するがコンパイルできない、たぶんヘッダがおかしい」というようなメッセージが出たが、いかんともしがたいよねエ。
makeが終わるまで40分ほどかかった。これもときどきではあるが、warningが出る。incompatible pointer typeとかいうのが多いが、これもいかんともしがたい。だが一応終わったようだった。
まずは最も簡単なパターンの立ち上げだ。いわく、ユーザ管理は全てSamba側で行い、基本的にはUNIXのユーザがWindowsからもSamba共有でアクセスできる、というもの。これはSolarisに標準でついているSamba-2.22をWebminで管理したときとほぼ同じなのだが、ひとつ問題だったのはWebminからSWATへリンクすると「Bad headers」というエラーがでて、ダーメだった。inetd経由での起動を選ばなければならなかった。
そして、どちらの場合も、libiconvの存在が大きく影響した。
まず、SWATをブラウザからポート901にアクセスして立ち上げようとしたら、いつものあの御託宣だ。「致命的なエラー:libiconv.so.2が見つかりません:ファイルもディレクトリもありません:夢も希望もありません」
なーんでヨ。rootの.profileにも/usr/local/libにはパス通してあるのに。でもこういう起動のさせかたでは環境設定ファイルなんて読んでくれないのかしら・・・と思ってinetd.confを見直すと、すぐに光明が。
そのすぐ上に、この前のGlobus Toolkitでサービスを立ち上げたときの記載が残っていたのだ。そこにお手本があった。従う。
swat stream tcp nowait.400 root /usr/bin/env env LD_LIBRARY_PATH=/usr/local/lib /usr/local/samba/sbin/swat swat
これでSWATはすぐに出動した。前にやったことが、次の役に立つ。続けることによって、見えてくるものがあるんだなー。
さて、同じようにWebminでもモジュール設定でエラーが出る。これはWebminの設定により解決する。

「ライブラリ検索パス」のところに、/usr/local/lib を加えるのだ。これでWebminでもSWATへのリンク以外は正常に操作できるようになる。
これでS30からアクセスできるようになった。
では苦労して整えたはずの日本語環境はどうだろうか。
今回は実験と称してかなり危険なこともやるかも知れない。ホームディレクトリに万が一のことがあってはあとが面倒だ。そこでBladeに/sambaというディレクトリをつくり(共有名Samba)そこを共有することにした。
Windowsで適当なファイルを作り、ファイル名を日本語にして、BladeのSambaに保存する。

まずは問題なし。これをBlade側から見たらどうなるんだろう。

おお。やはりちゃんと日本語だ。
あまり簡単なのでなんかあたりまえのような気がするけれど、smb.confにかならず書けヨとのお達しがある
unix charset = EUCJP-MS
dos charset = CP932
display charset = CP932
の項目がなければどうなるのか。実はある機会に偶然忘れて、それを知ることができた。

ファイル名の部分が、点とかトーフになっちまっている。
さらに、BladeからWebDAVフォルダにファイル移動をしようとしたとき、この「たわらば」ファイルが引っかかってトラブった。
このように、libiconvのセットアップで行った苦労はムダではなかったようである。実はわたしはもう日本語名のファイルは絶対トラブるから作らない努力、作らせない(自動作成などで)努力をずっと続けてきたので、これまでに試したことがなく、これほど影響があるとは知らなかった。