Alteratorctl

Материал из ALT Linux Wiki


Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

alteratorctl — консольное приложение, предназначенное для вызова методов интерфейсов, разработанных в рамках Alterator на D-Bus.

Назначение

Программа ADT предназначена для:

  1. Системных администраторов.
  2. Опытных пользователей.

alteratorctl является компонентом новой реализации проекта Альтератор, Alterator на D-Bus.

Установка

Для установки alteratorctl из задания (таски), воспользуйтесь поиском.

Команды установки

# apt-repo add <номер_задания>
# apt-get update
# apt-get install alteratorctl

Описание модулей

Приложение имеет модульную структуру. Каждый модуль предназначен для работы с определенным интерфейсом объектов на D-Bus. Запуск модулей осуществляется при помощи команды

$ alteratorctl <имя_модуля> <команда_модуля>

Команда $ alteratorctl <имя_модуля> --help отображает возможности модулей.

Посмотреть список модулей можно при помощи команды $ alteratorctl -m:

alteratorctl-editions1.png


В настоящий момент реализовано 6 модулей:

manager

Использует интерфейс org.altlinux.alterator.manager объекта /org/altlinux/alterator.

editions

Использует интерфейс org.altlinux.alterator.edition1 объектов из пакетов с редакциями.

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

Для работы некоторых команд модуля могут потребоваться права администратора.

Информация по редакциям

Редакция — набор компонентов в составе дистрибутива. Каждая редакция содержит индивидуальный набор предустановленных и доступных для установки компонентов.

Подробнее про установку компонентов и работу с ними можно прочитать на соответствующей странице alt-components.

Список доступных редакций на данный момент:

  1. Альт Сервер (edition_server)
  2. Альт Домен (edition_domain)

Структура редакции

Структура редакции представляется в формате TOML и имеет следующий вид:

type = "Edition"
name = "имя редакции"
display_name.en = "Отображаемое имя редакции на английском"
display_name.ru = "Отображаемое имя редакции на русском"

license = "Имя лицензии/Релиз"
arches = [ "Архитектура 1", "Архитектура 2" ]

desktop_environment = "Графическое окружение"
kflavours = { default = "Версия ядра по умолчанию", options = [ "Версия ядра 1", "Версия ядра 2" ] }
languages = { default = "Язык по умолчанию", options = [ "Язык 1", "Язык 2" ] }

[sections.base]
display_name.en = "Имя базовой секции компонентов, входящих в образ на английском"
display_name.ru = "Имя базовой секции компонентов, входящих в образ на русском"
components = [
    "Компонент 1",
    "Компонент 2",
    "…",
    "Компонент N"
]

[sections.main]
display_name.en = "Имя секции компонентов, доступных к установке на английском"
display_name.ru = "Имя секции компонентов, доступных к установке на русском"
components = [
    "Компонент 1",
    "Компонент 2",
    "…",
    "Компонент N"
]

Использование модуля

Модуль предусматривает использование следующих команд и опций:

Команды:
description [название редакции]         получить описание выбранной редакции.
get                                     получить название текущей редакции.
info [название редакции]                вывести информацию о выбранной редакции.
license [название редакции]             вывести информацию о лицензии выбранной редакции.
list [опции]                            вывести список доступных редакций.
set [название редакции]                 установить выбранную редакцию.

Опции:
-d, --display-name-only                 показать только отображаемые имена редакций.
-D, --no-display-name                   скрыть отображаемые имена редакций.
-p, --path-only                         отобразить пути объектов редакций на D-Bus.
-n, --name-only                         отобразить только имена объектов редакций.
-N, --no-name                           скрыть отображение имён объектов редакций.
-h, --help                              показать справку модуля editions.

Примеры использования модуля

  1. Отображение имени текущей редакции.
Команда alteratorctl editions выведет список доступных редакций и покажет текущую:
alteratorctl-editions2.png
  1. Отображение только короткого англоязычного названия текущей редакции.
Команда alteratorctl editions get покажет короткое англоязычное название текущей редакции:
alteratorctl-editions3.png
  1. Установка выбранной редакции.
Команда alteratorctl editions set edition_domain установит редакцию Альт Домен:
alteratorctl-editions4.png
  1. Получение информации о лицензии выбранной редакции.
Команда alteratorctl editions license edition_domain покажет информацию о лицензии редакции Альт Домен:
alteratorctl-editions5.png
Конкретно в данном случае вывод команды alteratorctl editions license edition_domain не будет отличаться от вывода команды alteratorctl editions license.

components

Использует интерфейс org.altlinux.alterator.component1 объектов установленных компонентов.

diag

Использует интерфейс org.altlinux.alterator.diag1 объектов установленных инструментов диагностики.

packages

Использует интерфейсы org.altlinux.alterator.rpm1, org.altlinux.alterator.apt1, org.altlinux.alterator.repo объектов org/altlinux/alterator/rpm, /org/altlinux/alterator/apt, /org/altlinux/alterator/repo соответственно.

systeminfo

Использует интерфейс org.altlinux.alterator.systeminfo1 объекта org/altlinux/alterator/systeminfo.

Спецификация

Документация представлена на странице проекта.

Пример

Опишем типовой внутренний модуль alteratorctl и архитектуру модуля.

Внутренний клиентский модуль - объект класса, реализующего интерфейс AlteratorCtlModuleInterface по принципу, принятому в GLib для объектно-ориентированного программирования.

Интерфейс AlteratorCtlModuleInterface предполагает, что в модуле должны быть реализованы 3 метода:

  • run_with_args - запуск модуля с параметрами командной строки;
  • run - запуск модуля с контекстом;
  • print_help - вывод справки об использовании модуля.

Регистрация модуля

Модуль в alteratorctl необходимо зарегистрировать перед его использованием. Регистрация модуля осуществляется вызовом метода alterator_ctl_register_module() у объекта app типа AlteratorCtlApp в функции main.

В функцию передается указатель на объект типа AlteratorCtlApp, где происходит регистрация, и на структуру типа alterator_ctl_module_t, в которой есть указатели на конструкторы, деструкторы и id модуля.

Id модуля

Id модуля представляет собой указатель на строку, содержащую имя модуля. Именно по имени модуля alteratorctl понимает, какой модуль запустить. Модуль указывается первым после общих ключей alteratorctl в командной строке.

Например,

$ alteratorctl -v manager help

где
* -v - общий для модулей параметр
* manager - имя (id) запускаемого модуля
* help - подкоманда для модуля manager.

Конструктор модуля

Конструктор модуля - функция, возвращающая указатель на AlteratorCtlComponentsModule. Конструктор модуля принимает в виде параметров:

  • указатель на AlteratorCtlApp, в котором зарегистрирован модуль;
  • указатель на структуру типа alteratorctl_arguments_t, которая содержит общие для всех модулей параметры.

Деструктор

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

Создание контекста модуля

  1. Метод run_with_args
    Этот метод запускает модуль, передавая ему параметры командной строки. Обычно в этом методе происходит парсинг аргументов командной строки, создается контекст модуля. И этот контекст передается в метод run.
  2. Метод run
    Метод run принимает контекст модуля и непосредственно выполняет необходимые запросы на D-Bus. Модуль должен быть выполнен таким образом, чтобы его можно было вызвать из другого модуля при инициализации контекста модуля. После выполнения метода run, контекст необходимо освободить специализированной функцией.
  3. Метод print _help
    Выводит в stdout описание команд и параметров командной строки модуля.