Вы здесь

[SOLVED] Проблема со сборкой samba

Не собирается samba.

Часть лога:


WAF_MAKE=1 /usr/bin/python2.7 ./buildtools/bin/waf build
Waf: Entering directory `/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/bin'
Selected system MIT krb5 libraries, Heimdal use is disabled
/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/wscript: error: Traceback (most recent call last):
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 647, in recurse
exec(compile(txt, file_path, 'exec'), dc)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/wscript_build", line 148, in
bld.RECURSE('lib')
File "./buildtools/wafsamba/samba_utils.py", line 472, in RECURSE
return ctx.add_subdirs(relpath)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Build.py", line 993, in add_subdirs
self.recurse(dirs, 'build')
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 650, in recurse
raise WscriptError("".join(traceback.format_exception(exc_type, exc_value, tb)), base)
WscriptError: /var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/lib/wscript: error: Traceback (most recent call last):
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 647, in recurse
exec(compile(txt, file_path, 'exec'), dc)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/lib/wscript_build", line 18, in
__import__(module)
File "/usr/lib64/python2.7/site-packages/dns/resolver.py", line 35, in
import dns.message
File "/usr/lib64/python2.7/site-packages/dns/message.py", line 191
print('id %d' % self.id, file=s)
^
SyntaxError: invalid syntax

Полный лог сборки и --info

Я так понимаю, это какая-то беда с питоном? Поигрался eselect python -- не помогло.

Как всегда, надо бы:

emerge --sync
emerge --info
emerge -uDN --with-bdeps=y --backtrack=30 samba -pv

И да, - для каких целей Самба: просто десктоп или сервер в АДе?

Выполнил: https://gist.github.com/YoukaiCat/9e94db53cefe71aded46e044fe3ce664

Десктоп, хотел директорию расшарить для машины под виндой.

Вот это вот мне не нравится:


/ # sudo eselect python list
Available Python interpreters, in order of preference:
[1] python2.7
[2] python3.5
[3] python3.4
/ # equery list dev-lang/python
* Searching for python in dev-lang ...
[IP-] [ ] dev-lang/python-2.7.12:2.7
[IP-] [ ] dev-lang/python-3.5.2:3.5/3.5m

eselect видит 2 версии питона третьей ветки, фактически установлена одна. И нет звёздочки, которая есть в выводе других eselect-скриптов. Точно какой-то косяк.

Что мешает звёздочку поставить?

Как оказывается, звездочки в этом модуле больше нет.
https://wiki.gentoo.org/wiki/Project:Python/python-exec

Снёс конфиг, теперь с версиями всё в порядке:


~ $ eselect python list
Available Python interpreters, in order of preference:
[1] python2.7
[2] python3.5 (fallback)

YoukaiCat написал:
...
Вот это вот мне не нравится:


/ # sudo eselect python list
Available Python interpreters, in order of preference:
[1] python2.7
[2] python3.5
[3] python3.4
/ # equery list dev-lang/python
* Searching for python in dev-lang ...
[IP-] [ ] dev-lang/python-2.7.12:2.7
[IP-] [ ] dev-lang/python-3.5.2:3.5/3.5m

...

Откуда вообще версия 3.5 взялась? Она ж нестабильна.

Я на testing ветке.

https://packages.gentoo.org/packages/dev-lang/python
3.5 там уже давно.

Вообще-то Самба только с 2.7 собирается...

Попробовал предыдущие версии собрать.
4.2.11 (стабильная) не собирается
3.6.25 успешно собирается.
Значит, проблема в версиях 4 ветки.

3.6 для моих задач вполне хватит. Но это странно всё, конечно.

YoukaiCat написал:
Попробовал предыдущие версии собрать.
4.2.11 (стабильная) не собирается
...
Значит, проблема в версиях 4 ветки.
...Но это странно всё, конечно.

Да ладно!
У меня сейчас net-fs/samba-4.2.14 как домен-контроллер в связке с Вин2012 работает!
И net-fs/samba-4.2.11, разумеется, также компилилась без проблем...

P.S. А работать на тестовой ветке - ССЗБ! Размаскировать надо с умом и только то, что действительно нужно!

YoukaiCat написал:
Не собирается samba.


WAF_MAKE=1 /usr/bin/python2.7 ./buildtools/bin/waf build
Waf: Entering directory `/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/bin'
Selected system MIT krb5 libraries, Heimdal use is disabled
...

