LXF81:Elektra

Материал из Linuxformat.

Перейти к: навигация, поиск

Что за штука… Elektra?

Решившие, что Elektra — подружка Грэма Моррисона, ошибаются: подружка — Лоретта. А Elektra — название блестящей идеи, реализация которой сулит избавить мир Linux от проблем с конфигурацией.

У меня всего пара минут; короче — что такое Elektra?

Elektra ставит целью заменить все файлы конфигурации одной простой иерархической и однородной базой данных для хранения всех настроек. Так будет лучше, потому что на данный момент файлы конфигурации разбросаны по всей системе, причем у каждого свой собственный формат. Не нужно будет целиком просматривать руководство, чтобы изменить одну опцию, как приходится делать сейчас. Разработчики проекта надеются, что Elektra станет главным репозитарием для хранения настроек — не только пользовательских программ, но и всех важных системных файлов конфигурации.

Разве раньше не пробовали этого делать?

Много раз. TUCS — The Unified Configuration System — ближе всех подошла к созданию простого интерфейса к обилию файлов конфигурации Linux, но исчезла без следа много лет назад. Была также Linuxconf, графическая оболочка для различных файлов, она все еще используется, но не является достаточной. По ряду причин ни одно решение не получило широкого распространения. Однако, раз уж каждый год провозглашается годом настольных Linux-систем, появление простой системы конфигурации жизненно важно для новых пользователей. Им необходимо справляться с настройкой Linux-системы без прочтения справочной документации, способной переполнить Британскую библиотеку.

Откуда взялось столь претенциозное имя?

Хороший вопрос. Быть может, у разработчиков «комплекс Электры»… Ну, это шутка, мы и сами не знаем.

Ведь комплекс Электры — это же термин Юнга? А замена ‘c’ на ‘k’ в названии не означает, что это один из проектов KDE?

Либо да, либо же они фанаты Дженнифер Гарнер [Jennifer Garner]. Вообще-то, расслабьтесь — KDE использовать не обязательно. Elektra работает на более низком уровне, чем любое рабочее окружение. Для успеха проекта необходимо, чтобы реализация была как можно более универсальной, работала на всевозможных дистрибутивах и была удобной для пользователя. Тем не менее, существует KDE-инструмент управления под названием KDBEedit, используемый для редактирования базы данных конфигурации. Интерфейс позволяет просматривать и менять иерархию настроек системы. Можно экспортировать их в XML, чтобы поделиться настройками с другими пользователями. Эти настройки обычно хранятся в виде пар ключ/значение — где ключ описывает кусок данных, например, Адрес электронной почты, а значение содержит строку (или данные какого-либо другого типа) с соответствующей информацией. Значения можно также модифицировать из командной строки.

Что-то знакомое… стойте, это ж вылитый реестр Windows!

Да, вы правы. Никуда не денешься — структура Elektra весьма похожа на ненавистный реестр Windows, и использует похожую иерархию. Как вы, наверное, знаете, реестр Windows использует узлы для разделения различных ключей на подкатегории (также известные как подключи). Самые известные из узлов — HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER, описывающие соответственно системные и пользовательские настройки. Elektra приняла эту идею на вооружение и сделала более читаемую иерархию ключей. На верхнем уровне находятся узел системы для хранения системных ключей, узел пользователя для ключей текущего пользователя и дополнительные узлы для других пользователей системы в форме user:username [пользователь:имя_пользователя].

Что содержится внутри главных узлов?

Развернув системный узел, вы обнаружите множество ветвей, эквивалентных сонмищу файлов конфигурации вашей системы Linux. Например, узел Файловой системы, являющийся Elektra-эквивалентом /etc/fstab, отвечает за монтирование всех файловых систем. Точно так же узел Групп эквивалентен файлу /etc/groups. Однако есть и более общие узлы — в частности, узел под названием Сеть, который содержит информацию всех файлов настроек, помогающих подключить ваш компьютер к сети. Системное программное обеспечение находится в своем узле sw. Здесь вы найдете настройки таких приложений, как X.org.

