Bug 28992

Summary: Обновление до последней версии (2.2.24-alt0.M60T.1) ломает работающий SVN сервер
Product: Branch t6 Reporter: Dank Bagryantsev <4alt>
Component: apache2Assignee: solo <solo>
Status: CLOSED FIXED QA Contact: QA t6 <qa-t6>
Severity: major    
Priority: P3 CC: boyarsh
Version: не указана   
Hardware: all   
OS: Linux   

Description Dank Bagryantsev 2013-05-18 01:39:20 MSK
Сегодня попытался обновится на виртуалке с работающим SVN-сервером.
При обновлении apache2 с версии 2.2.22-alt2 до 2.2.24-alt0.M60T.1
выдало ошибку:
httpd2: Syntax error on line 44 of /etc/httpd2/conf/httpd2.conf: Syntax error on line 2 of /etc/httpd2/conf/mods-enabled/dav_svn.load: Cannot load /usr/lib64/apache2/modules/mod_dav_svn.so into server: /usr/lib64/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
Some errors detected in Apache2 configuration!
To use dav_svn_module check configuration and start httpd2 service.

и в конце:

Running /usr/lib/rpm/posttrans-filetriggers
Reloading httpd2 service:   httpd2: Syntax error on line 44 of /etc/httpd2/conf/httpd2.conf: Syntax error on line 2 of /etc/httpd2/conf/mods-enabled/dav_svn.load: Cannot load /usr/lib64/apache2/modules/mod_dav_svn.so into server: /usr/lib64/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
[FAILED]
/usr/lib/rpm/apache2-mod_php5.filetrigger failed
Stopping httpd2 service: [FAILED]
/usr/lib/rpm/zz80-apache2-base.filetrigger failed
error: execution of /usr/lib/rpm/posttrans-filetriggers scriptlet from (null)-(null)-(null) failed, exit status 1
Done.

Я проверил, файл /usr/lib64/apache2/modules/mod_dav_svn.so существует,
установлен из subversion-server-dav_1.7.8-alt0.M60P.1

Почему этот модуль не загружается после обновления?
Как исправить или обойти эту ошибку?

P.S. Такую же ошибку наблюдаю и на SVN-сервере на базе 5.1
Comment 1 solo 2013-05-23 18:28:25 MSK
  Какие версии apache2-mod_dav на проблемных системах?
Comment 2 solo 2013-05-23 20:01:31 MSK
  Простой тест (установка subversion-server-dav и включение загрузки dav_svn) данной проблемы (на i586) не выявил. (Только ругань на AuthUserFile, пропадает после закоментаривания параметра.)

  Проверял (на i586):

$ rpm -qa|fgrep apache2
...
apache2-httpd-prefork-2.2.24-alt0.M60T.1
...
apache2-mods-2.2.24-alt0.M60T.1
...
apache2-base-2.2.24-alt0.M60T.1

$ rpm -qa|fgrep subversion
subversion-1.7.8-alt0.M60P.1
subversion-server-dav-1.7.8-alt0.M60P.1
libsubversion-1.7.8-alt0.M60P.1
subversion-server-common-1.7.8-alt0.M60P.1
Comment 3 Dank Bagryantsev 2013-05-26 02:19:02 MSK
Я обнаружил эту ошибку на настроенном и работающем SVN-сервере (WebDAV) на базе ALT Linux 5.1 i586. Но, поскольку, я не ожидал, что всё может рассыпаться от обычного, ничем не примечательного обновления, то предварительный бэкап не сделал и теперь воспроизвести ошибку там не могу.
Но эту же ошибку я получил и на настроенном и работающем SVN-сервере (WebDAV) на базе ALT Linux t6 x86_64.
Там установлены:
$ rpm -qa|fgrep apache2
apache2-base-2.2.22-alt2
apache2-cgi-bin-test-cgi-2.2.22-alt2
apache2-cgi-bin-2.2.22-alt2
apache2-icons-2.2.22-alt2
apache2-2.2.22-alt2
apache2-mod_python-3.3.1-alt2.5.2.1.0.M60P.1
apache2-common-2.2.22-alt2
apache2-httpd-worker-2.2.22-alt2
apache2-httpd-prefork-2.2.22-alt2
apache2-cgi-bin-printenv-2.2.22-alt2
apache2-html-2.2.22-alt2
apache2-mod_php5-5.3.10.20120202-alt1
apache2-mod_disk_cache-2.2.22-alt2
apache2-htcacheclean-2.2.22-alt2
apache2-datadirs-2.2.22-alt2

$ rpm -qa|fgrep subversion
libsubversion-1.7.8-alt0.M60P.1
subversion-server-dav-1.7.8-alt0.M60P.1
subversion-1.7.8-alt0.M60P.1
subversion-server-common-1.7.8-alt0.M60P.1
subversion-python-1.7.8-alt0.M60P.1

если сделать apt-get update
и потом в aptitude выбрать для обновления всё в Upgradable Packages, то получается эта ошибка.

