Bug 34023 - Не работает SLAPDURLLIST="'ldapi:///'"
Summary: Не работает SLAPDURLLIST="'ldapi:///'"
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: openldap-servers (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 10382
Blocks:
  Show dependency tree
 
Reported: 2017-10-18 11:44 MSK by Lenar Shakirov
Modified: 2017-10-27 18:37 MSK (History)
14 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lenar Shakirov 2017-10-18 11:44:10 MSK
Не работает SLAPDURLLIST="'ldapi:///'"

Причина: altbug#10382

...
socket(AF_UNIX, SOCK_STREAM, 0)         = 11
unlink("/var/lib/run/ldapi")            = -1 ENOENT (No such file or directory)
umask(000)                              = 022
bind(11, {sa_family=AF_UNIX, sun_path="/var/lib/run/ldapi"}, 110) = -1 ENOENT (No such file or directory)
...

Временно собрал себе так:
$ sed 's/_localstatedir/_sharedstatedir/g' -i openldap.spec
$ head -n1 openldap.spec
%define _localstatedir /var

Пример правильного использования макросов _localstatedir и _sharedstatedir можно посмотреть у Fedora:

$ egrep '(localstate|sharedstate)' /tmp/fedora-openldap.spec

mkdir -p %{buildroot}%{_sharedstatedir}
mkdir -p %{buildroot}%{_localstatedir}
install -m 0700 -d %{buildroot}%{_sharedstatedir}/ldap
install -m 0755 -d %{buildroot}%{_localstatedir}/run/openldap
rm -f %{buildroot}%{_localstatedir}/openldap-data/DB_CONFIG.example
rmdir %{buildroot}%{_localstatedir}/openldap-data
        useradd -r -g ldap -u 55 -d %{_sharedstatedir}/ldap -s /sbin/nologin -c "OpenLDAP server" ldap
                touch %{_sharedstatedir}/ldap/rpm_upgrade_openldap &>/dev/null
if [ -f %{_sharedstatedir}/ldap/rpm_upgrade_openldap ]; then
        rm -f %{_sharedstatedir}/ldap/rpm_upgrade_openldap
                touch %{_sharedstatedir}/ldap/rpm_upgrade_libdb
                rm -f %{_sharedstatedir}/ldap/rpm_upgrade_libdb
if [ -f %{_sharedstatedir}/ldap/rpm_upgrade_libdb ]; then
        rm -f %{_sharedstatedir}/ldap/rpm_upgrade_libdb
%dir %attr(0700,ldap,ldap) %{_sharedstatedir}/ldap
%dir %attr(-,ldap,ldap) %{_localstatedir}/run/openldap
Comment 1 Vitaly Lipatov 2017-10-18 12:51:26 MSK
Для того, чтобы привести макрос _localstatedir в соответствие федориному, достаточно дописать
BuildRequires: rpm-build-intro.

Но в спеке есть конструкции вида
%__mkdir_p -m750 %buildroot/%_localstatedir/ldap
они явно сломаются. Потому что run-то должен быть в /var/run, но ldap должен быть /var/lib/ldap.

И я бы заодно обсудил
%_rundir


А использование _sharedstatedir в приведённом примере выглядит очень неплохо.
Comment 2 Leonid Krivoshein 2017-10-23 18:09:05 MSK
А вот так работает:

/etc/sysconfig/ldap
SLAPDURLLIST="'ldapi://%2fvar%2flib%2fldap%2fdev%2flog'"
Comment 3 Dmitry V. Levin 2017-10-25 06:36:44 MSK
(In reply to comment #2)
> А вот так работает:
> 
> /etc/sysconfig/ldap
> SLAPDURLLIST="'ldapi://%2fvar%2flib%2fldap%2fdev%2flog'"

Замечательный способ отстрелить себе логи.
Comment 4 Dmitry V. Levin 2017-10-25 06:38:21 MSK
Можно тестировать исправленный пакет из http://git.altlinux.org/tasks/192208/
Comment 5 Anton Farygin 2017-10-25 08:48:48 MSK
Сергей, поставь пожалуйста задачу протестировать новую сборку openldap.
Comment 6 Antonov Alexander 2017-10-27 10:47:51 MSK
Проверили на ALT домене. Всё работает.
Comment 7 Repository Robot 2017-10-27 18:37:18 MSK
openldap-2.4.45-alt2 -> sisyphus:

Tue Oct 24 2017 Dmitry V. Levin <ldv@altlinux.org> 2.4.45-alt2
- slapd:
  + dropped bogus chown from %pre script;
  + fixed ldapi:/// (closes: #34023).