[devel-distro] branding

Leonid Krivoshein klark.devel at gmail.com
Thu Sep 2 20:23:50 MSK 2021



02.09.2021 20:09, Dmitry V. Levin пишет:
> On Thu, Sep 02, 2021 at 07:46:11PM +0300, Leonid Krivoshein wrote:
>>
>> 02.09.2021 11:26, Sergey V Turchin пишет:
>>> 01.09.2021 20:08, Leonid Krivoshein пишет:
>>>> 01.09.2021 18:01, Sergey V Turchin пишет:
>>>>> 01.09.2021 15:33, Leonid Krivoshein пишет:
>>>>>
>>>>> [...]
>>>>>> Но не из самого /etc/os-release, а того, что лежит в /usr/share
>>>>> Не /usr/share, а из /usr/lib/os-release.
>>>>> https://www.freedesktop.org/software/systemd/man/os-release.html
>>>> Не, это о другом. Я имел ввиду наше внутреннее:
>>>> /usr/share/branding-data-current/release/os-release
>>> Так, разговор и о том, чтоб без велосипедов.
>>>
>> Стандарт предписывает "клиентам" брать данные из /etc/os-release и, если
>> его нет, то из /usr/lib/os-release, т.е. это одна и та же сущность,
>> второй может не быть, если есть первая. Здесь "клиент" -- это тот, кто
>> хочет сориентироваться в текущем окружении, типа ansible.
>>
>> То, что у нас лежит в /usr/share -- это не велосипед, а оригинальный
>> неизменяемый файл, поставлявшийся с пакетом. Из него в /etc/os-release
>> сейчас копируется информация в пост-установочном скрипте, сам
>> /etc/os-release сейчас является файлом конфигурации, и он не меняется с
>> обновлением пакета брэндинга.
>>
>> Предлагается в rpm сделать файл-триггер, который будет генерировать
>> содержимое /etc/os-release, полностью соответствующее стандарту. В новом
>> варианте здесь будут данные, соответствующие текущей ситуации, а не той,
>> что была. Но обсуждается вариант сохранения информации, соответствующие
>> исходному состоянию системы. Рассмотрены два варианта:
>>
>> - Сохранять все поля, добавляя к ним альтовый префикс, что допускается
>> стандартом.
>> - Сохранять только поле BUILD_ID, а в его отсутствии брать значение из
>> VERSION_ID (в /etc/os-release).
>>
>> Файл-триггер будет брать СОХРАНЯЕМЫЕ значение из /etc/os-release,
>> остальные поля перезаписывать из
>> /usr/share/branding-data-current/release/os-release. При даунгрейде
>> пакета брэндинга схема будет в точности такой же.
> Наверное, эта деталь не очень важна, но я полагал, что файлтриггер будет
> смотреть не напрямую в
> /usr/share/branding-data-current/release/os-release, а в
> /usr/lib/os-release, который, в свою очередь, будет относительной ссылкой
> на тот же /usr/share/branding-data-current/release/os-release.

Интересная деталь, поскольку один раз мне удалось получить ситуацию 
остаться без /etc/os-release до apt-get dist-upgrade. В этот момент 
устанавливаемые пакеты, если используют информацию о версии ОС, должны 
смотреть в /usr/lib/os-release. В общем случае не будет большой разницы 
между одной сущностью и другой. Ну, разве что в полях, которые должны 
сохраняться, т.е. об исходной системе. Если уже удалён /etc/os-release, 
то вообще нет разницы.


-- 
Best regards,
Leonid Krivoshein.



More information about the devel-distro mailing list