[devel] Как узнать, что пакет установлен из репозитория?
Leonid Krivoshein
klark.devel на gmail.com
Пт Апр 28 04:01:56 MSK 2023
On 4/28/23 03:39, Vitaly Lipatov wrote:
> Dmitry V. Levin писал(а) 28.4.23 1:26:
>> On Fri, Apr 28, 2023 at 01:15:09AM +0300, Vitaly Lipatov wrote:
>>> Хотелось бы иметь способ узнать происхождение пакета: взят ли он из
>>> репозитория (в том числе конкретного стабильного репозитория), а в
>>> идеале бы ещё и знать, что пакет прошёл QA.
>>
>> Непонятно, зачем хочется это знать, особенно если ...
> Чтобы по-разному относиться к своим пакетам и к чужим.
> Вот казалось бы, есть у нас в rpm-пакете поля
> Packager
> Vendor
> Distribution
>
> Но Packager в спеке выставляет кто как хочет.
>
> Vendor зачастую ALT Linux Team (впрочем, и у любого, кто
> воспользовался hasher), но вот у пакета yandex-browser-stable в
> репозитории Vendor YANDEX LLC
>
> Distribution будет ALT или ALT* у любого пакета, собранного с помощью
> rpmbuild в ALT.
> просто потому что так записано в
> /usr/lib/rpm/platform/x86_64-linux/macros
>
Поля можно заполнить произвольно, собрав пакет не на сборочнице. Да и на
сборочнице тоже. Они не определяют источник установки, это просто
метаданные некоего архива.
>
>>> Наверное, можно принять допущение, что при этом пакет имеет актуальную
>>> версию (последнюю, соответствующую версии в репозитории) и установлен в
>>> систему из подписанного репозитория.
>>
>> ... особенно если нельзя принимать такие допущения.
> Я имел в виду, что если удостовериться в том, что в систему установлен
> именно пакет из репозитория (имеющий ту же контрольную сумму,
> например, что и пакет в репозитории), то по подписи репозитория можно
> определить его поставщика. Раз уж почему-то мы не можем определить
> ничего по подписи пакета.
>
>> Если есть репозиторий, то можно что-то сделать в духе скриптов из
>> пакета apt-scripts.
> Ну то есть сам пакет достаточно обезличен, и надежда только на
> выяснение через репозиторий.
>
Проверка принадлежности к репозиторию -- функционал более высокого
порядка, нежели RPM, это уровень APT'а, и такая проверка может быть
выполнена только для актуальной версии пакета, т.е. на корректно
обновлённой системе.
Природа задач инвентаризации в целях починки ошибочна по своей сути,
нужно стремиться изначально собирать систему из правильных источников и
по правильной технологии, чтобы потом не чинить, не заниматься
инвентаризацией.
Если пользователь притащил пакет не из репозитория или даже один файл
сложил в область ответственности RPM, его систему уже можно считать не
поддерживаемой, консистентность обновления уже нельзя гарантировать.
--
WBR, Leonid Krivoshein.
Подробная информация о списке рассылки Devel