ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Aleksey Avdeev <solo@solin.spb.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях
Date: Thu, 30 Oct 2008 04:43:14 +0300
Message-ID: <49091132.1080606@solin.spb.ru> (raw)
In-Reply-To: <20081029224503.GC5490@wo.int.altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 4751 bytes --]

Dmitry V. Levin пишет:
> On Wed, Oct 29, 2008 at 11:45:54PM +0300, Aleksey Avdeev wrote:
> [...]
>>   В общем нам надо применять противограбливые меры. Предлагаю следующие:
>>
>> 1. Версию используемой libdb фиксировать в спеке aprutil1 явным образом. 
> 
> Настоятельно прошу сперва прочесть и понять dsohowto.pdf, а потом уже
> задавать вопросы, делать выводы и принимать меры.

   На данный момент ситуация такова:

1. Имея 4.0/branch в качестве источника ставим apache2 (2.2.6-alt4) и 
subversion-server-dav (1.4.4-alt1). При этом по зависимостям к нам 
приплывают libaprutil1 (1.2.8-alt2). Всё это хозяйство благополучно 
использует libdb-4.4.so:

$ ldd /usr/sbin/httpd2.prefork
...
         libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 
(0x00002aad8cbe6000)
...
         libdb-4.4.so => /lib64/libdb-4.4.so (0x00002aad8d9f2000)

$ readelf -d /usr/sbin/httpd2.prefork
...
  0x0000000000000001 (NEEDED)             Shared library: 
[libaprutil-1.so.0]
...

$ ldd /usr/lib64/libsvn_fs_base-1.so.0
...
         libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 
(0x00002b6338266000)
         libdb-4.4.so => /lib64/libdb-4.4.so (0x00002b6338488000)
...

$ readelf -d /usr/lib64/libsvn_fs_base-1.so.0
...
  0x0000000000000001 (NEEDED)             Shared library: 
[libaprutil-1.so.0]
  0x0000000000000001 (NEEDED)             Shared library: [libdb-4.4.so]
...

   libsvn_fs_base-1.so.0 слинкован одновременно с libaprutil-1 и libdb-4.4.

$ ldd /usr/lib64/libaprutil-1.so.0
...
         libdb-4.4.so => /lib64/libdb-4.4.so (0x00002b5c3f9ee000)
...

$ readelf -d /usr/lib64/libaprutil-1.so.0

Dynamic section at offset 0x19398 contains 28 entries:
...
  0x0000000000000001 (NEEDED)             Shared library: [libdb-4.4.so]
...

   Вобщем -- всё пока замечательно.

   Смотрим куда указывает libaprutil-1.so.0:

$ ls -lA /usr/lib64/libaprutil-1.so.0
lrwxrwxrwx 1 root root 21 Окт 30 03:26 /usr/lib64/libaprutil-1.so.0 -> 
libaprutil-1.so.0.2.8

2. Переключаемся на Sisyphus и обновляем apache2* (только его пакеты) до 
2.2.9-alt12. По прежнему используется libdb-4.4.so:

$ ldd /usr/sbin/httpd2.prefork
...
         libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 
(0x00002ad6c11b4000)
...
         libdb-4.4.so => /lib64/libdb-4.4.so (0x00002ad6c1fc0000)
...

$ readelf -d /usr/sbin/httpd2.prefork
...
  0x0000000000000001 (NEEDED)             Shared library: 
[libaprutil-1.so.0]
...

   Существенных изменений пока нет. И httpd2.prefork напрямую libdb по 
прежнему не требует.

2. Обновляем libaprutil1 до 1.3.4-alt3 и смотрим что и как использует libdb:

$ ldd /usr/sbin/httpd2.prefork
...
         libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 
(0x00002b5a95117000)
...
         libdb-4.7.so => /lib64/libdb-4.7.so (0x00002b5a95cf2000)
...

   Видим что используется уже libdb-4.7.so. Происходит это потому, что 
бинарник httpd2.prefork напрямую с libdb не слинкован, и данную 
библиотеку грузит бинарник libaprutil-1.so.0, который мы только что 
заменили:

$ ls -lA /usr/lib64/libaprutil-1.so.0
lrwxrwxrwx 1 root root 21 Окт 30 04:00 /usr/lib64/libaprutil-1.so.0 -> 
libaprutil-1.so.0.3.4

$ ldd /usr/lib64/libaprutil-1.so.0
...
         libdb-4.7.so => /lib64/libdb-4.7.so (0x00002b93b57cf000)
...

$ readelf -d /usr/lib64/libaprutil-1.so.0
...
  0x0000000000000001 (NEEDED)             Shared library: [libdb-4.7.so]
...

   Смотрим как это повлияло на libsvn_fs_base (напомню, что он слинкован 
одновременно с libaprutil-1 и libdb-4.4):

$ ldd /usr/lib64/libsvn_fs_base-1.so.0
...
         libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 
(0x00002b141c053000)
         libdb-4.4.so => /lib64/libdb-4.4.so (0x00002b141c27d000)
         ^^^^^^^^^^^^
...
         libdb-4.7.so => /lib64/libdb-4.7.so (0x00002b141d137000)
         ^^^^^^^^^^^^
...

   Как видим, при использовании данной либы в памяти окажутся сразу 2 
версии libdb. Не думаю, что это допустимо (особенно то, что rpm/apt 
допустили данную ситуацию).

   Вариантов решить ситуацию (на уровне rpm/apt) вижу 2:

1. Более правильный -- менять сонейм libaprutil при смене сонейма 
прилинкованной libdb. При этом следует учесть что:

