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] Зависимости между apache2-httpd-* и apache2-{mod_*,common}
Date: Fri, 25 Jan 2013 02:26:14 +0400
Message-ID: <5101B506.5040702@solin.spb.ru> (raw)
In-Reply-To: <20130124214752.GD13424@altlinux.org>

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

25.01.2013 01:47, Dmitry V. Levin пишет:
> On Fri, Jan 25, 2013 at 01:44:09AM +0400, Aleksey Avdeev wrote:
>> 24.01.2013 20:52, Dmitry V. Levin пишет:
>>> On Thu, Jan 24, 2013 at 04:21:11PM +0400, Aleksey Avdeev wrote:
>>>> 24.01.2013 15:31, Dmitry V. Levin пишет:
>>>>> On Thu, Jan 24, 2013 at 02:25:06PM +0400, Aleksey Avdeev wrote:
>>>>>> 24.01.2013 10:53, Dmitry V. Levin пишет:
>>>>>>> По моим данным, в Сизифе 44 пакета, которые собираются с этим
>>>>>>> предупреждением, например:
>>>>>>> $ grep '^warning: [^:]*: dependency on [^ ]* needs Epoch' xorg-server-2:1.13.1.901-alt1 
>>>>>>> warning: xorg-server: dependency on xorg-server-common needs Epoch
>>>>>>> warning: xorg-drv-multimedia: dependency on xorg-server needs Epoch
>>>>>>> warning: xorg-xephyr: dependency on xorg-server needs Epoch
>>>>>>> warning: xorg-xdmx: dependency on xorg-server needs Epoch
>>>>>>> warning: xorg-xvfb: dependency on xorg-server-common needs Epoch
>>>>>>> warning: xorg-xnest: dependency on xorg-server-common needs Epoch
>>>>>>>
>>>>>>> То, что этот warning пора поднять до error, кажется очевидным.
>>>>>>> Вопрос, есть ли смысл делать ручку, которая бы понижала этот error
>>>>>>> обратно до уровня warning?
>>>>>>
>>>>>>   Нужно как миниум для apache2.
>>>>>
>>>>> Словам не верю, докажите.
>>>>
>>>>   OK, развёрнтый ответ пишу.
>>
>>   См. соседнее письмо
>> (<http://lists.altlinux.org/pipermail/devel/2013-January/196451.html>).
>>
>>>>
>>>>>
>>>>>> В противном случаи будет сломана
>>>>>> возможность делать точечные обновления компонентов apache2 и возможность
>>>>>> установки новых модулей (или их версий) на старый apache2 (если нет
>>>>>> противопоказаний по библиотекам, разумеется).
>>>>>
>>>>> Такая возможность не просто не нужна, она вредна и с ней надо бороться.
>>>>> При сборке apache2 тестируется в лучшем случае модули и сервер, собранные
>>>>> из одного исходного пакета, и не надо делать вид, что модули и сервер,
>>>>> собранные из разных исходного пакета, могут случайно заработать.
>>>>
>>>>   Для apache это скорее правило чем исключение:
>>>>
>>>> 1. Все заведомо несовместимые модули отстреливаются по MMN (Module Magic
>>>> Number, см. <http://httpd.apache.org/docs/2.2/glossary.html>), за
>>>> которым следит арстрим. У нас это реализовано через предоставление
>>>> зависимости Provides: %name-mmn = %mmn (где %mmn константа,
>>>> соответствующая собираемому apache2) пакетом apache2-commom (все модули
>>>> должны требовать зависимость с нужным им MMN).
>>>>
>>>> 2. Изменения сонеймов библиотек, с которыми собирается apache2, тоже
>>>> кодируются в виде зависемостей предоставляемых пакетом apache2-commom.
>>>> Список, правда, контролируется руками, и сейчас там только openssl:
>>>>
>>>> Provides: %name-%apache2_libssl_name = %apache2_libssl_soname
>>>>
>>>> где (см. пакет rpm-macros-apache2):
>>>>
>>>> %apache2_libssl_name libssl
>>>>
>>>> %apache2_libssl_soname %(rpm -qR %apache2_libssl_name-devel | sed -rn
>>>> '/^[[:space:]]*%apache2_libssl_name[0-9.]+[[:space:]]+[=<>]/s/^[[:space:]]*libssl([0-9.])+[[:space:]]+[=<>].*$/\\1/p')
>>>>
>>>> Если список надо расширить -- предложения принимаются. (Ранее, подобным
>>>> механизмом контролировался и сонейм lindb4, но теперь apache2 напрямую с
>>>> lindb4 не линкуется.)
>>>>
>>>> 3. Многие библиотеки apache2 использует через libapr/libaprutil, которые
>>>> и скрывают изменения их ABI.
>>>>
>>>> 4. Наши set-version для библиотек снимают заметную часть проблем.
>>>>
>>>>   Это касательно ABI. Требования по каталогам/файлам и содержимым
>>>> конфигов я контролирую руками.
>>>
>>> Это все сложно и не дает гарантии, в отличие от простой конструкции вида
>>> Requires: %name = %{?epoch:%epoch:}%version-%release
>>> которая такую гарантию дает.
>>
>>   Даст. Но она приведёт к строгой привязки модулей к тому бинарнику
>> /usr/sbin/httpd2, для которого они собирались => вызовет строгую
>> необходимость пересборки всех пакетов предоставляющих подпакеты
>> apache2-mod_* (т. к. их требования к /usr/sbin/httpd2 ничем не
>> отличаются от требований модулей находящихся в apache2-common) в рамках
>> одной транзакции, при сборке каждого из _релизов_ apache2. А это (судя
>> по <http://sisyphus.ru/ru/find.shtml?request=apache2-mod_>) 32 пакета,
>> из которых мой только 1 (сам apache2).
> 
> Вы чего-то не поняли.  Все нестрогие зависимости, которые диагностирует
> rpmbuild, относятся _исключительно_ к внутрипакетным зависимостям.
> Так, нестрогие зависимости в apache2 - это нестрогие зависимости только
> тех пакетов, которые получаются при сборке самого apache2.

  Это я понял. Как и то, что нет проблемы поставить строгую зависимость
между пакетами apache2-httpd-* (содержащими /usr/sbin/httpd2) и пакетами
с модулями apache2-{mod_*,common} собираемыми из одного
apache2-*.src.rpm. Здесь, в такой постановке, действительно проблем нет.
Но это приведёт к тому, что зависимости для "родных" (собираемых из
дистрибутива apache2) и "сторонних" модулей apache2 нужно будет ставить
по разным схемам...

  А я то стараюсь проставить зависимости между apache2-httpd-*
apache2-{mod_*,common} по той же схеме, как они будут стоять между
apache2-httpd-* и _сторонними_ apache2-mod_*! (Это возможно, т. к. и
"родные" модули apache2 и "сторонние" используют общий интерфейс
/usr/sbin/httpd2.) Такой подход позволяет:

1. Обнаруживать львиную долю проблем точечного обновления apache2 и его
модулей на этапе внутреннего тестирования новой сборки apache2, в
процессе точечного поэтапного обновления компонентов работающего apache2
в тестовой виртуалке.

2. Всегда иметь готовый (протестированный) рецепт по исправлению проблем
с зависимостями для мантейнеров сторонних apache2-mod_*. (Сборка apache2
не идёт в Сизиф, пока у меня нет такого рецепта, т. к. она не проходит
мои внутренние тесты на виртуалках.)

  И вот эта задача, зависимости для "родных" и "сторонних" модулей по
одной схеме, без нестрогих зависимостей решается плохо (слишком много
накладных расходов для "сторонних").

-- 

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



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

  reply	other threads:[~2013-01-24 22:26 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-03 16:40 [devel] samba Led
2013-01-03 22:36 ` Alexey Shabalin
2013-01-03 22:45   ` Led
2013-01-04  9:55     ` Alexey Shabalin
2013-01-23 20:14       ` [devel] non-strict dependency warnings Dmitry V. Levin
2013-01-23 21:05         ` Igor Vlasenko
2013-01-24  6:44           ` Dmitry V. Levin
2013-01-24 10:47             ` Aleksey Avdeev
2013-01-24 11:25               ` Dmitry V. Levin
2013-01-24 17:58                 ` [devel] non-strict dependency in apache2 (was: non-strict dependency warnings) Aleksey Avdeev
2013-01-24 19:15                   ` Dmitry V. Levin
2013-01-24 23:19                     ` [devel] non-strict dependency in apache2 Aleksey Avdeev
2013-01-24 23:37                       ` Dmitry V. Levin
2013-01-25  0:48                         ` Aleksey Avdeev
2013-01-25  8:53                           ` Dmitry V. Levin
2013-01-25 10:11                             ` Aleksey Avdeev
2013-01-26  9:22               ` [devel] %_allowed_nonstrict_interdeps (was: non-strict dependency warnings) Aleksey Avdeev
2013-01-24  6:53           ` [devel] dependency needs Epoch warnings Dmitry V. Levin
2013-01-24  7:09             ` Yuri N. Sedunov
2013-01-24  7:16               ` Dmitry V. Levin
2013-01-24  7:24                 ` Yuri N. Sedunov
2013-01-24 10:25             ` Aleksey Avdeev
2013-01-24 11:31               ` Dmitry V. Levin
2013-01-24 12:21                 ` Aleksey Avdeev
2013-01-24 16:52                   ` Dmitry V. Levin
2013-01-24 21:44                     ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} (was: dependency needs Epoch warnings) Aleksey Avdeev
2013-01-24 21:47                       ` Dmitry V. Levin
2013-01-24 22:26                         ` Aleksey Avdeev [this message]
2013-01-24 21:53                       ` Dmitry V. Levin
2013-01-24 22:31                         ` [devel] Зависимости между apache2-httpd-* и apache2-{mod_*,common} Aleksey Avdeev
2013-01-24 12:15             ` [devel] dependency needs Epoch warnings Igor Vlasenko
2013-01-24  6:46             ` [devel] non-strict dependency warnings Dmitry V. Levin
2013-01-24 11:21                 ` Dmitry V. Levin
2013-01-24 16:00                     ` Dmitry V. Levin
2013-01-24 16:22                       ` Led
2013-01-24 22:16                         ` [devel] %EVR macro Dmitry V. Levin
2013-01-24 22:37                           ` Led
2013-01-24 23:21                             ` Aleksey Avdeev
2013-01-24 12:07             ` [devel] non-strict dependency warnings Igor Vlasenko
2013-01-23 22:29         ` Led
2013-01-23 22:37           ` Dmitry V. Levin
2013-01-23 22:43             ` Led
2013-01-24 11:57         ` [devel] Рано поднимать до error (was: non-strict dependency warnings) Sergey V Turchin
2013-01-24 12:23           ` [devel] Рано поднимать до error Aleksey Avdeev
2013-01-24 12:31           ` [devel] non-strict dependency warnings Dmitry V. Levin
2013-01-24 12:55             ` Sergey V Turchin
2013-01-24 14:49               ` Dmitry V. Levin
2013-01-24 14:59                 ` Sergey V Turchin
2013-01-26  8:49           ` [devel] Рано поднимать до error REAL
2013-01-26 10:39             ` Dmitry V. Levin
2013-01-26 17:36               ` Aleksey Avdeev
2013-01-26 19:07                 ` Sergey Vlasov
2013-01-26 20:08                   ` [devel] non-strict deps Dmitry V. Levin
2013-01-26 20:39                     ` Dmitry V. Levin
2013-01-26 23:31                     ` Igor Zubkov
2013-01-26 23:56                       ` Dmitry V. Levin
2013-01-27  0:25                         ` Led
2013-01-27  0:37                           ` [devel] gear-rules Dmitry V. Levin
2013-01-27  0:56                             ` Led
2013-01-27  1:01                               ` Dmitry V. Levin
2013-01-27  1:09                                 ` Led
2013-01-30  0:50                         ` [devel] non-strict deps Igor Zubkov
2013-01-30  0:55                           ` Dmitry V. Levin
2013-01-26 20:38                   ` [devel] Рано поднимать до error Aleksey Avdeev
2013-01-27  7:00                     ` Sergey Vlasov
2013-01-04  1:58 ` [devel] samba REAL
2013-01-04 11:06   ` [devel] llvm Dmitry V. Levin
2013-01-04 15:32     ` REAL
2013-01-04 15:24       ` Valery V. Inozemtsev
2013-01-05  5:13         ` REAL
2013-01-05  9:43           ` Dmitry V. Levin

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=5101B506.5040702@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