Chapter 42. Sambaのコンパイル方法

Jelmer R. Vernooij

The Samba Team

John H. Terpstra

Samba Team

Andrew Tridgell

Samba Team

22 May 2001

18 March 2003

June 2005

Table of Contents

Subversion経由でのSambaソースコードへのアクセス
概要
samba.orgへのSubversionアクセス
rsyncとftp経由によるSambaソースへのアクセス
SambaのPGP署名の検証
バイナリの構築
Active Directoryサポートを伴うSambaのコンパイル
smbd nmbdwinbinddの起動
inetd.confからの起動
もう一つの方法: smbdをデーモンとして起動する

Samba Web siteからSambaソースファイルを 入手できる。開発バージョンのSambaは、Subversionかrsyncを使って 入手できる(訳注:現在はgit)。

Subversion経由でのSambaソースコードへのアクセス

概要

(訳注:この節は現在古くなっている) Sambaは公開された環境で開発されている。開発者はSubversionを使って、新しい ソースコードをcheckin(commitとしても知られる) する。Sambaの種々のSubversionブランチはこの章で説明される手順で匿名 Subversion経由でアクセスできる。

この章は、Samba Webサイトにある手順を変更したものである。

samba.orgへのSubversionアクセス

samba.orgのマシンはSamba,rsync,distcc, ccacheとjitterbugを含むいくつかのパッケージの ソースコードへアクセスできるSubversionリポジトリに自由にアクセスできるサーバーを動かして いる。このホスト上のSubversionサーバーにアクセスするには2つの方法がある。

ViewCVS経由のアクセス

お好みのWWWブラウザー経由でソースコードにアクセスできる。これにより、リポジトリの 個別のファイルの内容、リビジョン履歴、特定のファイルに対するコミットログに アクセスできる。リポジトリ上の任意の2つのバージョン間での差分表示を得ることもできる。

http://viewcvs.samba.org/ を使うこと。

Subversion経由でのアクセス

通常のSubversionクライアント経由でソースコードにアクセスすることもできる。そうすると、 リポジトリに対してより多くの制御ができ、完全なソースコードツリーをチェックアウトでき、 通常のSubversionコマンド経由で最新版に追従できる。もしもあなたが開発者であれば、 これは好ましいアクセス方法であり、通常のブラウザーは好ましくない。

SubversionでSambaのソースをダウンロードできるように、するためには、Subversion クライアントが必要である。使用しているディストリビューションに入っているかもしれないし、 そうでなければ、 http://subversion.tigris.org/ からソースをダウンロードできる。

匿名Subversion経由でアクセスするためには、以下のステップを使う。

Procedure 42.1. Subversionを使うSambaの検索

  1. 最新のSubversionのコピーをインストールする。必要なものすべては、 Subversionクライアントバイナリのコピーである。

  2. 以下のコマンドを動かす

    	svn co svn://svnanon.samba.org/samba/trunk samba.
    	

    これは、最新のSambaソースコード(通常次のメジャーリリースになるブランチ)を含む、 sambaと呼ばれるディレクトリを作成する。これは現在 3.1開発ツリーに連動している。

    trunk以外のSubversionブランチは、チェックアウトするときに、branches/BRANCH_NAME というURLによって得られる。ブランチ名の一覧は、Samba Webサイトの Developmentのページから得られる。最新の3.0リリースコードを得たい という共通の要求がある。これは以下のコマンドを使うことによってできる:

    	svn co svn://svnanon.samba.org/samba/branches/SAMBA_3_0 samba_3.
    	

  3. 最新のコードの変更にマージしたい場合は、Sambaディレクトリ内で以下のコマンドを使う:

    	svn update
    	

rsyncとftp経由によるSambaソースへのアクセス

pserver.samba.orgも、 pserver というSambaのサイトの所から、Subversionツリーのほとんどの部分のパックされてない コピーをエクスポートでき、また、 rsync という、Sambaの匿名rsyncサーバー経由でも同じようにできる。ftpよりはrsyncの方が、 rsyncはデータを圧縮転送できるのでお勧めであり、また、抜けているデータのみを 転送出来るという、部分更新が出来て、オーバーヘッドが少ないという点でもお勧めで ある。rsyncについてのより詳細な情報は、 the rsync home page を参照のこと。

アンパックされたツリーの欠点は、Subversionのように、ローカルな変更の自動マージを サポートしないと言うことである。rsyncによるアクセスは、 初期導入に最も便利である。

SambaのPGP署名の検証

インストールする前に、任意のソースファイルのPGP署名を検証することを強く推奨する。 ミラーサイトからダウンロードしていないとしても、PGP署名の検証は、標準的な習慣と すべきである。多くの人は現在PGPの代替としてGNU GPGツールを使っている。GPGは PGPの代わりとして使える。

そんなわけで、以下のようにしてファイルをダウンロードする:

$ wget http://us1.samba.org/samba/ftp/samba-3.0.20.tar.asc
$ wget http://us1.samba.org/samba/ftp/samba-pubkey.asc

