Bug 34023 - Не работает SLAPDURLLIST="'ldapi:///'"
: Не работает SLAPDURLLIST="'ldapi:///'"
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/openldap-servers)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
: 10382
:
  Show dependency tree
 
Reported: 2017-10-18 11:44 by
Modified: 2017-10-27 18:37 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2017-10-18 11:44:10
Не работает 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 From 2017-10-18 12:51:26 -------
Для того, чтобы привести макрос _localstatedir в соответствие федориному,
достаточно дописать
BuildRequires: rpm-build-intro.

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

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


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

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

Замечательный способ отстрелить себе логи.
------- Comment #4 From 2017-10-25 06:38:21 -------
Можно тестировать исправленный пакет из http://git.altlinux.org/tasks/192208/
------- Comment #5 From 2017-10-25 08:48:48 -------
Сергей, поставь пожалуйста задачу протестировать новую сборку openldap.
------- Comment #6 From 2017-10-27 10:47:51 -------
Проверили на ALT домене. Всё работает.
------- Comment #7 From 2017-10-27 18:37:18 -------
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).