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