[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

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

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)

Python version

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 ~amd64

Я на testing ветке.

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

Вообще-то Самба только с 2.7

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

Samba 4

Попробовал предыдущие версии собрать.
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. А работать на тестовой ветке - ССЗБ! Размаскировать надо с умом и только то, что действительно нужно!

A ты доки по устаноке Самбы читал?

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.

+system-mitkrb5

  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: моя конфигурация Самбы

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 install

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

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

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

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

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

revdep-rebuild может частично

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

.

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

:wq
--
Live free or die

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".