最初のファイルはSambaソースファイルのPGP署名である。もう1つはSambaの公開PGPキーそれ自身 である。以下のようにしてPGPキーをインポートする:

$ gpg --import samba-pubkey.asc

そして、Sambaソースコードの正当性を以下のようにして検査する:

$ gzip -d samba-3.0.20.tar.gz
$ gpg --verify samba-3.0.20.tar.asc

もしも、Good signature from Samba Distribution Verification Key..., というようなメッセージが表示されたならば、すべて問題はない。信頼性の関係についての 警告は無視して良い。以下のような表示が出たら問題である:

gpg: BAD signature from Samba Distribution Verification Key

バイナリの構築

tar形式のソースコードを展開後、次のステップは、使用しているOSプラットフォームに Sambaが適合するように、設定(configuration)を行う。もしもソースディレクトリが configureスクリプトを含んでいないのであれば、以降を行う ために、構築作業が必要である。configureスクリプトの構築はautoconfの正しい バージョンが必要である。ど必要とされるバージョンのautoconfがある場合、 以下を実行して生成されるスクリプトでconfigureスクリプトを生成できる。

root#  cd samba-3.0.20/source
root#  ./autogen.sh

バイナリを構築するためには、ソースディレクトリ中で、 ./configureプログラムを動かす。これは、使用している OS用にSambaを自動的に設定する。もしも特別な要求があるならば、最初に 以下のように起動しても良いだろう:

root# ./configure --help

これは、どのような特別なオプションが有効に出来るかの一覧を表示する。その後、 必要な任意の引数を付けて、./configureを実行する:

root# ./configure [... arguments ...]

以下を実行して、バイナリを生成する:

root#  make

一度コンパイルが成功すると、以下のようなコマンドを実行することで、 バイナリとマニュアルページをインストールできる:

root#  make install

ある人は、バイナリファイルとマニュアルページを分離してインストールすることを 好んでいる。もしもそうしたいのであれば、以下を実行することで、バイナリファイルを インストールできる:

root#  make installbin

マニュアルページは以下のコマンドでインストールできる:

root#  make installman

もしも、以前のバージョンからアップグレードするのであれば、古いバージョンの バイナリは.oldという拡張子を付けて改名される。 以下を実行することで、前のバージョンに戻ることが出来る:

root#  make revert

上記を見て分かるとおり、Sambaの構築とインストールは災難を引き起こす事はない!

Active Directoryサポートを伴うSambaのコンパイル

ADSをサポートするようにSambaをコンパイルするためには、以下のものをシステムに インストールする必要がある:

  • MIT あるいは Heimdal Kerberos開発ライブラリ (ソース、あるいはパッケージからのどちらかからインストール)

  • OpenLDAP開発ライブラリ。

もしも、使用しているKerberosライブラリが標準でない位置にあるならば、 以下のconfigure オプションを追加するのを忘れないこと。 --with-krb5=DIR.

configrue を実行後、生成されたinclude/config.hが、 以下のような行を含んでいるかを確認する:

#define HAVE_KRB5 1
#define HAVE_LDAP 1

もしもそうでない場合、configureはインストールされているKRB5ライブラリか LDAPライブラリを見つけるのに失敗している。なぜそうなったかを config.logをみて確認して修正する。

Debian用の、必要とされるパッケージのインストール

Debianでは、以下のパッケージのインストールが必要である:

  • libkrb5-dev

  • krb5-user

Red Hat Linux用の、必要とされるパッケージのインストール

Red Hat Linuxでは、少なくとも:

  • krb5-workstation (for kinit)

  • krb5-libs (for linking with)

  • krb5-devel (because you are compiling from source)

を標準開発環境に追加する必要があることを意味する。

もしも、使用しているシステム上にこれらのファイルがインストールされて いないならば、どこにそれらがあるかをインストールCDでチェックすべきであり、 使用しているツールにあわせてインストールする。もしもどのツールが使っている かが分からない場合は、Red Hat Linuxのドキュメントを参照すること。

SuSE Linuxパッケージでの要求

SuSE Linuxはバイナリパッケージを構築する事が出来るのに必要とされるだろうHeimdal パッケージをインストールする。使用しているシステム上に、開発ライブラリが インストールされているかを調べるべきである。

SuSE Linux のSamba RPMはKerberosをサポートする。SuSE Linux固有の設定に関連する 情報は、使用しているSuSE Linuxシステムのドキュメントを参照して欲しい。さらに、 SuSEは使用可能な機能を最大限提供するように、Sambaパッケージのメンテナンスをとても 頻繁に行っている。使用可能な、SuSEが提供しているパッケージの使用について考慮 すべきである。

smbd nmbdwinbinddの起動

