Sambaをソースからインストール

OS: Ubuntu Server 18.04
Samba 4.11.2

Sambaサーバの導入時にいつも多数のエラーに見舞われて躓くから、此れを僅かでも楽ちんにする手助けとしてインストールの成功までを記録するものである。まずはソースコードを準備して解凍・展開し、configureスクリプトを実行する。

$ wget -c https://download.samba.org/pub/samba/stable/samba-4.11.2.tar.gz
$ wget -c https://download.samba.org/pub/samba/stable/samba-4.11.2.tar.asc
$ gunzip samba-4.11.2.tar.gz

$ gpg --recv-keys 52FBC0B86D954B0843324CDC6F33915B6568B7EA
$ gpg --verify samba-4.11.2.tar.asc
(snip)
gpg: Good signature from "Samba Distribution Verification Key " [unknown]

$ tar xvf samba-4.11.2.tar
$ cd samba-4.11.2/
$ ./configure

そうするといくらもしないうちにエラーメッセージが現れる。一つ解決しても又出る。次々出る。メッセージから容易に解決策が見つかるものもあるけれども、どうしても判然としないものもある。これらの知見をひとところに纏めておくのが肝要であろうとおもう。

エラーメッセージ対応策
The distutils module is unusable: install “python-devel”?一見すると libpython3-dev の導入で解決しそうな風情であるけれども、ちっとも改善される気配がなかった。 bin/config.log を調べてみると ModuleNotFoundError: No module named 'distutils.sysconfig'というメッセージが残されており、これを解決するには python3-distutils パッケージを導入すると良いようである。
Checking for header Python.h : Distutils not installed? Broken python installation? Get python-config now!一見すると python-config の導入で解決しそうな風情であるけれどもそういったパッケージが見当たらなくて困った。 libpython3-dev パッケージが解決してくれた。
Samba AD DC and –enable-selftest requires lmdb 0.9.16 or laterActive Directory Domain ControllerとしてSambaの構築に取り組むつもりで無ければ --without-ad-dc オプションを付与してconfigureスクリプトを再実行する。取り組むのであれば liblmdb-dev パッケージをインストールすれば宜しい気色であるけれども、aptで探ってもどうしてかパッケージが見当たらないから GitHub – LMDB/lmdb からリポジトリをクローンしてビルドする必要があった。
Checking for program ‘pkg-config’ : not found
Checking for GnuTLS >= 3.2.0 : not found
pkg-configlibgnutls28-dev のパッケージをいっぺんに二つとも導入すればよかった。
Checking for jansson : not found Jansson JSON support not found. Try installing libjansson-dev or jansson-devel. Otherwise, use –without-json to build without JSON support. JSON support is required for the JSON formatted audit log feature, the AD DC, and the JSON printers of the net utilityJSON形式で監査ログを出力したり、Active Directory Domain Controllerをセットアップする場合には libjansson-dev パッケージを導入すれば宜しい。不要であれば --without-json オプションを付与する。
Checking for header archive.h : no libarchive support not found. Try installing libarchive-dev or libarchive-devel. Otherwise, use –without-libarchive to build without libarchive support. libarchive support is required for the smbclient tar-file modesmbclientからtar-fileモードを使用する場合に必要、とあるけれども全体どういうものか判然としない。不要と判断を下すなら --without-libarchive オプションを付与するだけである。一方、無くてはならない向きには libarchive-dev パッケージを導入する。
Checking for acl_get_fd : not found
ACL support not found. Try installing libacl1-dev or libacl-devel. Otherwise, use –without-acl-support to build without ACL support. ACL support is required to change permissions from Windows clients.
Windowsクライアントからパーミッションを変更する場合は libacl1-dev パッケージが必要になる。そういった機能に出番を求めていないなら --without-acl-support オプションで宜しい。
LDAP support not found. Try installing libldap2-dev or openldap-devel. Otherwise, use –without-ldap to build without LDAP support. LDAP support is required for the LDAP passdb backend, LDAP idmap backends and ADS. ADS support improves communication with Active Directory domain controllers.LDAPのサポートはお呼びでないなら --without-ldap オプションを付与してconfigureスクリプトを再実行する。欠くことの許されない場合は libldap2-dev パッケージの出番となる。
Active Directory support not available: LDAP support is not available. Active Directory support not found. Use –without-ads for building without Active Directory support. ADS support improves communication with Active Directory domain controllers.Active Directoryをサポートせずともよいならば --without-ads の付与で終いである。必需と考えるなら libldap2-dev が入用である。
PAM support is enabled but prerequisite libraries or headers not found. Use –without-pam to disable PAM support.PAMで以って認証を実施するためには libpam0g-dev が必要となるけれども要らない機能と見るならば --without-pam オプションを付与する。
Checking for gpgme_new : not found GPGME support not found. Try installing libgpgme11-dev or gpgme-devel and python-gpgme. Otherwise, use –without-gpgme to build without GPGME support or –without-ad-dc to build without the Samba AD DC. GPGME support is required for the GPG encrypted password sync feature GPGME(GnuPG Made Easy)の機能はActive Directory Domain Controllerを導入する場合に併せて求められる模様である。libgpgme-dev パッケージの導入で解決できた。--without-gpgme オプションを付加すればGPGMEを使用しない。
表1. エラーメッセージと対応策

何らオプションを付け加えないでconfigureスクリプトを実施するなら、lmdbを手ずからビルドし、次いで必要となるパッケージを一遍にインストールしてやれば宜しい。

$ git clone https://github.com/LMDB/lmdb.git
$ cd lmdb/libraries/liblmdb/
$ make
$ sudo make install

$ sudo apt install python3-distutils libpython3-dev pkg-config libgnutls28-dev libjansson-dev libarchive-dev libacl1-dev libldap2-dev libldap2-dev libpam0g-dev libgpgme-dev

$ ./configure
(snip)
'configure' finished successfully (49.706s)

$ make
$ sudo make install
$ /usr/local/samba/sbin/smbd -V
Version 4.11.2
図1. configureスクリプトを実施した様子

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください