[devel-distro] os-release

Anton Farygin rider at basealt.ru
Thu Aug 19 15:21:02 MSK 2021


On 19.08.2021 14:29, Dmitry V. Levin wrote:
> On Thu, Aug 19, 2021 at 02:19:11PM +0300, Anton Farygin wrote:
>> On 19.08.2021 13:33, Dmitry V. Levin wrote:
>>> On Mon, Aug 16, 2021 at 12:26:55PM +0300, Anton Farygin wrote:
>>>> On 16.08.2021 12:22, Anton V. Boyarshinov wrote:
>>>>>     
>>>>>>> У каждого продукта своё версионирование и не вполне понятно -- как
>>>>>>> можно связать это версионирование с "версией бранча". Версия бранча это
>>>>>>> вообще имя_бранча+дата.
>>>>>> У /etc/os-release есть куча полей, куда можно записывать и дату бранча в
>>>>>> том числе.
>>>>>>
>>>>>> Плюс в стандарте есть возможность создавать свои расширения.
>>>>> Значит надо продумать как единообразным образом использовать эти кучу
>>>>> полей и, возможно, расширения.
>>>> Я для обсуждеия этого повесил баг:
>>>>
>>>> https://bugzilla.altlinux.org/40703
>>>>
>>>> предлагаю с обсуждением переместиться туда.
>>> Обсуждать в баге неудобно.
>> Вообще, конечно, bugzilla именно для этого и предназначена. Ну да ладно.
>> Давайте здесь.
>>> Я предлагаю следующую простую схему.
>>>
>>> Файл /etc/altlinux-release обновляется, как обычные файлы.
>> Т.е. - просто лежит в пакете, который приезжает с каждой новой версией
>> пакета, содержащего этот файл?
> Да, тут сложно что-то другое придумать, формат этого файла слишком
> негибкий.  Были предложения копировать /etc/altlinux-release куда-то,
> но при наличии os-release это выглядит избыточным.

Этот файл вообще избыточен и нужен для совместимости с совсем старыми 
системами.

Ещё, мне кажется, надо избавляться от вот этого мнимого соответствия 
RedHat и Fedora:

/etc/fedora-release
/etc/os-release
/etc/redhat-release
/etc/system-release

>
>> Например, в моём случае это branding-xalt-kworkstation-release
>>
>>> Файл /etc/os-release обновляется по правилам, описанным ниже.
>>>
>>> Все провайдеры os-release пакуют его в /usr/lib/os-release
>>> (согласно https://www.freedesktop.org/software/systemd/man/os-release.html),
>>> /usr/lib/os-release может быть ссылкой куда-то ещё, это несущественно.
>>> Они же пакуют %ghost /etc/os-release нулевого размера.
>> Ну или действительно как предложил зерг - запаковать в файлтриггер.
>>> Файлриггер следит за обновлением пакетов, содержащих /usr/lib/os-release,
>>> и мержит изменения в /etc/os-release следующим образом:
>>>
>>> Все параметры, описанные в /usr/lib/os-release, за исключением параметров,
>>> имена которых начинаются с префикса ALT_installed_, копируются в
>>> /etc/os-release, при этом, если в /etc/os-release уже были параметры с
>>> такими именами, то:
>>>
>>> - старые параметры, имена и значения которых совпадают с новыми,
>>>     удаляются;
>> Т.е., говоря проще - заменяются новыми значениями из /usr/lib/os-release
>>> - остальные старые параметры, имена которых совпадают с новыми,
>>>     переименовываются путём добавления префикса ALT_installed_ и добавляются
>>>     в /etc/os-release, если параметров с такими именами там ещё не было, в
>>>     противном случае удаляются.
>> Вот это вообще непонятно, что имеется в виду.
> Имеется в виду, что когда из /usr/lib/os-release приезжают параметры с
> теми же именами, что и в /etc/os-release, но с другими значениями, то
> такие параметры в /etc/os-release переименовываются.
А если переименовываемые параметры уже были ?
>
>> можно пример, на:
>> $ cat /etc/os-release
>> NAME="ALT"
>> VERSION="9.2 "
>> ID=altlinux
>> VERSION_ID=9.2
>> PRETTY_NAME="ALT Workstation K 9.2  (Centaurea Pineticola)"
>> ANSI_COLOR="1;33"
>> CPE_NAME="cpe:/o:alt:kworkstation:9.2"
>> HOME_URL="https://www.basealt.ru/"
>> BUG_REPORT_URL="https://bugs.altlinux.org/"
>> DOCUMENTATION_URL="https://docs.altlinux.org/"
>> SUPPORT_URL="https://support.basealt.ru/"
>>
>> Что из этого должно переименоваться в ALT_installed ?
> А что в /usr/lib/os-release?
>
Сейчас одинаковое. Это плохой пример. вот хороший (тут Sisyphus):
$ cat /etc/os-release
NAME="ALT Server"
VERSION="8.2 (april)"
ID=altlinux
VERSION_ID=8.2
PRETTY_NAME="ALT 8.2 Server (april)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt linux:school server:8.2"
HOME_URL="http://altlinux.ru/"

BUG_REPORT_URL="https://bugs.altlinux.org/"


$ cat /usr/share/branding-data-current/release/os-release (по новой 
схеме это будет /usr/lib/os-release)
NAME="ALT Server"
VERSION="9.2"
ID=altlinux
VERSION_ID=9.2
PRETTY_NAME="ALT Server 9.2 (FalcoRusticolus)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:server:9.2"
HOME_URL="https://basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"



More information about the devel-distro mailing list