nixp.ru v3.0

22 декабря 2024,
воскресенье,
21:13:33 MSK

16 февраля 2012, 12:52

Systemd не будет поддерживать дистрибутивы без /etc/os-release

9
Плакат «Они не пройдут»; автор: Mark Vallen
Плакат «Они не пройдут»; автор: Mark Vallen
Иллюстрация с сайта Art-for-a-change.Com

Леннарт Поттеринг (Lennart Poettering), автор таких известных Open Source-проектов, как PulseAudio и systemd, объявил о решении прекратить в init-системе systemd поддержку Linux-дистрибутивов, не имеющих в своей файловой системе файла /etc/os-release.

/etc/os-release — это очередное нововведение от Поттеринга, призванное унифицировать место и формат хранения данных о разновидности и версии дистрибутива. По задумке, файл /etc/os-release должен стать новым стандартом для дистрибутивов, заменив существующее в наши дни многообразие из /etc/redhat-release, /etc/debian_version, /etc/gentoo-release, /etc/meego-release и т.п. Файл является текстовым и содержит в себе строки с парами вида «ключ=значение» — например:

NAME=Fedora
VERSION="17 (Beefy Miracle)"
ID=fedora
VERSION_ID=17
PRETTY_NAME="Fedora 17 (Beefy Miracle)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:fedoraproject:fedora:17" 


Авторы указывают на три основные причины использовать /etc/os-release:

  1. Упрощение жизни разработчикам приложений, которым нужно просто узнать, на каком дистрибутиве запущена программа (не потребуется делать многочисленные проверки разных файлов).
  2. Наличие и «красивого» (хорошо воспринимаемого пользователем) названия, и легко распознаваемых компьютером данных о версии/ОС (для использования в сборочных системах).
  3. Расширяемость: при необходимости легко добавить новые поля.

У Леннарта и его команды уже готов ответ на вопрос о том, зачем изобретать очередной стандарт, когда уже существует инструмент lsb_release, выводящий сведения о любом дистрибутиве, который соответствует требованиям LSB (Linux Standard Base). По его словам, lsb_release не представляется самым удобным средством, потому что с ним возникает потребность запускать «тяжелый» shell-скрипт на раннем этапе загрузки системы (например, для отображения приветствия), его код неудобно расширять, а также пакет с ним является опциональным во многих дистрибутивах. «Утилита lsb_release кажется нам попыткой абстрагирования от проверки версии дистрибутива в то время, как требуется стандартизация этих проверок», — утверждается в FAQ по /etc/os-release.

Наиболее важным же является тот факт, что команда разработчиков набирающей популярность системы systemd не просто придумала и предложила /etc/os-release, но и приняла решение сделать его наличие в системе обязательным условием для всех дистрибутивов, желающих использовать systemd.

Постоянная ссылка к новости: http://www.nixp.ru/news/11584.html. Дмитрий Шурупов по материалам 0pointer.de.

fb twitter vk
aim

как же Poettering задрал!

Ну есть же usb_release -a!!!!

Дмитрий Шурупов

s/usb_release/lsb_release/ ?

В предпоследнем абзаце новости объясняется, почему он не угодил. На эту тему там (в блоге Леннарта) в комментариях кинули удачную ссылку на XKCD про стандарты: xkcd.com/927/ ;-)

лёгкий и прозрачный скрипт на пито… wait, what?

всё правильно делает.

WatchCat

Пока единственное предложение Поттеринга с которым я полностью согласен.

kuca

судя по тому что я почитал в блоге Леннарта, вроде бы и хорошие весчи предлагает но как-то черезжопно

yesint

Имхо, весьма разумно. Стандартизация зоопарка — это хорошо.

xonotic

В акрониме LSB буква «эс, как доллар» неспроста.

xonotic

>>> потребность запускать «тяжелый» shell-скрипт на раннем этапе загрузки системы

 

Что мешает реализовать чтение тех же конфигов lsb_release на «нетяжелой» сишечке прямо в systemd для получения той же информации, что возвращает вызов lsb_release?

Ну и традиционный вопрос: нафига там цвет?!

yesint

+1 про цвет. Вогнало в ступор.

fhunter

в порядке троллинга:

Ну это же десктопный линукс. там должны быть красные линии «в виде котенка. Котеночка. Нашим пользователям нравятся зверюшки.»

Конец троллинга.

А вообще не понимаю. Всегда были /etc/issue и /etc/issue.net которые работали и позволяли вывести приглашение системы так как надо, хоть с пингвинчиком в ASCII-art.

mdErrDX5341

я согласен с /etc/os-release,

уж лучше один файл на всех дистрах, чем запускать скрипт. (дешево и сердито)

defender

О-хо-хо… Как знать преодолевать разницу в дистрах в «полезном» смысле это невпадлу… А к этому добавить пару строчек для определения дистра — это уже прям бедааа.

SDen

Хм… в моём OpenSUSE 12.1 и systemd, и os-release есть (есть также и специфичный для дистрибутива SuSeE-release), так что здесь работать будет.

В принципе, абсолютно логичная вещь — стандартный текстовый файл с парой обязательных полей + разработчики могут записать своих… Скрипт или функция — не так гибко.

А такая ультимативная форма… ну надо же иногда и подтолкнуть, чтоб покатилось… альтернативы тоже есть.