Русская Википедия:GoboLinux
GoboLinux — это свободная операционная система семейства Linux, выделяющаяся отходом от принятых в этом семействе стандартов (Filesystem Hierarchy Standard) в пользу упрощения управления и использования системы. Ключевые решения — это изменённая иерархия файлов, способ загрузки системы и управление пакетами, отчасти схожее с решениями Gentoo.
Общая информация
Файловая система в GoboLinux в корне меняет и упорядочивает исторически сложившуюся модель остальных Linux-систем — здесь она является не только хранилищем файлов, но и своеобразной системой управления пакетами. Так, каждая программа, со всеми настройками, библиотеками и прочими файлами, хранится в своём отдельном каталоге. Более того — в нём же могут располагаться и одновременно использоваться сразу несколько версий этой программы (каждая в своём подкаталоге с номером версии). Благодаря такой схеме управление программами упрощается до тривиальных файловых операций, взамен ограниченной системы команд типичных пакетных менеджеров[1].
Если быть точным, набор управляющих программ для пакетов в GoboLinux всё же есть, но они, скорее, играют роль «упрощающих скриптов» (даже написаны они на bash) — все те же операции над файлами можно проделать и вручную, что резко повышает «ремонтируемость» системы и гибкость управления.
Корневая иерархия каталогов в GoboLinux также подверглась модернизации — взамен разбросанных каталогов bin, lib, local, shared в системе имеется центральный каталог, под которым собраны все файлы по типам. Например, все исполняемые файлы (вернее, их символические ссылки, ведущие в персональный bin-каталог программы) собраны в каталоге /System/Links/Executables. Этот единообразный подход резко упрощает управление всей системой — становится маловероятно встретить ошибку «программа не найдена» или изменить неправильный конфигурационный файл — для всех них определено одно и только одно место. Fedora слили /bin и /usr/bin в 2012 году[2], а Debian включил слияние /usr по умолчанию в 2016 году[3].
Несмотря на радикальные различия, GoboLinux не нарушает работы существующих программ, жёстко завязанных на иерархии каталогов: в системе по-прежнему есть физические каталоги /usr, /lib и т. д., но для более удобного обращения с системой они скрываются от пользователя модулем ядра GoboHide.
GoboLinux отличается и другими нововведениями, такими как новая система запуска, отличная от SysV или BSD. Готовится к выпуску и новая система управления пакетами, которая будет включать управление не только классическим набором линукс-программ, но и модулями из таких гетерогенных систем как CPAN из Perl или RubyGems из Ruby — установка модулей из этих репозиториев станет такой же прозрачной, как и для любой обычной программы.
Иерархия файловой системы
На структуру GoboLinux повлияли ранние системы, такие как NeXTSTEP, AtheOS и BeOS, которые использовали собственную структуру файловой системы, сохраняя заметную совместимость с Unix. В корне GoboLinux лежат 6 каталогов: Programs, Users, System, Files, Mount и Depot. Содержимое каждого из них описано ниже.
- /Programs/ — этот каталог содержит по одному каталогу на каждую установленную программу. Каждый из них, в свою очередь, содержит один или больше каталогов для разделения версий и, возможно, каталоги Settings и Variable. Примеры путей — /Programs/Bash/3.0/bin/bash, /Programs/Xorg-Server/Settings/X11/xorg.conf.
- /Users/ — этот каталог содержит домашние каталоги пользователей. Например, для пользователя harley домашним каталогом будет /Users/harley.
- /System/ — важные системные файлы. Большинство управляется системными утилитами (например, /System/Settings/passwd) и скриптами GoboLinux (например, /System/Links).
- Links/ — содержит каталоги с символическими ссылками на файлы из /Programs.
- Environment/ — ссылки на файлы окружения. Эти файлы собираются вместе в один файл, который потом загружается шеллом, позволяя программам устанавливать переменные окружения.
- Executables/ — содержит ссылки на файлы из каталогов bin и sbin каждого пакета.
- Headers/ — этот каталог содержит ссылки на файлы из каталога include каждого пакета.
- Libraries/ — ссылки на файлы из каталога lib каждого пакета.
- Manuals/ — содержимое man и info.
- Shared/ — ссылки на файлы из каталога share каждого пакета.
- Tasks/ — ссылки на файлы из каталога Resources/Tasks каждого пакета.
- Settings/ — конфигурационные файлы и ссылки на файлы из каталога Settings каждого пакета.
- BootScripts/ — скрипты, используемые при загрузке системы. Это символическая ссылка на каталог Settings/BootScripts/, находящийся в /Programs/BootScripts.
- Variable/ — различные журналы, временные файлы и файлы очередей.
- tmp/ — временные файлы.
- Kernel/ — Каталоги, относящиеся к ядру.
- Boot/ — программы и файлы конфигурации, используемые во время загрузки системы. Здесь находятся ядро и конфигурационные файлы загрузчика.
- Devices/ — файлы устройств (этим каталогом управляет udev).
- Modules/ — содержит модули ядра, упорядоченные по версии ядра.
- Objects/ — предоставляет доступ к информации об устройствах и настройки ядра (появилось в качестве виртуальной файловой системы sysfs в ядре Linux 2.6).
- Status/ — предоставляет доступ к информации о процессах (виртуальная файловая система procfs).
- Links/ — содержит каталоги с символическими ссылками на файлы из /Programs.
- /Files/ — хранит используемые программами данные, которые не являются частью этих программ. Файлы в данном каталоге обычно самодостаточные, например, шрифты, кодеки, плагины и тому подобные, которые не требуют управления со стороны менеджера пакетов. Программы могут создавать здесь свои подкаталоги, чтобы хранить данные, относящиеся к системе, в которой они установлены. Например, Compile — сборщик пакетов в GoboLinux — использует эту возможность.
- /Mount/ — содержит точки монтирования для подключения дополнительных локальных и удалённых файловых систем. Содержит такие точки монтирования, как CD-ROM, Floppy и Zip.
- /Depot/ — хранилище пользовательских файлов. Это хранилище пользователи могут организовывать так, как им надо. Никакие подкаталоги /Depot/ не входят в стандартную иерархию GoboLinux.
Программа «Compile»
Compile — утилита, позволяющая скачать исходники указанной программы, распаковать их, скомпилировать и установить в систему одной командой (например, Compile foo
, чтобы установить программу foo из исходников). Compile использует простые сценарии компиляции, называемые «рецептами» (Шаблон:Lang-en)[4].
Compile в чём-то схожа[5] с системой Portage в Gentoo, которая основана на FreeBSD Ports и выполняет установку, руководствуясь «ebuild'ами». Но система Portage создана для работы в традиционной файловой иерархии, совместимой с FHS, а система Compile расширяет возможности файловой иерархии в GoboLinux до сферы управления пакетами. Так, в GoboLinux файловая система служит менеджером пакетов (см. «The Ideas Behind Compile»[6]).
Система Compile появилась в GoboLinux версии 011. До этого велись разговоры о портировании системы Portage из Gentoo в GoboLinux в качестве проекта GoboPortage на Sourceforge.net.[7][8]
Другие особенности Compile:
- Скачивает исходники пакетов из первоисточника: хранилище дистрибутива (или одно из его зеркал) содержит только рецепты. Рецепты могут скачиваться "на лету" либо заранее все сразу.
- Использует минималистичные и декларативные сценарии компиляции: обычная последовательность «configure; make; make install» может быть записана в виде двухстрочного рецепта, что очень облегчает поддержку рецептов в актуальном состоянии.
- Поддерживает зависимости в стиле GoboLinux: программы, скомпилированные пользователем «вручную», тоже учитываются при учёте зависимостей пакетов.
- Не зависит от путей: может работать в так называемом режиме «Rootless»[9] — установке GoboLinux, например, в каталог $HOME внутри другого дистрибутива.
Отличия от традиционных дистрибутивов
Файловая иерархия
В иерархии GoboLinux файлы сгруппированы по функциональному назначению в категории с использованием индексации, основанной на симлинках. Индекс хранится в каталоге /System/Links/: все исполняемые файлы доступны в /System/Links/Executables/, все библиотеки — в /System/Links/Libraries, и так далее. Такой подход устраняет традиционные, характерные для FHS различия между несущественными файлами, находящимися в /usr, и критически необходимыми файлами, которые находятся в корне /. Разработчики других дистрибутивов стараются этого придерживаться, потому что такие различия были когда-то полезны, но сегодня, в совершенно другой, современной среде, они не являются необходимостью.Шаблон:Нет АИ
Симлинки
Существуют символические ссылки, обозначающие обычные каталоги Unix, но указывающие на структуру каталогов GoboLinux. Поэтому можно найти каталоги /etc, /var/log и usr/bin на старых местах. Эти ссылки указывают на эквивалентные каталоги в /System/Links/, так что ключевые пути, такие как /bin/sh или /etc/passwd, остаются корректными. Такие ссылки совместимости скрываются из виду с помощью модуля GoboHide для ядра. Этот модуль, который реализует сокрытие файлов в Linux, используется чисто из эстетических соображений и вовсе не обязателен.
Суперпользователь
Суперпользователь, традиционно известный как «root» с UID равным 0, может иметь любое другое имя в GoboLinux, выбираемое при установке. В отличие от других дистрибутивов, в GoboLinux домашний каталог суперпользователя вовсе не /root, а /User/NAME — как и у других пользователей. Согласно статье hishamШаблон:Нет АИ, так было решено, потому что ему никогда не нравилось понятие обособленного суперпользователя.
Система загрузки
GoboLinux использует собственную процедуру запуска, в отличие от других дистрибутивов Linux, в которых применяются системы запуска systemd или System V. В каталоге /System/Settings/BootScripts лежат несколько файлов, которые полностью управляют процессом загрузки: BootUp и ShutDown выполняются, соответственно, во время запуска и остановки системы. В дополнение к ним можно создавать скрипты для различных «уровней запуска» (Шаблон:Lang-en), чтобы управлять способами, которыми может быть загружена система (например, создать скрипт Single для однопользовательского режима, Multi — для многопользовательского, Graphical — для графического режима, и так далее). Файл /System/Settings/BootOptions отделяет настройки системы от других скриптов. Скрипты для запуска или останова демонов и применения настроек находятся в /System/Links/Tasks и могут быть запущены скриптами загрузки.
Релизы
Релизы нумеруются в восьмеричной системе счисления. Авторы говорят, что они выбрали её из-за нуля в первой цифре (в языке Си при записи чисел в восьмеричной системе в первой цифре ставится ноль), и является насмешкой над гонкой за версиями, происходившей среди дистрибутивов примерно в 1999 году. Если читать число как десятичное, то происходит предсказуемый «скачок» версии каждые 8 релизов. До версии 014 в GoboLinux не было минорных релизов, то есть версия состояла всего из одного числа, чтобы не вводить в заблуждение, что один релиз более стабилен, чем другой. Традиция была нарушена при выпуске релиза 014.01 — обновления, которое содержало, в основном, исправления ошибок релиза 014.
- Релизы до 005 использовались только внутри группы разработчиков.
- 005—2003: первый публичный релиз в сети.
- 006 — 9 мая 2003: добавлен модуль GoboHide, введено использование песочницы для установки пакетов.
- 007 — 22 октября 2003: добавлен каталог Resources для хранения метаданных о пакетах.
- 010 — 7 января 2004: добавлен графический установщик, доступный в среде рабочего стола, запущенного с LiveCD.
- 011 — 7 июня 2004: добавлена утилита Compile — инструмент сборки пакетов в GoboLinux.
- 012 — 6 июня 2005: добавлена утилита Manager для управления системой в графическом интерфейсе.
- 013 — 2 ноября 2006: добавлена утилита Listener, позволяющая следить за событиями в файловой системе и назначать действия, выполняемые автоматически.
- 014 — 31 декабря 2007: новый стабильный релиз, включающий обновления пакетов, исправления ошибок и новые версии утилит управления GoboLinux-ом.
- 014.01[10] — 30 марта 2008: обновление для релиза 014, содержащее исправления багов и несколько обновлений пакетов.
- 015 alpha — 21 января 2014: Релиз первой альфы после долгого перерыва.
- 015 — 7 мая 2014: первая стабильная версия после шестилетнего перерыва.
Портирование
По данным на март 2006 года Gobolinux официально выпускается только под i686, и портирование под i386 носит частный характер, а потому неполный. Однако в 2003 году Hisham Muhammad, главный разработчик в проекте GoboLinux, написал «Сляпанное наспех руководство по портированию»[11] для тех, кто хотел портировать GoboLinux под платформу PowerPC и другие архитектуры. Он также занимался портированием сам.[12] Были получены версии для встраиваемых систем, таких как ARM и SuperH, которые легко делались с помощью утилиты Bootstrap[13], специально созданной для автоматизации портирования.
Мнения
LWN.net рассмотрел GoboLinux 010 в 2004 году[14].
Linux.com написал обзор на GoboLinux 013[15].
Джесси Смит из DistroWatch Weekly рассмотрела GoboLinux 015[16]. Смит также рассмотрела версию 016[17].
Примечания
Литература
Ссылки
- Шаблон:Официальный сайт
- Блог Michael — разработчика GoboLinux, публикующего все новости касательно GoboLinux
- Шаблон:DistroWatch
- Обзор GoboLinux на Linux.com
- ↑ pkgsrc and the concepts of package management 1997-2007 (part 2) Шаблон:Wayback.
- ↑ Features/UsrMove Шаблон:Wayback. Fedora Project Wiki.
- ↑ Index of /changelogs/main/d/debootstrap/ Шаблон:Wayback.
- ↑ GoboLinux’s recipe for delicious package management Шаблон:Wayback. Linux.com.
- ↑ GoboLinux Compile — A Scalable Portage? Шаблон:Wayback Slashdot.
- ↑ «The Ideas Behind Compile» Шаблон:Wayback Шаблон:Webarchive
- ↑ GoboGentoo Шаблон:Wayback. Gentoo Forums.
- ↑ GoboPortage Шаблон:Wayback. SourceForge.net.
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Quick-and-Dirty Porting Guide Шаблон:Wayback.
- ↑ GoboLinux PPC Шаблон:Wayback.
- ↑ GoboLinux Embedded Шаблон:Архивировано.
- ↑ GoboLinux - Fun with File System Hierarchy Шаблон:Wayback. LWN.net.
- ↑ GoboLinux's recipe for delicious package management Шаблон:Wayback. Linux.com.
- ↑ DistroWatch Weekly, Issue 562 Шаблон:Wayback, 9 June 2014.
- ↑ DistroWatch Weekly, Issue 696 Шаблон:Wayback, 23 January 2017.