Леннарт Поттеринг (Lennart Poettering), автор Avahi (реализация протокола ZeroConf), звукового сервера PulseAudio и системного менеджера systemd, объявил, что начиная с выпущенной вчера 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=FedoraVERSION="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 предоставляет файл /etc/lsb_release и утилиту lsb_release для достижения похожей унификации в хранении и получении данной информации, но разработчики systemd отказываются использовать её, называя её интерфейс "странным" и "изначально плохо спроектированным".