[devel] rpm в p9
Anton Farygin
rider на basealt.ru
Сб Янв 19 20:50:13 MSK 2019
19.01.2019 20:21, Leonid Krivoshein пишет:
>
> 19.01.2019 15:11, Dmitry V. Levin пишет:
>> On Sat, Jan 19, 2019 at 10:32:07AM +0300, Anton Farygin wrote:
>> [...]
>>> а довести rpm в Sisyphus
>>> до состояния, когда его можно будет полноценно использовать для работы.
>>>
>>> А в *8 ветках оставить как есть сейчас.
>> Как сейчас тоже нехорошо, потому что apt неисправимо плохо работает
>
> Посмотрев исходники APT'а (нашего и современного Дебиновского), могу
> сказать, что здесь стоит поставить точку. Неисправимая ошибка в
> дизайне. На dist-upgrade он непредсказуем из-за алгоритма весов и
> приоритетов. У нас в RPM, ко всему прочему, поля приоритета просто
> нет. Алгоритм разрешения конфликтов отлично справляется в пределах
> одной частной машины, но если взять хотя бы две одинаковые машины с
> полностью одинаковым набором пакетов и начать обновлять их в разное
> время, то рано или поздно не только пакетные базы разойдутся, но и на
> одной из них могут быть вынесены ключевые для исходного решения пакеты.
>
> Если сильно упростить: первоначальная установка системы -- это apt-get
> install A B C (со всеми зависимостями, которые мы конечно не
> указываем), тогда как apt-get dist-upgrade -- это отнюдь не повторение
> этой операции, а игра в лотерею "мне повезёт". Но это чисто поворчать,
> просто так это не исправить. Использование /etc/apt/pkgpriorities с
> умом лишь уменьшает вероятность серьёзных разъездов и заставляет APT
> хотя бы предупредить при выносе критически важных пакетов. Но это
> укрепляет лишь 0-й уровень графа зависимостей исходного решения,
> гарантий это всё равно не даёт.
>
> Другими словами, при нашей воспроизводимой сборке пакетов имеем
> непредсказуемую процедуру обновления установленных решений, в том
> числе, зависимую от времени обновления.
К воспроизводимости сборки тоже есть вопросы - в последнее время очень
часто Beehive ругается тогда, когда локально проблема сборки не
воспроизводится. К счастью, чаще всего это race в результате
параллельной сборки.
А солвер в apt давно уже надо кому-то переписать, но для этого нужно
поменять нашу пакетную базу - избавиться от виртуальных пакетов,
например, что бы не было одинаковых provides у разных пакетов.
Подробная информация о списке рассылки Devel