macos
samba
libsmbclient

macOS Sierraにsamba 4.7.4を入れる

libsmbclient-phpが使いたいのだけれど,HomebrewからSambaが消えてしまっていたので自分でビルドした。

ソースの取得・展開

現時点での最新版である4.7.4のソースを公式サイトからダウンロードしてきて展開。

$ curl https://download.samba.org/pub/samba/stable/samba-4.7.4.tar.gz -O
$ tar xzvf samba-4.7.4.tar.gz
$ cd samba-4.7.4

パッチの適用

最近のSambaはmacOS(というかClang)でそのままコンパイル出来ない。パッチがあるのでそれを適用する。
以下のコマンドを実行

$ curl https://attachments.samba.org/attachment.cgi?id=13034 | patch -p0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   280  100   280    0     0    131      0  0:00:02  0:00:02 --:--:--   131
patching file lib/param/loadparm.h

次にmacOSにgetgrent_r()がないことでテストに失敗するのを回避するため次のパッチを適用。
git前提なパッチになっているのでtailsedでちょっと加工する

$ curl http://willhaley.com/images/compile-samba-macos/nss.diff | tail +3 | sed -e 's/ [a|b]\// /' | patch -p0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1179  100  1179    0     0    828      0  0:00:01  0:00:01 --:--:--   827
patching file source4/torture/local/nss_tests.c

./configureの実行

今回はSMBクライアント機能が使いたいだけなので以下の通り./configureを実行。
ActiveDomainあたりは使わない。

$ ./configure \
    --prefix=/opt/samba \
    --without-ad-dc \
    --without-acl-support

makeの実行

実行するだけだよ!

$ make

インストール

$ sudo make install

これで /opt/sambaに一式がインストールされます。必要であればPATHに追加しましょう。

参考文献