[devel] non-strict deps

Dmitry V. Levin ldv на altlinux.org
Пн Янв 28 21:01:57 MSK 2013


On Sat, Jan 26, 2013 at 08:19:45PM +0400, Sergey Vlasov wrote:
> On Sat, Jan 26, 2013 at 06:17:00PM +0400, Dmitry V. Levin wrote:
> > On Sat, Jan 26, 2013 at 05:30:40PM +0400, Sergey Vlasov wrote:
> [...]
> > > На мой взгляд, это неправильно - если в зависимости явно указано имя
> > > виртуального пакета, скорее всего, это сделано намеренно, и такую
> > > зависимость необходимо оставлять в том виде, как она есть.
> > 
> > А если неявно?  Если это find-requires нашел зависимость на soname,
> > ее ведь надо превращать в строгую зависимость на пакет.
> 
> Да, действительно (причём это как раз наиболее опасные нестрогие
> зависимости, поскольку компоненты, собираемые из одного пакета, с
> наибольшей вероятностью могут использовать недокументированные ABI и
> особенности реализации компонентов, вынесенных в соседние подпакеты).
> Но для явно указанных в spec-файле зависимостей, выраженных через
> виртуальные пакеты, не нужно усиливать их автоматически.

В Сизифе есть примеры таких ошибок:

libcal3d-0.11.0-alt1_13:warning: libcal3d-doc: non-strict dependency on libcal3d
В спеке написано "Requires: cal3d = %{version}-%{release}", в то время как
пакет называется libcal3d; Provides есть, Obsoletes нет.

libecap0-0.0.3-alt1:warning: libecap0-devel-static: non-strict dependency on libecap0-devel
В спеке написано "Requires: %lname-devel = %version-%release", в то время
как пакет называется %{lname}0; Provides есть, Obsoletes нет.

libsigsegv0-2.6-alt6:warning: libsigsegv0-devel: non-strict dependency on libsigsegv0
В спеке написано "Requires: %oname = %version-%release", в то время как
пакет называется %name; версионированные Provides и Obsoletes есть.

net-snmp30-5.7.1-alt9:warning: net-snmp-config: non-strict dependency on libnet-snmp30
В спеке написано "Requires: lib%_name = %version-%release", в то время как
пакет называется lib%name; Provides есть, Obsoletes нет.

newt52-0.52.14-alt1:warning: libnewt-devel-static: non-strict dependency on libnewt-devel
В спеке написано "Requires: lib%name-devel = %version-%release", в то
время как пакет называется lib%_name-devel; Provides есть, Obsoletes нет.

rrd-1.4.7-alt3.1:warning: rrd: non-strict dependency on librrd4
В спеке написано "Requires: lib%name = %version-%release", в то время как
пакет называется lib%name%abiversion; Provides есть, Obsoletes нет.

wxGTK-2:2.8.11.0-alt1.svn20100628.5.qa2:warning: wxGTK-examples: non-strict dependency on libwxGTK-devel
В спеке написано "Requires: %name-devel = %version", в то время как пакет
называется lib%name-devel; версионированные Provides и Obsoletes есть.

> Правда, можно представить такую ситуацию, когда мантейнер переименовал
> один из подпакетов, добавив туда соответствующие Provides и Obsoletes,
> но забыл обновить зависимость на этот подпакет - в этом случае такая
> зависимость превратится в явную зависимость на виртуальный пакет и не
> будет усилена автоматически.  Можно попробовать отлавливать подобные
> ошибки по наличию Obsoletes для указанного в зависимостях имени
> пакета.

К сожалению, практика показывает, что в большинстве случаев Obsoletes
оказывается забыт.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130128/92e3ec3a/attachment.bin>


Подробная информация о списке рассылки Devel