Знакомьтесь opkg

В прошлый раз я рассказал вам каким образом можно собрать дистрибутив linux при помощи OpenEmbedded и запустить его в VirtualBox. Перед тем как перейти к сборке более функциональных дистрибутивов стоит познакомиться с менеджером пакетов используемым в OpenEmbedded.

В отличии от больших дистрибутивов использующих менеджеры пакетов rpm и deb, в OpenEmbedded используется opkg, который базируется на коде менеджера пакетов ipkg и является продолжателем его идей. Ipkg не используется поскольку на данный момент активно не разрабатывается и имет ряд известных, но не исправленных ошибок. В Opkg эти ошибки исправлены и добавлены новые возможности. Отмечу основные нововведения в Opkg:

Использование libcurl для скачивания.
Проверка целостности списков пакетов при помощи gpg.
Автоматическая установка необходимых по зависимостям пакетов.
Возможность отключения автоматической установки пакетов по зависимостям.
Поддержка фасетной классификации пакетов.
Выделение основного функционала в отдельную библиотеку libopkg.
В планах разработчиков Opkg стабилизация API библиотеки libopkg, что позволит создавать свои оболочки по управлению пакетами. Дополнительную информацию и исходные коды opkg можно получить на его домашней странице.

Для настройки opkg используется два конфигурационных файла arch.conf и opkg.conf. В первом содержатся допустимые архитектуры процессоров и вес по которому выбирается предпочтительная архитектура. В качестве примера приведу arch.conf для машины с процессором VIA C3:

arch all 1
arch noarch 1
arch i586 5
arch i486 10
Как вы видите сначала указаны типы архитектуры all и noarch.
В первую категорию попадают различные пакеты содержащие программы которые не зависят от архитектуры. Такими к примеру являются скрипты на perl, bash, python, java и тому подобные.
Во вторую категорию попадают пакеты которые не содержат каких либо исполняемых файлов, к примеру скелет корневой файловой системы или man страницы. Далее указаны архитектуры i586 и i486. Если же необходимый пакет будет присутствовать, но будет собран именно под архитектуру отличную от тех что есть в arch.conf, что позволяет избежать установки пакетов собранных под неподдериживаемые системой архитектуры. Теперь давайте обратим внимание на веса архитектур.
Веса необходимы для указания пакет какой архитектуры ставить при наличии такового в разных редакциях. Так в данном случае пакеты архитектур all и noarch всегда имеют приоритет над пакетами архитектур i586 и i486 так-как их вес меньше. А у архитектуры i586 приоритет выбран выше чем у i486 так как пакеты собранные с оптимизацией под i586 архитектуру могут работать быстрее чем пакеты собранные с оптимизацией под i486.
Это позволяет выбрать из репозитария оптимальный набор пакетов для вашей системы. Расположение репозитариев указывается во втором файле конфигурации opkg.conf. К примеру вот так:

src «MyDist All» http://192.186.1.100/deploy/glibc/ipk/all
src «MyDist i486» http://192.186.1.100/deploy/glibc/ipk/i486
В этом примере определены два репозитария MyDist All и MyDist i486 первый содержит пакеты архитектуры all, второй архитектуры i486. В качестве их источника используется веб-сервер 192.168.1.100, в данном случае для получения доступа к репозитарию используется http-протокол, но помимо него могут быть использованы другие протоколы, которые поддерживаются curl. С полным списком можно ознакомится на его сайте. Кроме репозиториев в файле конфигурации можно настроить прокси сервер, дополнительные пути и многое другое, но для практики по установке пакетов, про которую я напишу в следующий раз, это не потребуется.

Добавить комментарий