LINUX.ORG.RU

Linux Standard Base 5.0 + Filesystem Hierarchy Standard 3.0

 ,


5

5

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.

Объявление о выпуске LSB 5.0

Объявление о выпуске FHS 3.0

Страница с самими спецификациями

>>> Страница рабочей группы LSB

Всё ещё продолжают фантазировать о rpm… :}

Deleted ()

не исполнимых, а исполняемых

anonymous ()

rpm камно ведь

anonymous ()

The Linux Foundation против сустемДэ1!

anonymous ()

Никому не нужный RPM оттуда надеюсь выпилили? Всё, прочитал, не выпилили. Значит в морг.

Polugnom ★★★★★ ()
Последнее исправление: Polugnom (всего исправлений: 1)

ни D-Bus, ни PulseAudio, ни systemd, ни протокол Wayland в спецификацию не входят
набор требований к дистрибутивам Linux и к приложениям для Linux

А как же все эти зависимости и т.д? Почему они не затрагивают столь важный вопрос?

Gonzo ★★★★★ ()

Есть целых три сертифицированных приложения

А, вопрос снят. Сорри :D

Gonzo ★★★★★ ()

Добавлены библиотеки SANE, libncursesw, ...

разум, проклятие, что еще?

anonymous ()

кбез чьего вклада этих стандартов не существовало бы.

исполнимых

сертификацированы

ОМГ

Kilte ★★★★★ ()

Одному мне идея регламентировать в стандарте, каких версий должны быть библиотеки, кажется странной?

Учитывая, что:

Разработчики LSB пообещали, что теперь будут ориентироваться не только на медленно обновляющиеся сверхстабильные дистрибутивы, такие как RedHat, но и на более распространённые и обновляющиеся быстрее, такие как Debian и Ubuntu.

Kilte ★★★★★ ()

Linux Standard noncesce.

anonymous ()

Это тот самый стандарт, на который всем дистростроителям насрать?

templarrr ★★★★★ ()
Последнее исправление: templarrr (всего исправлений: 1)
Ответ на: комментарий от templarrr

Это тот самый стандарт, на который всем дистростроителям насрать?

Нет, только маргиналам.

dexpl ★★★★★ ()

Закопайте туда же, откуда выкопали.

intelfx ★★★★★ ()

Сильная это штука - предчувствие: даже через весь земной шар пробивает! Очень много раз в жизни оно у меня было так, что я хочу что-то сделать, а потом выясняется что очень даже не зря! Из последнего: услышал из стрима Кинамана о том, что он нуб в PC, и он нашёл очень хороших помощников. Я решил ему написать «Не забудьте рассказать про кнопку Turbo, и „Клавиатура не найдена - нажмите F1, чтобы продолжить“! Но потом подумал „нет - он и так испытывает психологическое давление от зрителей: ну когда уже, ну скоро уже? Во-вторых, он обдумывал сценарий фильма уже много лет, и сто раз всё обдумал не хуже меня. И даже сценарий написал. В-третьих, если отрывок уже снят, а тут такие как я с советами, то он и затягивать начнёт „вот тут переснять, вот здесь переделать...“, и испытывать психологическое давление от мысли „переделать, или оставить“, в любом случае опять задержки“. А потом моя „крутая“ мысль перестала казаться мне крутой.

Вдруг я вижу обновление на сайте: снят отрывок „Одного дня детства“ про PC. Блин, если бы я всё-таки отправил, я бы успел!

То же самое с LSB. Навязчиво лезла мысль написать авторам LSB мысли, которые показались мне гениальными, и которые придут им в голову с малой вероятностью. „Сделайте опциональные зависимости! Пульсу, DBus, libstartup-notification и libnotify в стандарт добавьте, но условие чтобы софт запускался даже в отстутвие этих либ - не выдавал „error: libnotify.so.1: file not found“. Например через dlopen или вынос функционала в отдельную либу.

Сразу бы и проблема с выпуском решилась: его ведь, наверное, потому и затягивали, что в RHEL6 появилась куча говна, которое вроде и не нужно, и проигнорировать нельзя. А также появились бы возможности: например сделать GNOME - дефолтным DE. Как бы весь проприетарный софт надо тестировать с ним, но в системе он быть не обязан, и софт обязан запускаться даже без гномолиб.

Сразу бы появились эти кнопки в рамочке окна (не отключение рамочки и рисование своей, а прямо рисование кнопок управления софтиной в Metacity), и ещё куча всего! Сейчас этому мешает „зоопарк“, а дефолтное DE в LSB сразу это исправит! Это по всей вероятности и хотели делать, но ограничились только библиотеками GTK и gnome-vfs2.

anonymous ()
Ответ на: комментарий от templarrr

