Леннарт Поттеринг (Lennart Poettering) объявил, что начиная с выпущенной вчера 43 версии systemd, прекращена поддержка специфичных для разных дистрибутивов файлов с информацией о релизе. В настоящее время, каждый дистрибутив использует собственный набор файлов для идентификации дистрибутива (/etc/redhat-release, /etc/SuSE-release, /etc/debian_version и т.п.), при этом многие дистрибутивы одновременно поддерживают несколько типов подобных файлов (например, в Fedora Linux их четыре). Вместо данного специфичного для каждого дистрибутива нагромождения предлагается использовать единый файл с информацией о дистрибутиве - /etc/os-release. Наличие данного файла отныне становится обязательным для определения версии и названия ОС в systemd.

Подчеркивается, что этот отчасти непопулярный шаг предпринят, чтобы окончательно убрать из кода systemd все специфичные для отдельных дистрибутивов зависимости и решения. Учитывая, что множество дистрибутивов, в том числе большинство крупных и известных - уже провели всю необходимую адаптацию /etc/os-release (включая родной для разработчиков дистрибутив Fedora), такое форсирование событий не должно как-то негативно сказаться на большинстве пользователей systemd. "А все оставшиеся получат лишь дополнительную мотивацию для того, чтобы, наконец, проделать то, для чего было отведено столько много времени."

Для дистрибутивов, в которых отсутствует поддержка /etc/os-release, это как минимум будет значить следующее:

  • Пока не будет обеспечена поддержка /etc/os-release в определённом дистрибутиве – система сборки пакета не сможет больше автоматически идентифицировать такой дистрибутив (даже если это и работало раньше). Можно попытаться обойти это самостоятельно с помощью использования подходящего для этого случая ключа "--with-distro=on" в строке настройки пакета перед установкой;
  • Пока не будет обеспечена поддержка /etc/os-release – строка-приглашение на ранней стадии загрузки (до-графической стадии) будет иметь вид "Welcome to Linux " на сплошном белом фоне, вместо привычной цветной заставки с названием дистрибутива.

С другой стороны новая система привносит следующие плюсы:

  • Облегчает разработчикам программ получение информации о дистрибутиве на котором они запускаются;
  • Предоставляется универсальный формат, удобный для автоматического парсинга технических характеристик дистрибутива (содержит версию ОС, название и некоторые параметры). Пример:
  • Новый формат настройки идентификации дистрибутива и его справочно-информационной составляющая при инициализации теперь очень легко расширяется и модифицируется. Например, теперь можно очень просто настраивать под себя как содержание вывода, так и свои собственные ANSI-цвета для всех сообщений, выводимых при загрузке системы.

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


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"

Также интересно, что стандарт LSB предоставляет утилиту lsb_release для достижения похожей унификации в хранении и получении данной информации, но разработчики systemd отказываются использовать её, называя её интерфейс "странным" и "изначально плохо спроектированным". Lsb_release является скриптом, который требуется запустить для получения параметров, в то время как в случае /etc/os-release достаточно открыть простой по своей структуре файл. Из недостатков таких попыток унификации как /etc/system-release называется трудность парсинга и отсутствие поддержки расширения параметров (в /etc/os-release дистрибутивы могут свободно добавлять собственные параметры, используя префикс с названием дистрибутива).

Источник: http://www.opennet.ru/opennews/art.shtml?num=33092