...

A ты доки по установке Самбы читал? Вот, например:

On Gentoo, you have two choices for a kerberos implementation, app-crypt/mit-krb5 and app-crypt/heimdal. Unfortunately the two implementations can not be installed at the same time. Currently, the Samba only supports app-crypt/heimdal. So you must first uninstall app-crypt/mit-krb5, if installed. Then install app-crypt/heimdal and rebuild any packages that were using the previous kerberos implementation.

  1. Снёс app-crypt/mit-krb5
  2. поставил app-crypt/heimdal
  3. пересобрал зависимые пакеты
  4. отключил юз флаг system-mitkrb5 (дефолтный) у самбы

Ничего не поменялось, не считая "Selected system Heimdal build"

Лог:


>>> Compiling source in /var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14 ...
* abi_x86_32.x86: running multilib-minimal_abi_src_compile
make -j5
WAF_MAKE=1 /usr/bin/python2.7 ./buildtools/bin/waf build
Waf: Entering directory `/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/bin'
Selected system Heimdal build
/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/wscript: error: Traceback (most recent call last):
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 647, in recurse
exec(compile(txt, file_path, 'exec'), dc)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/wscript_build", line 148, in
bld.RECURSE('lib')
File "./buildtools/wafsamba/samba_utils.py", line 472, in RECURSE
return ctx.add_subdirs(relpath)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Build.py", line 993, in add_subdirs
self.recurse(dirs, 'build')
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 650, in recurse
raise WscriptError("".join(traceback.format_exception(exc_type, exc_value, tb)), base)
WscriptError: /var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/lib/wscript: error: Traceback (most recent call last):
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/buildtools/wafadmin/Utils.py", line 647, in recurse
exec(compile(txt, file_path, 'exec'), dc)
File "/var/tmp/portage/net-fs/samba-4.2.14/work/samba-4.2.14-abi_x86_32.x86/lib/wscript_build", line 18, in
__import__(module)
File "/usr/lib64/python2.7/site-packages/dns/resolver.py", line 35, in
import dns.message
File "/usr/lib64/python2.7/site-packages/dns/message.py", line 191
print('id %d' % self.id, file=s)
^
SyntaxError: invalid syntax

FYI: моя конфигурация Самбы для домен-контроллера в АДе:

[ebuild   R   ~] net-fs/samba-4.2.14::gentoo  USE="acl addc addns ads aio client gnutls ldap pam syslog systemd winbind -avahi -cluster -cups -dmapi -fam -iprint -quota (-selinux) -system-mitkrb5 {-test}" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 0 KiB

Дай /var/tmp/portage/net-fs/samba-4.2.14/temp/build.log и перепроверь, что все соответствует - может забыл чего...

Проблема решилась, спасибо.

Оказалось у меня через pip был установлен dnspython3, который импортировался при сборке и вызывал синтаксическую ошибку. По всей видимости, я когда-то ошибся (либо с зависимостями) и вместо dnspython (который обе версии питона поддерживает), поставил dnspython3, который есть в единственной версии и поддерживает python3.

При этом в ebuild такой зависимости нет. В вики самбы эта зависимость есть, но с пометкой "FIXME: Are dev-python/dnspython net-dns/libidn still required?".

Печально, что в pip нет возможности отслеживать совместимость интерпретатора и пакета.

Пойду проверю, нет ли ещё чего-нибудь установленного вне портажа. Кстати, нет ли скрипта какого-нибудь для таких целей?

revdep-rebuild может частично помочь, но только если программы/библиотеки сломаны (например, по зависимостям и/или некорректным библиотекам).

Ещё где-то есть, где-то были python-updater и perl-cleaner.

:wq
--
Live free or die