Linux Foundation выпустила новые версии Linux Standard Base и Filesystem Hierarchy Standard. Выпуск произошёл через 4 года после LSB 4.1 и через 11 лет после FHS 2.3. Он посвящён памяти Кристофера Йео (Christopher Yeoh), без чьего вклада этих стандартов не существовало бы.
Linux Standard Base — это попытка Linux Foundation стандартизировать GNU/Linux как платформу для запуска приложений и дать независимым разработчикам возможность распространять приложения в виде бинарных пакетов. Это набор требований к дистрибутивам Linux и к приложениям для Linux: приложение, соответствующее LSB, можно установить и запустить в любом дистрибутиве, соответствующем LSB, без необходимости подгонки под каждый конкретный дистрибутив. В частности, LSB:
- Требует поддержки исполняемых файлов в формате ELF.
- Требует поддержки исполнимых текстовых файлов, начинающихся с «#!<команда запуска интерпретатора><перевод строки>».
- Требует поддержки пакетов в формате RPM. При этом необязательно, чтобы это был основной формат пакетов в системе: дистрибутив может установить RPM параллельно с основным менеджером пакетов или сделать команду
rpm
обёрткой для основного менеджера и конвертировать пакеты, например, при помощи программыalien
. - Регламентирует среду исполнения программ. В частности, дистрибутив должен иметь файловую систему, соответствующую FHS 3.0.
- Указывает, какие программы и библиотеки должны быть установлены на компьютере.
Filesystem Hierarchy Standard регламентирует, какая иерархия файлов и директорий должна использоваться в дистрибутивах Linux (именно там описано назначение директорий /bin, /lib, /usr и проч.). Иерархия унаследована ещё от UNIX, однако с тех времён подверглась значительным изменениям. Для опытных пользователей в новой версии вряд ли будут какие-либо неожиданности, так как стандарт основан на и так широко распространённых практиках.
В рамках работы над стандартом выпущена сама спецификация, комплект для разработки приложений LSB SDK 5.0, инструмент для проверки совместимости LSB AppChecker 5.0 и плагин для среды разработки Eclipse. Linux Foundation готова сертифицировать дистрибутивы и приложения на соответствие LSB 5.0.
Основные изменения в LSB 5.0 по сравнению с 4.1:
- Стандарт теперь разбит на шесть модулей: Common (чисто информационный), Core, Desktop, Runtime Languages, Imaging, Trial Use. Хотя сертифицированный дистрибутив должен поставлять все модули, их теперь можно упаковывать в отдельные пакеты, и приложениям теперь рекомендуется заявлять, какие именно модули им нужны, чтобы, например, если приложение не имеет графического интерфейса, пользователю не приходилось зря устанавливать модуль Desktop. Так, на самом деле, и раньше было, но неофициально.
- Исключена библиотека Qt3, которая была туда добавлена в версии 4.1. Это нарушет обратную совместимость, но по заявлению Linux Foundation она уже была помечена как устаревшая (автор новости, правда, не нашёл такой отметки в спецификации 4.1).
- В модуль Trial Use (т.е. пока без гарантии, что их не удалят в будущих версиях) добавлены библиотеки GTK+ 3.6.4 (в модуле Desktop есть GTK+ 2.32 — обновление по сравнению с LSB 4.1) и libpng 1.5 (в модуле Desktop — libpng 1.2).
- Помимо GTK+ 2 обновлены Cairo и OpenGL
- Добавлено API XCB для X11
- Добавлены библиотеки SANE, libncursesw, libtiff, libxslt.
- Обновлено API многих других библиотек и программ.
- Разработчики LSB пообещали, что теперь будут ориентироваться не только на медленно обновляющиеся сверхстабильные дистрибутивы, такие как RedHat, но и на более распространённые и обновляющиеся быстрее, такие как Debian и Ubuntu.
Изменения в FHS 3.0 по сравнению с 2.3:
- Появилась директория /run. Туда переносится «информация о состоянии системы после загрузки», в частности, файлы с PID процессов, кторые создают некоторые демоны. Раньше эту функцию выполняла /var/run, теперь она объявлена устаревшей: её можно сделать ссылкой на /run.
- Удалена директория /usr/X11R6 (по просьбе X.org).
- Появилась директория /usr/libexec. Туда предлагается помещать исполнимые файлы, которые не должны вызываться пользователем напрямую, а только другими приложениями, установленными в /usr/bin. Раньше их часто помещали в /usr/lib, хотя они вовсе не являются библиотеками. Например, /usr/lib/firefox можно перенести в /usr/libexec/firefox.
- Добавлены директории /usr/share/ppd и /var/lib/color.
- Уточнено предназначение /usr/local, /opt и /srv.
- Из «Приложения для операционной системы Linux» удалены /lib32 и /lib64 (их покрывает шаблон /lib<qual> из общей части), добавлена директория /sys.
Хотя FHS до сих пор делится на общую часть, которую теоретически можно применять в любой POSIX-совместимой системе, и приложение для Linux, разработчики других UNIX-подобных систем отказались участвовать в обсуждении.
На данный момент уже многие популярные дистрибутивы (в т.ч. Red Hat Enterprise Linux, Oracle Linux, Mandriva, SUSE Linux Enterprise, Ubuntu) официально сертифицированы на соответствии той или иной версии LSB, а другие, такие как Debian, стремятся соответствовать, хотя и не имеют сертификации. Есть также целых три сертифицированных приложения, однако несертифицированных приложений больше.
Предваряя вопросы, ответим, что ни D-Bus, ни PulseAudio, ни systemd, ни протокол Wayland в спецификацию никак не входят. Для IPC предлагаются более низкоуровневые средства, для вывода звука — ALSA, для исполнения приложений при запуске компьютера предлагается спецификация для скриптов cron и init.