Это тот самый стандарт, на который всем дистростроителям насрать?

Все дистростроители его поддерживают до сих пор. А вот проприетарщики потихоньку начали забивать, когда компания Adobe - одна из инициаторов LSB - ушла из Linux. Яркий пример - 2GIS для Linux. Сделали бы под LSB - корпоративщики под Linux сказали бы им спасибо! А так продолжают пользоваться сборкой для Wine, которую ДубльГис-овцы продолжают формировать, или веб-интерфейсом, потому что сторонний GLIBC и C++ Runtime убъёт всю гарантих на их EL6 и SLED11.

anonymous ()
Ответ на: комментарий от Kilte

Одному мне идея регламентировать в стандарте, каких версий должны быть библиотеки, кажется странной?

Тебе никто не мешает хранить в одном /usr/lib две версии одной либы! Не просто же так они названы libssl.so.0.9.8 и libssl.1.0.0 - а чтобы пресечь DLL Hell. [uel=http://packages.ubuntu.com/trusty/libssl0.9.8]Дистростроители так и делают.

anonymous ()
Ответ на: комментарий от templarrr

Дистростроители его поддерживают для галочки. Разработчики софта не поддерживают вообще в основной массе. Стандарт по сути мертворожденный.

Reset ★★★★★ ()

Про rpm конечно улыбнуло, да и не ясно, нужны ли вообще подобные стандарты

Drolyk ★★★ ()

[много флуда про RPM]

Всё правильно делают. DEB не нужен. Пока DEB не было, линукс активно шёл к десктопу - вот пруф: http://www.youtube.com/watch?v=0SGQo8-dcww (смотреть с 2:00). Когда вышел этот фильм, убунтой даже не пахло! Всё было пучком, но возникла проблема несовместимости готовых бинарных программ между дистрами - и даже между версиями одного дистра! Появляется LSB - появилась возможность делать один бинарь под Mandrake, Red Hat Enterprise Linux, Fedora Core, SUSE. А также маргинальщину вроде Lindows, ASP, Alt и т.д. И вдруг появляется Шаттлворт, и заявляет «я хочу чтобы Ubuntu стала самой популярной операционной системой в мире! Я вбухаю в это дело миллиарды долларов, и стану вторым Билл-Гейтсом!»

У него был сильный маркетинг, нацеленный на студентов, не заставила себя ждать фан-база... Проблема в том что убунта, по факту, была уже не нужна! Canonical нифига не создавала, а только переизобретала то, что у других было уже давно.

Так и был дискредитирован хороший и в целом положительный проект - LSB. Его с нетерпением ждали, и встретили с распростёртыми объятьями - но потом вышла Ubuntu, и проект не успел раскрутиться: «что, нужно формировать RPM-пакет? Да я лучше под Ubuntu 8.10 скомпилю». Ну и где теперь эти пакеты? Нифига не пашут на современных дистрах! В то время как установить старый релиз Java, Maya и OpenOffice можно - и всё благодаря LSB.

anonymous ()
Ответ на: комментарий от anonymous

Сделайте опциональные зависимости! Пульсу, DBus, libstartup-notification и libnotify в стандарт добавьте, но условие чтобы софт запускался даже в отстутвие этих либ - не выдавал „error: libnotify.so.1: file not found“. Например через dlopen или вынос функционала в отдельную либу.

Это будет совершенно противоречить всей идее LSB. Программу, которая динамически грузит все свои зависимости, ты и сейчас можешь написать. Идея LSB в том, чтобы ты точно знал, что будет на целевой системе, а всё остальное притаскивал с собой.

proud_anon ★★★★★ ()
Ответ на: комментарий от Kilte

Одному мне идея регламентировать в стандарте, каких версий должны быть библиотеки, кажется странной?

Там регламентированы API (т.е. функции, их параметры, возвращаемые значения и пр.). Какая конкретно будет реализация, не важно. Однако эти API списываются с определённых версий существующих библиотек.

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

Объясню свою мысль подробнее: рекомендуемые, но не обязательные зависимости. Например если LSB объявит GNOME - дефолтным DE, то эти несчастные элементы в рамочке окна сразу появятся в KWin, как только их запилят в Metacity. При этом иметь на компе GNOME пользователь будет не обязан. На самом деле примеров множество.

anonymous ()
Ответ на: комментарий от anonymous

Это понятно. Просто я не вижу в этом никакого смысла. Если разработчики захотели использовать libxxx, версии X, то они так и сделают. И плевали они на кучку каких-то наркоманов. Или наоборот есть древняя софтина, требующая libxxx версии a.b.c, а стандарт требует, чтобы эта либа была версии x.y.z.

Я клоню к тому, что есть куча софта, куча библиотек, и заставить всех использовать либы версий, указанных в стандарте вряд ли удастся. Если это делается не для этого, то тогда для чего?

Kilte ★★★★★ ()

(по просьбе X.org)

ждем systemd (по просьбе Поттеринга)

reprimand ★★★★★ ()
Ответ на: комментарий от proud_anon

Там регламентированы API (т.е. функции, их параметры, возвращаемые значения и пр.). Какая конкретно будет реализация, не важно. Однако эти API списываются с определённых версий существующих библиотек.

Ах вот оно что. Только вот что-то мне подсказывает, что всё должно быть наоборот. Выходит стандарт с новым API, разрабы обновляют свои библиотеки, за ними подтягивается софт. Правда в этом случае боюсь, всё это будет происходить очень долго и никто не станет заниматься такой ерундой. Да и все случаи покрыть не получится. Гораздо проще поставить нужную версию, когда это потребуется.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

разработчики ... плевали они на кучку каких-то наркоманов

LSB - серьёзные ребята, с которыми большие компании считаются. Представь что Sony Vegas вышел для Linux. Ты его покупаешь и запускаешь... Сначала он требует libpulse.so.1, потом libqt4 (притом что GTK он тоже использует), ffmpeg 1.2 (ни в какую не работая с 2.0, ну или хотя бы 1.3), Xine, экзотику вроде libopencv (строго определённой версии), libCg и vaapi. В репозитории находится примерно половина всего этого софта, вторую половину ты компилируешь, устанавливаешь из предыдущей версии дистрибутива, или доверяешься «левому» PPA... Какого мнения ты будешь об этой софтине? Какого мнения будет новичок в мире Linux, который установил его только потому, что под него есть Sony Vegas?

Поэтому большие компании с оборотом в миллионы долларов используют LSB прямо сейчас.

anonymous ()
Ответ на: комментарий от Polugnom

Вы хотите развести срач по этому поводу?

Ну хорошо, я начну. Когда в deb-дистрибутивах будет что-то наподобие DeltaRPM по умолчанию?

nexfwall ★★★★ ()
Ответ на: комментарий от anonymous

Объясню свою мысль подробнее: рекомендуемые, но не обязательные зависимости.

Ну это в любом случае сильно усложнит разработку. Сейчас там пять модулей, а будет пятьдесят, причём каждый из них будет иметь полное право отсутствовать.

Например если LSB объявит GNOME - дефолтным DE, то эти несчастные элементы в рамочке окна сразу появятся в KWin, как только их запилят в Metacity.

Да щас. Потому что авторы LSB могут заставить разрабов KDE что-то делать, ага. Пока весь стандарт основан на реально существующих API, и чтобы его поддерживать, надо всего лишь поставить некоторое количество программ и библиотек, а всё равно вон какие проблемы с адаптацией. А ты хочешь, чтобы в KDE обеспечили совместимость с Гномом. Может быть только наоборот: сначала в кедах обеспечат совместимость, а потом уже, через несколько лет, это может появиться в LSB.

proud_anon ★★★★★ ()

Странными какими-то эти стандарты становятся.

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от Kilte

Выходит стандарт с новым API, разрабы обновляют свои библиотеки, за ними подтягивается софт

«КОНЕЧНОГО ПОЛЬЗОВАТЕЛЯ НЕ ВОЛНУЕТ!» (с) Линус Торвальдс. Ты покупаешь коробочную версию Dr.Web с лицензией на 12 машин. На Windows и Mac-машины он встаёт без проблем, а пакеты RPM/DEB для Linux «не встают», потому что у тебя Ubuntu 15.04, в которой GTK 2.32 не имеет обратной совместимости с GTK 2.30, Xorg 1.10 с 1.9, а Dbus 1.6 c 1.5. При этом на файловый сервер с CentOS 7 десктопный антивирус прекрасно встаёт, но там он нафиг не нужен. Что ты будешь делать? Копаться по форумам, и копаться в рабочих местах пользователей? Зная что тебе ещё это повторять с драйвером на принтер и 1С-кой...

Ладно, настроил, работает! Виндузятники и макосники довольны, а линуксоиды через месяц нормальной работы заявляют: антивирус ругается, что не может стартовать! Ты пытаешься приконнектиться через TeamViewer - не получается - ssh говорит что демон не стартует. Идёшь на работу и смотришь что случилось, а там... Вышло обновление на антивирус. Бинари пересобраны в Ubuntu 15.04. TeamViewer отвалился по той же самой причине...

Теперь понятно зачем нужна стандартизация для проприетарного ПО?

anonymous ()
Ответ на: комментарий от Polugnom

Никому не нужный RPM

RHEL 7.

4 квартал 2019 (Фаза 1)
4 квартал 2020 (Фаза 2)
30 июня 2024 (Фаза 3)
30 июня 2027 (Расширенная фаза)

И это еще в федорке от yum только отказались, rpm никуда не делся.

KennyMinigun ★★★★★ ()

/run

вот этот срач реально напрягает...

anonymous ()
Ответ на: комментарий от anonymous

У него был сильный маркетинг, нацеленный на студентов, не заставила себя ждать фан-база... Проблема в том что убунта, по факту, была уже не нужна!

Точно, убунта убила десктопный линукс. Теперь в массовом сознании линукс ассоциируется с кривым убожеством.

Freyr69 ★★★ ()
Ответ на: комментарий от anonymous

Дело не в стандартизации ПО, а в отсутствии нормальных схем деплоя под линуксом, которые не зависели бы от версии дистрибутива.

Reset ★★★★★ ()
Ответ на: комментарий от nexfwall

Когда в deb-дистрибутивах будет что-то наподобие DeltaRPM по умолчанию?

А зачем? Трафик безлимитный, десятигигабитные карты, зеркала в любой точке мира есть. На спичках пусть нищие админы локалхоста экономят.

anonymous ()
Ответ на: комментарий от Reset

Дело не в стандартизации ПО, а в отсутствии нормальных схем деплоя под линуксом, которые не зависели бы от версии дистрибутива.

Опиши «нормальную схему деплоя», а то сдаётся мне, что то ли я живу в параллельной реальности, то ли ты совсем не Лев Толстой.

anonymous ()
Ответ на: комментарий от anonymous

Это когда все библиотеки летят вместе с приложением, в том числе и «системные» типа glibc.

Reset ★★★★★ ()
Ответ на: комментарий от Freyr69

До Юнити была ничё так :-)

Помню, установил Ubuntu на комп, на котором Windows XP хорошо себя чувствовала - Pentium IV 512 Mb. Мне нужно было воспользоваться сканером, под который не было драйверов на XP (выяснилось что под Linux работает, но делает изображение синим - и пришлось ставить 98). На 512 Мб RAM Ubuntu было тесно. Наверное, дело в LiveCD - установил на комп, и всё заработало шустро (потом я узнал что можно было сделать cd /media/windows && dd if=/dev/zero of=swap.img bs=8M count=128 && sudo mkswap swap.img && sudo swapon /media/windows/swap.img, и даже на NTFS работало!). Но спустя минуту начинался адский SWAP, когда в Ctrl-Alt-F1 вводишь пароль правильно, а система говорит «превышено время ввода пароля».

А память сжирал какой-то скрипт на питоне, проверяющий обновление системы. 44% отжирал. Разумеется всё это отключается - но блин, ни в одном опробованном мной ранее линуксе не было таких проблем! И LiveCD работали нормально, и система не думала что она умнее пользователя, и не лезла обновляться без спроса (на этапе установки спрашивали, нужно ли это делать). Ubuntu, кажется, 9.04.

anonymous ()

Что там в стандарте по поводу ~/.<programname> vs ~/.{config,local,cache,...}/<programname>?

O02eg ★★★★★ ()
Ответ на: комментарий от anonymous

А что делать тем, кому приходится довольствоваться лимитированным жопорезом, или 4G, но только на самой окраине города?

nexfwall ★★★★ ()
Ответ на: комментарий от anonymous

До юнити чем оно от дебиана отличалось? Кодеками и прошивками искаропки? Так есть неоф. сборки деба. Тем, что они нестабильный тестовый дистр выдают за ос для домохозяек? Так это их главный косяк.

А память сжирал какой-то скрипт на питоне, проверяющий обновление системы.

Угу, оно до сих пор так, правда федора с гномом теперь тоже подобное запилили, гном3 теперь идет с впиленными намертво трэкерами, почтовыми клиентами и проч. менеджерами обновлений, в итоге на нетбуке со старта выжрало 50%cpu и гиг памяти. И отключать это все не так просто, ибо гуевые настройки автозапуска тоже выпилили.

Freyr69 ★★★ ()
Ответ на: комментарий от Reset

Это когда все библиотеки летят вместе с приложением, в том числе и «системные» типа glibc.

А чем всякий локалхостовый инструментарий типа докеров-вагрантов с кореосами не угодил? Как раз оно — приложения со всеми системными библиотеками, даже с ведром.

Хотя вообще с таким подходом ты не тот инструмент выбрал изначально. Это идеологически совершенно иная платформа была бы.

anonymous ()

ни D-Bus, ни PulseAudio, ни systemd в спецификацию никак не входят.

Это они, конечно, тормозят. Ничего, думаю к 6-й версии добавят - /run же добавили.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.