Если делать обновление через apt-get upgrade, то выдает:
 apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
  apache2-cgi-bin apache2-cgi-bin-printenv apache2-cgi-bin-test-cgi apache2-datadirs apache2-html apache2-icons apache2-mod_php5 libgcc1 libstdc++6 libxml2 php5 php5-bz2 php5-calendar php5-curl php5-dom php5-fileinfo php5-gd2 php5-imap
  php5-intl php5-libs php5-mbstring php5-mcrypt php5-memcache php5-mysql php5-mysqli php5-openssl php5-soap php5-sockets php5-suhosin php5-tidy php5-xmlrpc php5-xsl php5-zip
The following packages have been kept back
  apache2 apache2-base apache2-htcacheclean apache2-httpd-prefork apache2-httpd-worker apache2-mod_disk_cache
33 upgraded, 0 newly installed, 0 removed and 6 not upgraded.

т.е. фактически apache2 не обновляется и ошибка не проявляется.
Если же обновлять через apt-get dist-upgrade, то как и в случае с aptitude, я получаю:
...
35: apache2-base                                                                                                                  warning: /etc/httpd2/conf/httpd2.conf created as /etc/httpd2/conf/httpd2.conf.rpmnew                (  4%)
################################################################################################### [ 81%]
Set owner root:apache2 for /var/run/httpd2
Set 2775 attr for /var/run/httpd2
36: apache2-httpd-prefork                                                                                                         ################################################################################################### [ 83%]
37: apache2-mod_disk_cache                                                                                                        ################################################################################################### [ 86%]
grep: /etc/sysconfig/htcacheclean: No such file or directory
grep: /etc/sysconfig/htcacheclean: No such file or directory
grep: /etc/sysconfig/htcacheclean: No such file or directory
grep: /etc/sysconfig/htcacheclean: No such file or directory
grep: /etc/sysconfig/htcacheclean: No such file or directory
38: apache2-htcacheclean                                                                                                          ################################################################################################### [ 88%]
control-restore: Status "unknown" for "htcacheclean-run" facility cannot be restored
control-restore: Status "unknown" for "htcacheclean-mode" facility cannot be restored
39: apache2-mods                                                                                                                  ################################################################################################### [ 90%]
40: apache2-httpd-worker                                                                                                          ################################################################################################### [ 93%]
41: apache2-mod_php5                                                                                                              warning: /etc/php/5.3/apache2-mod_php/php.ini created as /etc/php/5.3/apache2-mod_php/php.ini.rpmnew( 88%)
################################################################################################### [ 95%]
warning: /etc/php/5.3/apache2-mod_php/php.d/suhosin.ini created as /etc/php/5.3/apache2-mod_php/php.d/suhosin.ini.phpnew
Running /usr/lib/rpm/posttrans-filetriggers
Reloading httpd2 service:   httpd2: Syntax error on line 44 of /etc/httpd2/conf/httpd2.conf: Syntax error on line 2 of /etc/httpd2/conf/mods-enabled/dav_svn.load: Cannot load /usr/lib64/apache2/modules/mod_dav_svn.so into server: /usr/lib64/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
[FAILED]
/usr/lib/rpm/apache2-mod_php5.filetrigger failed
Stopping httpd2 service: [FAILED]
/usr/lib/rpm/zz80-apache2-base.filetrigger failed
error: execution of /usr/lib/rpm/posttrans-filetriggers scriptlet from (null)-(null)-(null) failed, exit status 1
Done.
Comment 4 solo 2013-05-26 16:54:54 MSK
  Похоже у вас происходит попытка загрузки dav_svn_module до загрузки dav_module.

  Прошу проверить: существует ли у вас линки /etc/httpd2/conf/mods-enabled/dav.{load,conf} и на правильные ли файлы они указывают.

PS: Ситуацию похожую на вашу, я смоделировал так (на p6):

$ sudo -H a2enmod dav_svn
Enabling dav as a dependency
Module dav installed;
        run service httpd2 condreload to fully enable.
Module dav_svn installed;
        run service httpd2 condreload to fully enable.

$ sudo -H httpd2 -M
...
 dav_module (shared)
 dav_svn_module (shared)
...
Syntax OK

$ sudo -H rm -f /etc/httpd2/conf/mods-enabled/dav.*

$ sudo -H httpd2 -M
httpd2: Syntax error on line 45 of /etc/httpd2/conf/httpd2.conf: Syntax error on line 2 of /etc/httpd2/conf/mods-enabled/dav_svn.load: Cannot load /usr/lib/apache2/modules/mod_dav_svn.so into server: /usr/lib/apache2/modules/mod_dav_svn.so: undefined symbol: dav_register_provider

  Вернул в нормальное состояние через:

$ sudo -H a2enmod dav
Comment 5 solo 2013-05-27 19:33:09 MSK
(В ответ на комментарий №4)
>   Похоже у вас происходит попытка загрузки dav_svn_module до загрузки
> dav_module.
> 
>   Прошу проверить: существует ли у вас линки
> /etc/httpd2/conf/mods-enabled/dav.{load,conf} и на правильные ли файлы они
> указывают.

  Думаю здесь возможны 2 варианта:

