KUSONEKOの見る世界

CentOS 8 で Samba 4.14.2 にアップデート

Sambaをしばらく放置しており、かなりバージョンが上がっていたので、アップデートしました。 

その時のメモを記載します。

パッケージが不足

詳細は忘れてしまいましたが、いつだったか依存関係の問題があり、一部パッケージを削除していました。
powertools レポジトリの有効化して、インストールし直しました。

./configure
(略)
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
(complete log in /root/samba-4.14.2/bin/config.log)
dnf config-manager --enable powertools
dnf install gpgme-devel
./configure
(略)
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 mode
(complete log in /root/samba-4.14.2/bin/config.log)
dnf install libarchive-devel

python3-markdown

これは今まで要求されなかったと思います。

./configure
(略)
Unable to find Python module 'markdown'. Please install the system package: python3-markdown'.
dnf install python3-markdown

make通らず

以下の通り、makeが通りませんでした。

make
(略)
[380/431] Compiling source4/heimdal/lib/asn1/lex.l
Waf: Leaving directory `/root/samba-4.14.2/bin/default'
Build failed
Traceback (most recent call last):
  File "/root/samba-4.14.2/third_party/waf/waflib/Context.py", line 452, in cmd_and_log
    ret, out, err = Utils.run_process(cmd, kw, cargs)
  File "/root/samba-4.14.2/third_party/waf/waflib/Utils.py", line 992, in run_process
    return run_prefork_process(cmd, kwargs, cargs)
  File "/root/samba-4.14.2/third_party/waf/waflib/Utils.py", line 927, in run_prefork_process
    raise Exception(trace)
Exception: ['--noline', '../../source4/heimdal/lib/asn1/lex.l']
Traceback (most recent call last):
  File "<string>", line 37, in run
  File "/usr/lib64/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib64/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '--noline': '--noline'


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/root/samba-4.14.2/third_party/waf/waflib/Task.py", line 350, in process
    ret = self.run()
  File "./buildtools/wafsamba/samba_waf18.py", line 29, in flexfun
    txt = bld.cmd_and_log(lst, cwd=tsk.get_cwd(), env=env.env or None, quiet=0)
  File "/root/samba-4.14.2/third_party/waf/waflib/Context.py", line 454, in cmd_and_log
    raise Errors.WafError('Execution failure: %s' % str(e), ex=e)
waflib.Errors.WafError: Execution failure: ['--noline', '../../source4/heimdal/lib/asn1/lex.l']
Traceback (most recent call last):
  File "<string>", line 37, in run
  File "/usr/lib64/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib64/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '--noline': '--noline'

情報が見つからず困っていましたが、本日、丁度よく以下のコード修正がありました。
https://github.com/samba-team/samba/commit/942c0d2128cb8e64a9354dde6bdae82a1c1c3d88

結局の所、flexが入っていないと起こるようです。
コードを修正し、./configureをすると以下のように、flexが要求されるようになりました。

Checking for program 'flex'                                                                     : not found
Embedded Heimdal build requires flex but it was not found.  Install flex or use --with-system-mitkrb5 or --with-system-heimdalkrb5
(complete log in /root/samba-4.14.2/bin/config.log)
dnf install flex

flexを入れればコードを修正しなくても、./configure && make が通ります。

2021/04/21 追記

こちらの修正は、4.14.3に反映されていました。