[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