X.org? И нам не придется редактировать файл настроек, чтобы всего-навсего поменять разрешение экрана?

В этом вся идея, да. Фактически, разработчики Elektra немало потрудились, чтобы X.org заработал с Elektra — это один из ярчайших примеров демонстрации работы идеи. X.org был выбран потому, что встречается почти в каждом дистрибутиве Linux, а также потому, что использует длинный и запутанный файл конфигурации — xorg.conf. Разработчики Elektra написали заплатку к X.org, чтобы он читал настройки из Elektra, а не из xorg.conf. Они называют это Электрафикацией.

Значит, перевод приложения на Elektra — большой труд?

Разработчики надеются, что идея докажет свою жизнеспособность, и новые приложения будут сразу ориентироваться на Elektra. Тогда это будет не сложнее использования обычных файлов конфигурации. Но для зрелых проектов типа X.org могут потребоваться определенные усилия. Работа заплатки X.org начинается с проверки исходного файла конфигурации, создания для каждой опции записи в дереве, а также создания ключей с помощью лексического анализатора. Разработчики создали заплатку так, чтобы она была на 100 % совместима с другими версиями X.org — если установки не могут быть найдены в Elektra, то будет прочтен оригинальный xorg.conf и произведено заполнение базы Elektra. Благодаря этому достигается определенная гибкость, на случай изменения формата xorg.conf.

Ладно, с X это работает, но будет ли оно работать с файлами, требуемыми во время загрузки?

Это важный пункт и главная причина, по которой Elektra проектировалась с минимум зависимостей и с возможностью работы на любой системе. Существует библиотека, которая инкапсулирует все подробности ввода-вывода. Так как она не зависит от сложных библиотек или сетевого соединения, то может подключаться в процессе загрузки гораздо раньше, чем многие другие инструменты, и доступна даже из /sbin/init — процесса, порождающего все остальные процессы во время загрузки системы.

Как разработчики смогут добавлять поддержку Elektra?

Разработчикам потребуется использовать API Elektra, чтобы модифицировать ключи базы данных — а не обращаться к демону, как, например, в Gnome Gconf. Для манипуляций с ключами и значениями базы данных разработчикам надо будет просто использовать API, написанный на языке С . Как мы уже уже говорили, для новых проектов это будет несложно осуществить. Доступ к самой базе данных осуществляется через прикладную часть (back-end), а не напрямую.

Прикладную часть?

Это просто способ отделить API Elektra от способа хранения данных. То есть если ваше приложение Elektraсовместимо, то вам нечего беспокоиться о способе хранения значений конфигурации или о том, как разрешаются конфликты, когда несколько пользователей меняют значения одновременно. Этим займется прикладная часть, и некоторые реализации уже находятся в разработке. Самые простые используют файловую систему, в которой каждому ключу соответствует свой файл, а каждая ветвь в базе данных представляет собой каталог в файловой системе. Другие прикладные части используют обычные текстовые файлы или базу данных Berkeley. Поддержки прикладных частей с MySQL или Postgres пока что нет.

Можно ли сохранить в ней мои настройки Gnome и KDE?

И Gnome, и KDE проделали долгий путь к созданию собственных приложений настройки, и Elektra задумана не для соперничества с ними. А делать она будет следующее: используя заплатку вроде той, что к X.org, предложит интерфейс к наиболее общим системным опциям, которыми пользуются и KDE и Gnome — например, смена разрешения экрана или добавление общего каталога Samba. Elektra предоставит обоим рабочим средам более предсказуемый контроль над этими специфичными для каждого дистрибутива настройками, и, более того, позволит KDE получить доступ к изменениям, сделанным Gnome, и наоборот. Вот в чем соль!

Вы как-то позабыли указать источник, где можно почерпнуть дополнительную информацию.

Вы правы. Побольше узнать об Elektra можно на сайте проекта www.libElektra.org

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию