その2
開発環境
新しいパッケージが手に入らないのでコンパイルすることもあろうかと開発環境をインストールしておく。
# apt-get install gcc # apt-get install make # apt-get install patch # apt-get install g++
Samba 3 (注:白箱では正常に動かず。)
現時点での最新安定版は3.0.23bなので、これをソースコードからコンパイルすることにした。
まず下準備として、デフォルトではiconvがWindows互換の文字コード変換にならないので、libiconvにパッチを当てておく。
例によってこのページのとおりにパッチを当てる。
$ gzip -dc libiconv-1.10.tar.gz | tar xvf - $ cd libiconv-1.10 $ gzip -dc ../libiconv-1.10-ja-1.patch.gz | patch -p1 $ ./configure $ make # make install # touch /etc/ld.so.conf # echo "/usr/local/lib" >> /etc/ld.so.conf # ldconfig -v
iconvを正常にインストールできたか確かめる。
# rm -rf /usr/bin/iconv # ln -s /usr/local/bin/iconv /usr/bin/iconv $ iconv -l | grep -- -MS EUC-JP-MS EUCJP-MS EUCJP-OPEN EUCJP-WIN EUCJPMS CP932 MS932 SHIFFT_JIS-MS SJIS-MS SJIS-OPEN SJIS-WIN WINDOWS-31J WINDOWS-932 CSWINDOWS31J CP50221 ISO-2022-JP-MS MS50221 WINDOWS-50221
続いてSamba3のコンパイルとインストール。
$ wget ftp://ftp.samba.gr.jp/pub/samba/samba-3.0.23b.tar.gz $ tar zxvf samba-3.0.23b.tar.gz $ cd samba-3.0.23b/source $ ./configure --with-libiconv=/usr/local --with-automount --with-smbmount --with-pam --with-pam_smbpass --with-utmp --with-smbwrapper --with-syslog --with-quotas
PAM関連のヘッダファイルがないとか言われたので
# apt-get install libpam0g-dev
をしてもう一度configureしてmake、make install。
$ make $ su # make install
コンパイルにはおよそ5〜6時間程度かかる。(多少手間がかかるかもしれないがもっと速いマシンでクロスコンパイル環境を組んでコンパイルしたほうがいいかな?)
SWATを起動させる場合は、/etc/inetd.confに
swat stream tcp nowait.400 root /usr/local/samba/sbin/swat swat
を書き足して
# /etc/init.d/inetd restart
すればSWATが起動するようになる。
ついでに起動スクリプトを準備する。適当なSambaパッケージをダウンロードしてきて取り出す。
$ mkdir tmp $ dpkg -X samba-3.0.14a-3_sh4.deb ./tmp
としてやればtmp/etc/init.d/に起動スクリプトが展開されている。ただし、プログラムの場所などが違うので直す必要があるが、スクリプトを弄るよりもファイルをリンクするほうが確実。(smbd、nmbdはシンボリックリンクだと起動スクリプトから操作できないのでハードリンクを作成。ついでにlogrotateしておく。)
# ln /usr/local/samba/sbin/*mbd /usr/sbin/ # mkdir /etc/samba # touch /usr/local/samba/lib/smb.conf # ln -s /usr/local/samba/lib/smb.conf /etc/samba/ # mkdir /var/run/samba # mkdir /var/log/samba # touch /usr/local/samba/var/log.smbd # touch /usr/local/samba/var/log.nmbd # ln -s /usr/local/samba/var/log.* /var/log/samba/ # cp ./tmp/etc/init.d/samba /etc/init.d/ # cp ./tmp/etc/logrotate.d/samba /etc/logrotate.d/
エディタかSWATを使ってsmb.confのGlobalセクションにpidファイルの場所を指定しておく。
[Global] (前略) pid directory = /var/run/samba (後略)
これで
# /etc/init.d/samba start
とするとSambaが起動する。
とりあえず起動できることを確認したら起動スクリプトとして登録する。
# update-rc.d samba defaults 80
優先度は30から80が空いているのでこの間の適当な数字にすればいいだろう。