GoboLinux — это дистрибутив Linux , наиболее заметной особенностью которого является реорганизация традиционной файловой системы Linux . Вместо того, чтобы следовать стандарту иерархии файловой системы , как в большинстве Unix-подобных систем, каждая программа в системе GoboLinux имеет свое собственное дерево подкаталогов , где можно найти все ее файлы (включая настройки, специфичные для этой программы). Таким образом, программа "Foo" имеет все свои определенные файлы и библиотеки в , в соответствующей версии этой программы под рукой. Например, общеизвестный комплект компиляторов GCC версии 8.1.0 будет находиться в каталоге ./Programs/Foo
/Programs/GCC/8.1.0
По словам разработчиков GoboLinux, это приводит к более чистой системе. [2]
Иерархия GoboLinux представляет собой радикальный отход от файловой системы, традиционно используемой большинством UNIX-подобных операционных систем , где определенные типы файлов хранятся вместе в общих стандартных подкаталогах (например, /bin
для исполняемых файлов и /etc
для файлов конфигурации), и где менеджеры пакетов используются для отслеживания того, какой файл принадлежит какой программе. В GoboLinux файлы из каждой программы помещаются в собственный выделенный подкаталог соответствующей программы. Создатели GoboLinux заявили, что «файловая система является менеджером пакетов», а система пакетов GoboLinux использует саму файловую систему в качестве базы данных пакетов. [3] Говорят, что это создает более простое, менее загроможденное дерево каталогов. GoboLinux использует символические ссылки и дополнительный модуль ядра GoboHide , чтобы достичь всего этого, сохраняя при этом полную совместимость с традиционной иерархией файловой системы Linux.
Создатели GoboLinux заявили, что их дизайн имеет и другие «модернизмы», такие как устранение некоторых различий между схожими традиционными каталогами (например, расположением исполняемых файлов /bin
, /usr/bin
и /usr/local/bin
). Разработчики GoboLinux заявили, что это приводит к тому, что скрипты оболочки ломаются реже, чем в других дистрибутивах Linux. Это изменение, представленное GoboLinux в 2003 году, было принято другими дистрибутивами гораздо позже: Fedora объединила /bin и /usr/bin в 2012 году; [4] Debian включил объединение /usr по умолчанию в 2018 году. [5]
GoboLinux также позволяет пользователю устанавливать разные версии одной и той же программы одновременно (и даже запускать их одновременно). Более того, утверждается, что индекс управления пакетами никогда не может рассинхронизироваться с файловой системой, поскольку ссылки на несуществующие файлы просто становятся сломанными ссылками и, таким образом, становятся неактивными. Изменения файловой системы GoboLinux также допускают другие инновации, такие как совершенно иная загрузочная система на основе скриптов, которая не использует системы инициализации в стиле System V или BSD или одну из их замен.
На дизайн GoboLinux повлияли более ранние системы, такие как NeXTSTEP , AtheOS и BeOS , все из которых приняли оригинальные структуры файловых систем, сохраняя при этом значительную степень совместимости с Unix. В корне дерева GoboLinux находятся пять каталогов: Programs, Users, System, Data и Mount.
Compile — это программа, которая загружает, распаковывает, компилирует tar-архивы исходного кодаи устанавливает полученный исполняемый код, и все это с помощью одной команды (например,Compile foo
), используя простые сценарии компиляции, известные как «рецепты». [6]
Система Compile в некоторой степени похожа на систему Portage Gentoo , [7] которая основана на коллекции портов FreeBSD . Однако Portage создана для традиционной иерархии файловой системы, совместимой со стандартом иерархии файловой системы , в то время как Compile расширяет возможности отличительной иерархии файловой системы GoboLinux в область управления пакетами. Таким образом, в GoboLinux сама файловая система естественным образом служит своего рода базой данных менеджера пакетов. [8]
Программа Compile была представлена в GoboLinux версии 011. До этого велись обсуждения о портировании системы Portage Gentoo на GoboLinux и разработке порта как проекта SourceForge.net под названием GoboPortage . [9] [10]
Другие возможности Compile включают:
Релизы нумеруются с использованием восьмеричной системы счисления. По словам авторов, эта схема была выбрана, потому что она сохраняет типичный ведущий ноль, который присутствует во многих номерах версий свободного программного обеспечения (поскольку ведущий ноль часто указывает на то, что число восьмеричное), и это игра на тему « гонки номеров версий », которая произошла среди дистрибутивов Linux около 1999 года. При прочтении в виде десятичных чисел использование восьмеричных чисел вызывает детерминированный «подъем версии» каждые восемь релизов. До версии 013 GoboLinux не делал «точечных релизов», чтобы избежать намека на то, что некоторые релизы были более стабильными, чем другие. Эта традиция была нарушена с версией 014.01, обновлением 014, сосредоточенным на исправлении ошибок .
GoboLinux в настоящее время разрабатывается для x86-64 . Он был официально создан для i686 только до релиза 015, но в какой-то момент был сделан неполный порт на i386 . Порты также были сделаны для встраиваемых архитектур, таких как ARM и SuperH ; эти задачи были выполнены с помощью Bootstrap, [12] инструмента, разработанного специально для автоматизации создания портов.
LWN.net сделал обзор GoboLinux 010 в 2004 году: [13]
Оказывается, проект GoboLinux занимался именно этим — реорганизацией каталогов и файлов в новую структуру. Все началось с того, что один из разработчиков работал над системой, в которой у него не было привилегий суперпользователя, но ему все равно нужно было компилировать программы. Чтобы избежать трудностей при обновлении, он поместил отдельные программы в их собственные каталоги и назвал их в соответствии с соответствующими именами программ, например, ~/Programs/AfterStep. Другие части программ помещались в аналогично идентифицированные каталоги, такие как ~/Libraries, ~/Headers и т. д. Также были разработаны специальные скрипты для автоматизированной компиляции этих программ и правильного размещения отдельных компонентов.
Linux.com написал обзор о GoboLinux 013: [14]
Само собой разумеется, что этот тип иерархии помогает в управлении пакетами. Пользователи могут устанавливать и использовать несколько версий одной и той же программы или системных библиотек. Фактически, когда GoboLinux перешел на GNU Compiler Collection (GCC) версии 3, они все еще поддерживали работу старых программ, поскольку файловая система позволяет нескольким библиотекам мирно существовать вместе. Кроме того, удаление сводится к удалению каталога программы.
Джесси Смит из DistroWatch Weekly сделал обзор GoboLinux 015: [15]
Загрузка с носителя GoboLinux вызывает экран с текстовыми меню. Используя эти меню, нам предлагается выбрать предпочитаемый язык из списка и выбрать раскладку клавиатуры. Затем нам предоставляется текстовая консоль, в которой мы входим в систему как пользователь «gobo». Инструкции на экране рассказывают нам, как вызвать графический пользовательский интерфейс и как запустить установщик системы. Графической средой оказывается оконный менеджер Enlightenment. На рабочем столе находятся значки для запуска менеджера разделов GParted и установщика системы. В нижней части экрана мы находим меню приложений, переключатель задач и системный трей.
Смит также рассмотрел GoboLinux 016. [16]
Гобо — вымышленный персонаж. О нем мало что известно, потому что те, кто его видел, не выжили, чтобы рассказать о нем.
У него также есть вымышленный верный слуга по имени Фибо . Талисман GoboLinux — Кью — пингвин в одежде Фибо . [17]
Фибо, его верного слуги, никто из видевших его не выжил, чтобы рассказать эту историю. Кроме этого, мы никогда не рисковали углубляться в тему". Нет, талисмана зовут Кью. Это пингвин в одежде Фибо.