* Re: [devel] rpm: find-package
2009-02-16 15:00 [devel] rpm: find-package Sergey Bolshakov
@ 2009-02-16 15:35 ` Alexey Tourbin
0 siblings, 0 replies; 2+ messages in thread
From: Alexey Tourbin @ 2009-02-16 15:35 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 2177 bytes --]
On Mon, Feb 16, 2009 at 06:00:32PM +0300, Sergey Bolshakov wrote:
> Обнаружен (внезапно!) некоторый неприятный момент в логике
> скрипта find-package, вид по ссылке:
> http://tinyurl.com/c7tzgq
> а именно: если однажды каким-либо образом в сборочной итерации N-1
> путь внешней зависимости не был разрешён в имя пакета, то такой путь
> будет внесён в зависимости пакета as is, и, таким образом, клауза
> 'The path is also "safe enough" if it is already required by someone'
> будет сама себя поддерживать сколь угодно большое количество
> пересборок, несмотря на то, что путь (уже) может быть разрешён в имя
> пакета, если пакет сборочно зависит, пусть непрямо, сам от себя.
>
> На примере пакета openssl098:
> однажды в нём возникла зависимость на
> /usr/share/ca-certificates/ca-bundle.crt из-за ссылки
> /var/lib/ssl/cert.pem -> ../../../usr/share/ca-certificates/ca-bundle.crt,
> которая не могла (на тот момент) быть разрешена в ca-certificates.
> Последующие пересборки openssl098 ничего не принесут, поскольку
> в сборочном окружении неизбежно оказывается предыдущий (кривой)
> openssl098, и клауза 'already required by, well, OMFG, ME!' не пустит
> пройти посмотреть в contents_index_all. Круг замкнулся.
>
> Есть идеи ?
Идея такая: отображать путь в название пакета -- это вообще порочная
практика. Эту практику приходится до сих пор поддерживать, потому
что у нас раздельно генерируются arch и $noarch репозитарии; и нет
способа учитывать взаимные влияния путей между этими репозитариями
(а все лишние пути обрезаются, чтобы уменьшить размер pkglist.classic).
Решение состоит в том, чтобы генерировать arch и noarch репозитарии
совместно. Для этого достаточно поддерживать общий список путей,
которые нельзя урезать из pkglist.classic.
Короче, если путь точно известен, то лучше ставить зависимость
именно на этот точный путь.
Отображать в названия пакетов, как правило, нужно только названия команд
из шелл-скриптов. Для них нет отдельного пространства зависимостей,
но их также нежелательно отображить и в путь (потому что существует
неоднозначность, где файл должен находиться, в /usr/bin или /usr/sbin
и т.д.).
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread