らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

Amazon Linux2 に Samba 4.11.1 をソースコードからインストールする

Samba 4.11.1 がリリースされていましたので、改めて Amazon Linux2 へ Samba 4.11.1 をソースコードからインストールする手順をメモしておきます。 Samba 4.11.0 では Python2 のサポートが無くなる等、幾つか大きな変更がありました。 Samba 4.11.0 → 4.11.1 は Bug Fix のみであり、新機能の追加/機能の削除等は無いようです。

ゴール

今回は最終的に以下の環境を構築します。

EPEL の有効化

Samba をインストールする事前準備として、前提となるパッケージをインストールします。 EPEL (Extra Packages for Enterprise Linux) からパッケージをインストールすることになりますが、AmazonLinux2 なので amazon-linux-extras を使って EPEL リポジトリをインストールします。

yes | amazon-linux-extras install epel

必要パッケージのインストール

必要なパッケージをインストールしていきます。 Amazon Linux2 は初期状態で Python2 がインストールされています。 しかし、Samba 4.11 のリリースノート の REMOVED FEATURES 欄によると 4.11 からは Python2 サポートが無くなったようです。

Samba 4.11 will not have any runtime support for Python 2.

If you are building Samba using the '--disable-python' option (i.e. you're excluding all the run-time Python support), then this will continue to work on a system that supports either python2 or python3.

その為、python3-devel をインストールし、Python3 が利用出来るようにします。

yum -y install \
    docbook-style-xsl \
    gcc \
    gdb \
    gnutls-devel \
    gpgme-devel \
    jansson-devel \
    keyutils-libs-devel \
    krb5-workstation \
    libacl-devel \
    libaio-devel \
    libarchive-devel \
    libattr-devel \
    libblkid-devel \
    libtasn1 \
    libtasn1-tools \
    libxml2-devel \
    libxslt \
    lmdb-devel \
    openldap-devel \
    perl \
    perl-ExtUtils-MakeMaker \
    perl-Parse-Yapp \
    popt-devel \
    python3-devel \
    readline-devel \
    systemd-devel \
    tar \
    zlib-devel

追加で pam-devel もインストールします。 先にインストールしたパッケージ群と同時に pam-devel をインストールしようとすると上手くいかない (pam-devel がインストールされない) 為、pam-devel は別にインストールします。

yum -y install pam-devel

Samba をソースコードからインストールする

現時点ではリポジトリからインストール出来るのは 4.8.3 とバージョンがやや古く、少なくても 2 カ月以上アップデートされていません。 しかも、この 4.8.3 のパッケージには Samba をドメインコントローラとして構築する際には多用することになる samba-tool がなぜかインストールされません。 この件についてはネット上でも How to install samba-tool on Amazon Linux と質問されている方がおり、現時点では回答されていません。

# yum info samba
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
187 packages excluded due to repository priority protections
Available Packages
Name        : samba
Arch        : x86_64
Version     : 4.8.3
Release     : 4.amzn2.0.1
Size        : 682 k
Repo        : amzn2-core/2/x86_64
Summary     : Server and Client software to interoperate with Windows machines
URL         : http://www.samba.org/
License     : GPLv3+ and LGPLv3+
Description : Samba is the standard Windows interoperability suite of programs for Linux and
            : Unix.

その為、今回はソースコードから Samba をインストールしていきます。 Samba 4.10 系までは PYTHON=python2 を指定することで Python2 で Samba をビルド出来たのですが、Samba 4.11 系からは Python2 系がサポートされなくなりました。 しかし、今回は Python3 をインストールしてあるので、Python バージョンを指定せず、そのまま ./configure; make; make install します。

mkdir -p /usr/local/src/samba/
cd /usr/local/src/samba/
wget https://download.samba.org/pub/samba/samba-latest.tar.gz
tar zxvf samba-latest.tar.gz
cd samba-4.11.1/
./configure
make
make install

パスを追加する

ソースコードから Samba をインストールした場合、パスを指定しない限り実行ファイルは /usr/local/samba/bin 配下にインストールされます。 標準でここにはパスが通っていない為、利便性を考えてパスを通しておきます。 今回は root ユーザで操作することだけを想定し、/root/.bash_profile にパスを追加しました。

echo "export PATH=\"/usr/local/samba/bin:/usr/local/samba/sbin:${PATH}\"" >> ~/.bash_profile

パス追加後は source ~/.bash_profile するか、または SSH アクセスをログアウト / ログインし直してパス追加を反映します。 これで Samba 4.11.1 のインストールは完了です。 以降は必要に応じてドメインの設定等を実施していきます。