Знакомьтесь 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. С полным списком можно ознакомится на его сайте. Кроме репозиториев в файле конфигурации можно настроить прокси сервер, дополнительные пути и многое другое, но для практики по установке пакетов, про которую я напишу в следующий раз, это не потребуется.

Рубрика: Теория | Теги: , Коментировать »


Прокоментировать



 

Наверх