а) Сонейм заданный апстримом от сонейма libdb не зависит.

б) Ситуация когда в системе одновременно присутствуют 
subversion-server-dav и apache2 собраные с libaprutil имеющими разные 
сонеймы требует дальнейшего анализа. (Я на эту тему ещё не думал.)

2. Быстрый -- предлагаемые мной костыли с зависимостями специального 
вида. В данном случаи они не сработали из-за рассинхранизации между 
версиями apache2-libdb и libdb с которой собрана libaprutil1.

-- 

С уважением. Алексей.



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 552 bytes --]

  reply	other threads:[~2008-10-30  1:43 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-28 16:20 [devel] Q: libdb-4.6.so users Dmitry V. Levin
2008-10-28 17:57 ` Sergey V Turchin
2008-10-28 18:24   ` Dmitry V. Levin
2008-10-29  9:52     ` Dmitry Afanasov
2008-10-29 10:45       ` Sergey V Turchin
2008-10-29 11:29         ` Aleksey Avdeev
2008-10-29 11:39           ` Dmitry Afanasov
2008-10-29 12:37             ` Aleksey Avdeev
2008-10-29 12:56               ` Boris Savelev
2008-10-29 13:02                 ` Dmitry Afanasov
2008-10-29 14:19                   ` Aleksey Avdeev
2008-10-29 13:28                 ` Aleksey Avdeev
2008-10-29 13:36                   ` Aleksey Avdeev
2008-10-29 13:34                     ` Boris Savelev
2008-10-29 14:23                       ` Aleksey Avdeev
2008-10-29 14:07                         ` Boris Savelev
2008-10-29 14:48                           ` Aleksey Avdeev
2008-10-29 14:38                             ` Boris Savelev
2008-10-29 14:46                               ` Boris Savelev
2008-10-29 15:11                                 ` Aleksey Avdeev
2008-10-29 15:27                                   ` Aleksey Avdeev
2008-10-29 14:51                               ` Dmitry Afanasov
2008-10-29 15:29                                 ` Aleksey Avdeev
2008-10-29 18:57                                   ` Dmitry Afanasov
2008-10-29 20:45                               ` [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях (was: libdb-4.6.so users) Aleksey Avdeev
2008-10-29 20:33                                 ` Boris Savelev
2008-10-29 21:19                                   ` [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях Aleksey Avdeev
2008-10-29 22:42                                     ` Dmitry V. Levin
2008-10-29 22:45                                 ` [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях (was: libdb-4.6.so users) Dmitry V. Levin
2008-10-30  1:43                                   ` Aleksey Avdeev [this message]
2008-10-30  1:39                                     ` [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях Dmitry V. Levin
2008-10-30  5:20                                       ` Aleksey Avdeev
2008-10-30  7:06                                         ` Aleksey Avdeev
2008-10-30  7:31                                           ` Dmitry Afanasov
2008-10-30  8:22                                             ` Aleksey Avdeev
2008-10-30  8:12                                               ` Dmitry Afanasov
2008-10-30 22:55                                                 ` Aleksey Avdeev
2008-10-31  9:42                                                   ` Aleksey Avdeev
2008-10-31 12:36                                                     ` Dmitry Afanasov
2008-10-31 13:17                                                       ` Aleksey Avdeev
2008-10-31 13:22                                                         ` Dmitry Afanasov
2008-10-31 15:06                                                           ` Aleksey Avdeev
2008-10-31 19:07                                                           ` Aleksey Avdeev
2008-10-31 18:50                                                             ` Dmitry V. Levin
2008-10-31 19:34                                                             ` Igor Vlasenko
2008-11-01  7:19                                                               ` Aleksey Avdeev
2008-11-01  8:51                                                                 ` Dmitry Afanasov
2008-11-01 10:02                                                                   ` Dmitry Afanasov
2008-11-01 11:01                                                                     ` Aleksey Avdeev
2008-11-04 11:03                                                                 ` Dmitry Afanasov
2008-11-05  7:10                                                                   ` Aleksey Avdeev
2008-11-05  8:26                                                                     ` Dmitry Afanasov
2008-10-31 17:30                                                       ` [devel] M24 Michael Shigorin
2008-10-30 14:57                                               ` [devel] A: Меры по синхронизации версии libdb в libaprutil1, apache2 и его внешних модулях Boris Savelev
2008-10-30 12:27                                         ` Dmitry V. Levin
2008-10-30  6:18                                     ` Boris Savelev
2008-10-30  6:59                                       ` Aleksey Avdeev
2008-10-29 21:03 ` [devel] Q: libdb-4.6.so users Evgeny Sinelnikov
2008-10-29 22:35   ` Dmitry V. Levin
2008-10-29 23:17     ` Evgeny Sinelnikov
2008-10-29 23:51       ` [devel] python-2.5/python-2.6 Dmitry V. Levin
2008-12-24 18:16         ` Dmitry V. Levin
2008-12-24 18:22           ` Dmitriy M. Maslennikov
2008-12-24 18:23             ` Andrey Rahmatullin
2008-12-24 18:30             ` Dmitry V. Levin
2008-11-27  1:27 ` [devel] Q: libdb-4.6.so users Dmitry V. Levin
2008-11-27  4:11   ` Kirill A. Shutemov
2008-11-27 11:52     ` Dmitry V. Levin
2008-11-27 12:04       ` Kirill A. Shutemov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49091132.1080606@solin.spb.ru \
    --to=solo@solin.spb.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git