1) нерабочие ссылки;

2) неверный порядок загрузки модулей.

  Вариант 1 исправить будет проще...
Comment 6 Dank Bagryantsev 2013-05-28 14:09:12 MSK
Как оказалось, при обновлении удалялись ссылки /etc/httpd2/conf/mods-enabled/dav.{load,conf}
С одной стороны, логично, т.к. в /etc/httpd2/conf/mods-start.d/ указание на подгрузку этого модуля я не нашел.
Но с другой стороны, желательно бы поставить зависимость, что модуль dav должен быть обязательно включен, если включается dav_svn.
Спасибо!
Comment 7 solo 2013-05-28 23:11:03 MSK
(В ответ на комментарий №6)
> Как оказалось, при обновлении удалялись ссылки
> /etc/httpd2/conf/mods-enabled/dav.{load,conf}
> С одной стороны, логично, т.к. в /etc/httpd2/conf/mods-start.d/ указание на
> подгрузку этого модуля я не нашел.
> Но с другой стороны, желательно бы поставить зависимость, что модуль dav должен
> быть обязательно включен, если включается dav_svn.

  Оно там есть. Наличие в /etc/httpd2/conf/mods-available/dav_svn.load строки:

# Depends: dav

  Приводит к тому, что при вызове a2enmod dav_svn модуль dav подключается тоже:

$ sudo -H a2enmod dav_svn
Enabling dav as a dependency
Module dav is already enabled!
Module dav installed;
        run service httpd2 condreload to fully enable.
Module dav_svn installed;
        run service httpd2 condreload to fully enable.

  a2dismod эту информацию тоже учитывает:

$ sudo -H a2dismod dav
The following modules depend on the module you requested be uninstalled:
dav_svn
Please uninstall these first

  Скорее всего проблема в том, что если ссылка уже /etc/httpd2/conf/mods-enabled/<module>.load существует, то при вызове a2enmod <module> зависимости не проверяются.
Comment 8 Repository Robot 2013-05-29 00:49:43 MSK
apache2-2.2.24-alt2 -> sisyphus:

* Tue May 28 2013 Aleksey Avdeev <solo@altlinux> 2.2.24-alt2
- In a2enmod aobavlena mandatory dependency checking for inclusion
  (Closes: #28992)
Comment 9 solo 2013-05-29 12:38:42 MSK
(В ответ на комментарий №8)
> apache2-2.2.24-alt2 -> sisyphus:
> 
> * Tue May 28 2013 Aleksey Avdeev <solo@altlinux> 2.2.24-alt2
> - In a2enmod aobavlena mandatory dependency checking for inclusion
>   (Closes: #28992)

  Т. е. теперь при вызове a2enmod <module>, a2enmod для модулей от которых зависит подключаемый зависимостей вызывается всегда. => для модулей отмеченных как yes в выводе a2chkconfig_list, при вызове a2chkconfig (что и делает триггер) все зависимости будут подключаться. => вызов a2chkconfig будет приводить симлинки к состоянию заданному start`файлами независимо от того, удалялись ли какие нибудь симлинки нештатными средствами (не через a2dismod).
Comment 10 Anton V. Boyarshinov 2013-05-29 12:50:24 MSK
> aobavlena mandatory dependency checking for inclusion

Ты просто адски жжошь!
Comment 11 solo 2013-05-29 13:02:04 MSK
(В ответ на комментарий №10)
> > aobavlena mandatory dependency checking for inclusion
> 
> Ты просто адски жжошь!

  Результат translate.google.com
Comment 12 solo 2013-05-29 13:06:48 MSK
(В ответ на комментарий №11)
> (В ответ на комментарий №10)
> > > aobavlena mandatory dependency checking for inclusion
> > 
> > Ты просто адски жжошь!
> 
>   Результат translate.google.com

  Должно было быть:

In a2enmod added a mandatory dependency checking for inclusion.

  apache2-2.2.24-alt3, с исправленным changelog`ом заливать?
Comment 13 Anton V. Boyarshinov 2013-05-29 13:26:23 MSK
(В ответ на комментарий №11)
> (В ответ на комментарий №10)
> > > aobavlena mandatory dependency checking for inclusion
> > 
> > Ты просто адски жжошь!
> 
>   Результат translate.google.com
garbage in, garbage out
Comment 14 solo 2013-05-29 15:55:18 MSK
(В ответ на комментарий №13)
> (В ответ на комментарий №11)
> > (В ответ на комментарий №10)
> > > > aobavlena mandatory dependency checking for inclusion
> > > 
> > > Ты просто адски жжошь!
> > 
> >   Результат translate.google.com
> garbage in, garbage out

  Да.

  В apache2-2.2.24-alt3 исправил так: http://git.altlinux.org/people/solo/packages/apache2.git?p=apache2.git;a=commitdiff;h=c5fdbb9c5666045c99105582cc26a520d5118fe0