Bug 34023

Summary: Не работает SLAPDURLLIST="'ldapi:///'"
Product: Sisyphus Reporter: Lenar Shakirov <snejok>
Component: openldap-serversAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: aas, boyarsh, imz, klark.devel, klark, lav, ldv, mike, rider, shaba, slev, sotor, vitty, viy
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 10382    
Bug Blocks:    

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).