smbd, winbinddnmbdの起動を、デーモンかinetd からの起動のどちらかにするかを選ぶ必要がある。両方同時に行ってはいけない! inetdによって必要時に起動するように、 inetd.confにそれらを記述するか、コマンドラインか、 /etc/rc.localに記述することで、デーモンとして起動できる。 コマンドラインオプションの詳細についてはマニュアルを参照のこと。どのユーザーで Sambaを起動する必要があることについての部分を注意深く読むこと。ほとんどの場合、 rootで起動する必要がある。

推奨される、デーモンによる方法を使ってsmbdnmbdを開始することの利点は、 最初の接続要求時に、若干より迅速に反応すると言うことである。

inetd.confからの起動

Note

以下は、もしもNIS、NIS+あるいはLDAPが分散されたサービスマップを 使っている場合は異なる。

/etc/servicesを見る。ポート139/tcpに何が定義されて いるだろうか?もしも何も定義されていないならば、以下のように行を追加する:

netbios-ssn     139/tcp

137/udpに対して、以下のようなエントリを同様に追加する:

netbios-ns	137/udp

次に、/etc/inetd.confを編集し、以下のように2行追加する:

netbios-ssn stream tcp nowait root /usr/local/samba/sbin/smbd smbd 
netbios-ns dgram udp wait root /usr/local/samba/sbin/nmbd nmbd 

/etc/inetd.confの正しい文法はUNIX毎に異なる。ガイドの inetd.conf中の他の項目を参照すること。

いくつかのディストリビューションはinetdの代わりにxinetdを使っている。 設定情報についてはxinetdのマニュアルを参照すること。

Note

いくつかのUNIXではすでに/etc/services中に netbios_ns(下線に注意)のようなエントリが存在している。整合性を取るために、 /etc/services/etc/inetd.confを 編集する必要がある。

Note

多くのシステムでは、使用しているネットワークインタフェースのIPアドレスと ネットマスクを指定するために、 smb.conf中で interfacesオプションを使う必要があるかもしれない。 使用しているネットワークでの、ブロードキャストが何であるかを知らないのであれば、 rootでifconfigを起動する。nmbdは実行時にそれを 決めようとするが、ある種のUNIXでは失敗する。

Warning

多くのUNIXは、inetd.conf中で、コマンドライン上におおよそ 5つのパラメーターのみを受け付ける。これは、オプションと引数間でスペースが使えない という事を意味するので、そうしたくなければ、スクリプトを使い、 inetd経由でスクリプトを起動する。

おそらく以下のようにHUPを送ることで、inetdを 再起動する:

root# killall -HUP inetd

もう一つの方法: smbdをデーモンとして起動する

サービスをデーモンとして起動するには、startsmbという、 下記のようなスクリプトを作成すべきである。

#!/bin/sh
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/winbindd -D
/usr/local/samba/sbin/nmbd -D

chmod +x startsmbでこれを実行可能にする。

手動か、/etc/rc.localからstartsmbを 実行することが出来る。

これを停止するには、プロセスnmbdsmbdにkillシグナルを送る。

Note

もしも、SVR4形式のinitシステムを使っているならば、そのシステムにSambaを 適合するように、examples/svr4-startupスクリプトを みてやってもよいだろう。

Red Hat LinuxでのSambaの起動

Red Hat Linuxは標準的なインストール状態ではすべてのSambaコンポーネントが 常時含まれるわけではない。そのためRed Hat Linuxのバージョンによっては、 インストールCDROMメディアにあったとしても、winbindユーティリティをインストール しない。システム上にwinbinddがあるかをチェックすること:

root#  ls /usr/sbin/winbindd
/usr/sbin/winbindd

これは、適切なRPMパッケージがインストールされていることを意味する。以下の応答は、 インストールされていない場合である:

/bin/ls: /usr/sbin/winbind: No such file or directory

この場合、winbinddを使うつもりであるならば、インストールが 必要である。samba-winbind RPMをCDROMインストールメディアから捜し、以下の Red Hatガイドラインに従ってインストールする。

Sambaの起動の手順の概要を以下で説明する。Sambaを起動する前に、Sambaの smb.confをきちんと設定しておくこと。設定後、以下のようにしてSambaを 起動する:

root#  service smb start
root#  service winbind start

このステップで nmbd, smbdwinbinddを起動する。

システムが再起動したときに、自動的にこれらのサービスが再起動するようにするには、 以下を実行する:

root#  chkconfig smb on
root#  chkconfig winbind on

Sambaは毎再帰同時に自動的に起動するようになる。

Novell SUSE LinuxにおけるSambaの起動

Novell SuSE Linux 製品は自動的にすべての基本的なSambaコンポーネントを既定値の インストール作業でインストールする。smb.confファイルを設定後、以下を行う 事でSambaを起動する:

root#  rcnmb start
root#  rcsmb start
root#  rcwinbind start

以下のコマンドを実行後、Sambaはシステム再起動後に自動的に起動する:

root#  chkconfig nmb on
root#  chkconfig smb on
root#  chkconfig winbind on

これで、Sambaサーバーはシステム再起動後に自動的に起動する。