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

pinguin_packet_dry

Широко известный в узких кругах легковесный менеджер пакетов opkg получил распространение в embedded Linux не случайно. Opkg используется во многих встраиваемых дистрибутивах и проектах, например, в OpenEmbedded, Yocto Project, OpenWRT, Ångström, Arago Project и некоторых других. Менеджер прост в эксплуатации, для полноценной работы вполне достаточно встроенной справки, а на просторах всемирной паутины множество статей о том, как устроен сам пакет ipk (opkg работает с таким форматом): как его создать, как установить и т. д и т. п. Однако подавляющее большинство информации посвящено тому, как работать на уже установленной на целевую платформу (target) системе в online-режиме, но специфика Embedded подразумевает, что образ корневой файловой системы, а также ядро готовятся заранее на некоторой инструментальной платформе (host), отличной от целевой. Иными словами, собираем ядро и файловую систему на рабочем компьютере, упаковываем в образ, образ тиражируем на железо. Эта статья посвящена тому, как с помощью менеджера opkg установить пакеты в подготавливаемый образ rootfs.

Путь граблей и велосипедов

Следующим шагом для меня стало понимание структуры самого покета *.ipk. По сути вещей, пакет ipk является архивом, распаковать который можно легко с помощью команды:

В результате получим:

В архиве data. tar. gz содержатся файлы, которые должны быть помещены в корневую директорию target’а.
В архиве control. tar. gz содержатся служебные файлы: файл с описанием и скрипты. Идея простая: так как ipk – это всего лишь архив со скриптами, то мы можем всегда руками распаковать его в директорию с файловой системой, а потом запустить (если есть в этом необходимость) скрипты. Вот только все зависимости пакета нам придется устанавливать также вручную.
А если зависимости имеют еще зависимости? Возникает идея, может быть написать скрипт для автоматизации процесса? Как это часто бывает в мире linux, если перед тобой возникла задача, то, скорее всего, такая задача возникла не перед тобой одним, и, скорее всего, ты в этом деле не первый.
Далеко ходить не пришлось, на самом деле в сам менеджер пакетов opkg заложен такой режим, когда пакеты устанавливаются в неактивную файловую систему rootfs. При этом, архитектура host-машины (где запускаются утилиты opkg) и target-машины могут быть отличными. Такой режим называется Offline mode. В таком режиме opkg становится мощнейшим инструментом кросс-разработки.

Собираем opkg для host

Для работы в режиме Offline opkg должен запускаться на host’е. С давних пор на моем рабочем компьютере обосновалась Ubuntu (сейчас стоит Ubuntu 14.04 LTS), на ней и будем строить наш инструментарий. Мне не удалось найти репозиторий с opkg для Ubuntu, потому собираем набор утилит из исходников.
Получить исходные коды можно с git репозитория Yocto Project:

На самом деле настройка и компиляция проекта выполняется достаточно стандартным способом, но есть некоторые нюансы, и потому все по порядку.
Запускаем:

Компилируем и устанавливаем opkg:

Краткий курс анатомии

Работа с целевой rootfs

Просматриваем список доступных пакетов, ищем minicom.

Смотрим информацию о пакете:

В файле var/lib/opkg появилась запись:

Так как настраиваемая rootfs предназначена для встраиваемого компьютера, конечный размер образа имеет значение. Поэтому рекомендую, после того как все нужные пакеты были установлены, удалить скаченные списки и почистить кэш:

Вместо заключения

Opkg update не работает

Обновление OpenWrt заменит всю текущую установку OpenWRT с новой версией. Это включает в себя ядро ​​Linux, раздел SquashFS и раздел JFFS2.

Первая часть процесса обновления для подготовки к обновлению. Это включает в себя программы документирования и настройки, которые необходимо будет повторно установлен или восстановлен после обновления, поиска и загрузки правильного OpenWrt обновления изображения для вашего оборудования.

Далее это реальное обновление. Есть два пути общего обновления, чтобы фактически выполнить обновление. Один использует веб — интерфейс LuCI команду «Flash нового образ прошивки» и один использует командную строку sysupgrade команду. Вы можете использовать любой подход.

Как работает обновление OpenWrt OS

Процедуры обновления Luci и sysupgrade работают путем сохранения указанных конфигурационных файлов,удаления всей файловой системы, установки новой версии OpenWrt и последующего восстановления сохраненных конфигурационных файлов. Это означает, что все части файловой системы, которые не были специально сохранены, будут потеряны.

В частности, все установленные вручную пакеты программного обеспечения, которые могут быть установлены после первоначальной установки OpenWrt, должны быть переустановлены после обновления OpenWrt. Таким образом, все будет соответствовать, например, обновленное ядро Linux и любые установленные модули ядра.

Каких-либо конфигурационных файлов или файлов данных, размещенных в местах, не перечисленных как ниже, также будут потеряны без возможности обновить openwrt. Обязательно проверьте все файлы, добавленные или настроенные из установки OpenWrt по умолчанию для резервного копирования этих элементов перед обновлением.

Определение пользовательских настроек

Список установленного пользователя пакеты определены в базе данных opkg пакета

Этот сценарий из gsenna членов форума и был первоначально размещен в форуме для обсуждения « по умолчанию пакетов отношения 12.09rc2 1043nd» TP-Link в https://forum. openwrt. org/viewtopic. php? >

Обратите внимание, что сценарий может перечислить несколько пакетов, которые являются частью по умолчанию OpenWrt установки и будут иметь свои измененные файлы конфигурации автоматически резервное копирование и восстановление. Кроме того, пакеты, установленные в зависимости других пакетов могут показать здесь. Важно лишь отметить имена пакетов, которые непосредственно установлены вручную. Любые зависимости этих пакетов будут автоматически переустановлены при переустановке основного пакета.

Альтернативный сценарий, который использует AWK вместо SED / Grep и значительно короче (при условии пользователя Valentijn):

Этот скрипт будет выводить только список пользователей (и по умолчанию) установленные пакеты.

Перечислите все пакеты, связанные с любым пользователем модифицированного файла

Это альтернатива приведенному выше сценарию. Эта команда выведет список всех пакетов, связанных с любым файлом во всей файловой системе, который изменился с версии по умолчанию OpenWrt.

Обратите внимание, что скрипт может перечислить несколько пакетов, которые являются частью установки OpenWrt по умолчанию и будут иметь их измененные файлы конфигурации автоматически резервное копирование и восстановление. Кроме того, пакеты, установленные в качестве зависимостей от других пакетов, могут отображаться здесь. Важно только отметить имена пакетов, которые вы установили вручную. Любые зависимости этих пакетов будут автоматически переустановлены при переустановке основного пакета.

Убедитесь, что нужные файлы конфигурации будут сохранены

LuCI и sysupgradeобновления будут сохранять файлы конфигурации:

На основании списка пользователей установленных пакетов, указанных выше и вы знаете, что у вас есть другие конфигурации или файлы данных, которые должны быть сохранены и которые не включены в набор по умолчанию файлов для сохранения. Ваши новые файлы должны быть добавлены к /etc/sysupgrade. conf. По умолчанию этот файл только имеет комментарии в нем.

Метод LuCI

Перейдите система > Резервное копирование/флэш-прошивки > вкладку “Конфигурация”. Это покажет текущее содержимое файла /etc/sysupgrade. conf file и окно редактирования можно использовать для добавления в файл дополнительных строк. После редактирования нажмите кнопку“ Отправить”.

Для того, чтобы просмотреть все конфигурационные файлы, которые будут сохранены на обновление, нажмите «Открыть список …» кнопку.

Метод командной строки

Редактирование /etc/sysupgrade. conf с редактором. Например:

Legacy: LuCI flash_keep section of /etc/config/luci

Luci имеет отдельный набор настроек в разделе «Конфигурация экстерн „flash_keep“» в файле /etc/config/luci относящийся к файлам конфигурации, которые должны быть сохранены.

В прошлом по-видимому, этот список был использован Luci (см https://forum. openwrt. org/viewtopic. php? p >

Определение обновления изображения OpenWRT

OpenWrt on x86

Для систем x86 нет «sysupgrade» изображений, просто убедитесь, что использовать новый образ прошивки имеет ту же семью файловой системы (если текущая прошивка использует SquashFS то новый будет использовать SquashFS, а также и если ток, В новую воли использовать файловую систему доб Обратите внимание, что обновление с ext2 [10.03.1] на ext4 [12,09], похоже, не работает Испытано 10.03.1 SquashFS на 12,09 SquashFS, работая. 10.03.1 SquashFS до 12.09 ext4 неуспешно; 10.03.1 ext2 до 12.09 ext4 не удался)

Определение обновления изображения OpenWRT

Для обновления LuCI основе

Для sysupgrade на основе обновления

Поиск и устранение неисправностей: /tmp слишком малы, чтобы держать загруженный файл

Если /tmp файловая система вашего устройства не является достаточно большим, чтобы хранить OpenWrt обновления изображения, в данном разделе приведены советы, чтобы временно освободить оперативную память.

Во-первых использование проверки памяти с free или top или cat /proc/meminfo командами; действовать, если у вас есть столько свободной оперативной памяти, как изображение в размере плюс некоторые дополнительные MiB свободной памяти.

One has actually 752+6636 KiB of free memory available.

Беспроводные драйверы, обычно занимают некоторое количество оперативной памяти и не требуется (если вы подключены через беспроводную конечно ), поэтому простой способ освободить RAM-это удалить cимлинки в etc/modules. d, поэтому они не загружаются в память при следующей перезагрузке.

Процедура обновления веб-интерфейс LuCI

sysupgrade SSH / Процедура обновления терминала

Примечание: «заголовок TRX не найден» и «фиксации ошибок на заголовок TRX» ошибки не проблема, так как на OpenWRT пост разработчик Джоу по адресу: https://dev. openwrt. org/ticket/8623

Устранение неисправностей

По неизвестным причинам, холодный сброс часто сообщается необходимо после sysupgrade. Это очень и очень плохо в случае, если вы выполнили это удаленно!

Дополнительная настройка после обновления OpenWRT

Проверка новой версии ОС

* В Luci, перейдите к положению> Обзор, чтобы подтвердить, что вы запускаете новый релиз OpenWRT * В SSH баннер входа содержит сведения о выпуске

Проверьте наличие обновляемого пакетов

После первоначального обновления рекомендуется проверить наличие обновленных пакетов, выпущенных после создания базового образа микропрограммы ОС.

* Убедитесь, что пакеты больше не могут быть обновлены; команда не должна отображать выходные данные

Переустановите пакеты, установленные пользователем

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

Настройка установленных пользователем пакетов

В новых установках пакета будут установлены новые версии файлов конфигурации пакета по умолчанию. Поскольку существующие конфигурационные файлы уже были созданы, opkg отображал бы предупреждение об этом и сохранял новые версии конфигурационных файлов в разделе …-opkg имена.

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

Программа diffutils полезна для этого.

Включить и запустить установленные пользователем пакеты

* Наконец, вновь установленные пакеты должны быть включены и запущены (если это необходимо; многие делают)

Выполните пробную перезагрузку

Обновление полностью завершено. Хорошая идея сделать тестовую перезагрузку и убедиться, что все ожидаемые функциональные возможности работают, как и раньше.

Альтернативные процедуры обновления ОС до Luci или sysupgrade

Netcat

Прямой метод

Netcat можно было бы использовать, если вы не можете свободно достаточно оперативной памяти. См netcat. Netcat должен быть установлен первым.

Этот метод НЕ рекомендуется!

Косвенный метод

Этот метод намного безопаснее, если у вас достаточно оперативной памяти.

Этот метод отлично подходит для самостоятельной сборки firmwares.

Вы должны проверить, сколько оперативной памяти у вас есть в настоящее время.(В случае, если у вас нет достаточно осталось, обратитесь бесплатно оперативную памятьFree up RAM.)

Передача файла изображения во временную папку

Напишите это для вспышки

Я тестировал под Ubuntu 11.10.

Некоторые полезные ссылки для Netcat

Убедитесь, что маршрутизатор имеет достаточно памяти.

Убедитесь, что вы установили пароль для маршрутизатора (для включения SSH необходимо установить пароль для маршрутизатора). См. First Login для получения более подробной информации.

Скопируйте прошивку на маршрутизаторе

На вашем компьютере Linux запустите:

Ввод «да» estabilish подлинность, а затем введите пароль вашего маршрутизатора. Подождите scp команда завершена. Теперь вы можете видеть прошивку в /tmp каталог.

Написать прошивку вашего маршрутизатора

Заметка

или вы можете проверить файл /etc/config/network file, 127.0.0.1 является петлевой IP адрес, другой является IP адрес вашего маршрутизатора.

Что такое OPKG?

Не все доступное для Omega установлено сразу. Некоторым людям могут никогда не понадобиться определенные утилиты, поэтому мы поставляем Omega с различными пакетами, которые вы можете использовать, и даём возможность адаптировать Omega к вашим потребностям.

Это достигается с помощью OPKG — менеджера пакетов для операционной системы Omega. Он используется в основном для загрузки и установки пакетов. Если вы знакомы с Linux или другими дистрибутивами Linux, то хорошим примером для OPKG является утилита apt-get.

Здесь вы узнаете, как использовать менеджер пакетов OPKG, и получите некоторые сведения о репозиториях Onion, из которых будут устанавливаться пакеты программного обеспечения.

Как использовать менеджер пакетов

Базовый обзор управления вашими пакетами начинается с обновления OPKG. После этого вы можете добавлять или удалять пакеты, отображать ваши доступные и установленные пакеты.

Важность opkg update

Запуск opkg update отображает самый актуальный список пакетов, доступных в репозиториях пакетов Onion. Важно запустить opkg update, чтобы новые и лучшие функции Onion были готовы для загрузки.

Чтобы обновить OPKG, введите opkg update

При выполнении этой команды opkg подключится к настроенным репозиториям пакетов и выяснит, какие пакеты доступны для установки.

Обратите внимание, что если вы не запустите opkg update, он не будет знать, какие пакеты доступны, и не сможет ничего установить!

Поиск пакетов для установки

Чтобы показать все доступные пакеты в OPKG, введите opkg list

Это огромный список, в котором нужный пакет удобнее всего найти с помощью команды grep.

Команда grep позволяет фильтровать результаты поиска по ключевому слову. Для получения дополнительной информации о команде введите grep в своей консоли и нажмите enter, чтобы получить полный список доступных параметров.

Чтобы найти все пакеты, относящиеся к Onion, мы будем использовать grep с опцией -i для iGnOrE cAsE. Введите в вашу командную строку:

и вы увидите все доступные пакеты с onion-console в их названии или описании

onion-console-base — 0.2-1 — Web-based virtual desktop for the Omega. Base package, only includes a few Apps.

onion-console-editor — 0.2-1 — Editor App for the Console

onion-console-terminal — 0.2-1 — Terminal App for the console

onion-console-webcam — 0.2-1 — Webcam App for the console

Просмотр установленных пакетов

Вы также можете проверить установленные пакеты, введя:

Давайте попробуем тот же параметр grep, но с opkg list-installed

и результат будет выглядеть примерно так:

Установка пакетов

Для установки пакета просто используйте команду opkg:

Примечание: чтобы найти имя пакета, вы можете использовать опцию list

Чтобы установить curl с помощью OPKG, сначала запустите opkg update, чтобы получить все актуальные пакеты:

root@Omega-2757:/# opkg update

Updated list of available packages in /var/opkg-lists/reboot_core.

Signature check passed.

Updated list of available packages in /var/opkg-lists/reboot_base.

Signature check passed.

Updated list of available packages in /var/opkg-lists/reboot_onion.

Signature check passed.

Updated list of available packages in /var/opkg-lists/reboot_packages.

Signature check passed.

и затем запустите opkg install curl для установки пакета:

root@Omega-2757:/# opkg install curl

Installing curl (7.50.3-1) to root.

curl установлен на вашем Omega!

Удаление пакетов

Чтобы удалить пакет из Omega, используйте опцию remove:

Примечание: чтобы найти имя пакета, вы можете использовать опцию list-installed

Чтобы удалить curl с помощью opkg:

root@Omega-2757:/# opkg remove curl

Removing package curl from root.

Пакет удален из Omega!

Помощь с OPKG

Чтобы узнать больше об OPKG и его функциях, введите команду:

Репозиторий пакетов Onion

Начиная с версии 0.1.7, opkg настроен на получение пакетов из репозиториев пакетов Onion. Вы можете успешно устанавливать модули ядра, однако мы располагаем более узким ассортиментом пакетов, чем официальные репозитории LEDE.

Как настраивается opkg

Путь к репозиториям пакетов, который проверяет opkg во время команды opkg update, можно найти по адресу /etc/opkg/distfeeds. conf.

Установка модулей ядра

Хотя Omega поставляется со многими уже установленными модулями ядра, вашему проекту могут потребоваться некоторые дополнительные модули. Поскольку все пакеты в репозиториях Onion скомпилированы Onion, у Omega c прошивкой Onion не возникнет проблем с установкой модулей ядра с помощью opkg:

opkg install kmod-fs-hfs

Обратите внимание, что Omega не может устанавливать модули ядра из репозиториев LEDE по умолчанию. opkg разрешает установку только модулей ядра, скомпилированных на той же машине, на которой была скомпилирована прошивка. Это необходимо для того, чтобы все установленные модули ядра имели ту же версию, что и ядро устройства. opkg никогда не допустит установку модуля, который требует другую версию ядра.

Для достижения наилучших результатов убедитесь, что вы используете последнюю версию прошивки Omega. Посмотрите наше руководство по обновлению Omega, чтобы узнать, как установить последнюю версию прошивки.

Что делать, если нужный вам пакет отсутствует?

Как уже упоминалось выше, мы предлагаем меньший выбор пакетов, чем официальные репозитории пакетов LEDE. Однако, если вам нужны конкретные пакеты, мы будем рады добавить их в наш репозиторий.

Сообщите нам, какие пакеты вы бы хотели добавить, написав об этом в Onion Community. Мы сделаем все возможное, чтобы обновить репозиторий!

Как вернуться на официальный репозиторий LEDE

Если вам действительно не нравятся наши репозитории, вы легко можете вернуться к использованию официальных репозиториев LEDE. Вы также можете поэкспериментировать с сочетанием репозиториев Onion и LEDE. Все это можно сделать, отредактировав файл /etc/opkg/distfeeds. conf, в котором указывается, какие репозитории следует использовать.

По умолчанию он будет настроен на использование репозиториев Onion и будет выглядеть примерно так:

#src/gz reboot_core https://downloads. lede-project. org/snapshots/targets/ramips/mt76x8/packages

#src/gz reboot_base https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/base

#src/gz reboot_onion https://repo. onion. io/omega2/packages

## src/gz reboot_luci https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/luci

#src/gz reboot_packages https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/packages

## src/gz reboot_routing https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/routing

## src/gz reboot_telephony https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/telephony

src/gz omega2_core https://repo. onion. io/omega2/packages/core

src/gz omega2_base https://repo. onion. io/omega2/packages/base

src/gz omega2_packages https://repo. onion. io/omega2/packages/packages

src/gz omega2_onion https://repo. onion. io/omega2/packages/onion

src/gz reboot_core https://downloads. lede-project. org/snapshots/targets/ramips/mt76x8/packages

src/gz reboot_base https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/base

#src/gz reboot_onion https://repo. onion. io/omega2/packages

## src/gz reboot_luci https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/luci

src/gz reboot_packages https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/packages

## src/gz reboot_routing https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/routing

## src/gz reboot_telephony https://downloads. lede-project. org/snapshots/packages/mipsel_24kc/telephony

src/gz omega2_core https://repo. onion. io/omega2/packages/core

src/gz omega2_base https://repo. onion. io/omega2/packages/base

src/gz omega2_packages https://repo. onion. io/omega2/packages/packages

src/gz omega2_onion https://repo. onion. io/omega2/packages/onion

Мы рекомендуем оставить репозиторий omega2_onion активным, так как он содержит пакеты, которые вам понадобятся для взаимодействия с вашими расширениями, платами, и многими другими дополнениями, разработанными Onion.

Чтобы изменения вступили в силу, перезагрузите Omega и запустите opkg update. После этого вы получите доступ к пакетам, размещенным в репозиториях, которые не закомментированы в вашем файле distfeeds. conf.

Попробуйте посетить сайты репозиториев в браузере, чтобы увидеть, как они выглядят на самом деле. На самом деле это просто онлайн-каталоги, в которых хранятся файлы ipk, составляющие программные пакеты для LEDE. Вы также заметите файлы с именем Packages*, это файлы, которые opkg использует для определения того, какой пакет программного обеспечения доступин в этом репозитории, а также для обеспечения целостности пакета.

Среда, 22 июня 2011

В Enigma 2 управление пакетами из консоли осуществляется с помощью менеджера пакетов OPKG, преемник старого менеджера пакетов ipkg.

Данный менеджер пакетов позволяет установливать, обновлять и удалять отдельные программные пакеты, разрешает зависимости между пакетами и выводить список установленного программного обеспечения. Учитывая, что в Dreambox используется именно этот пакетный менеджер, сделал для себя памятку по командам opkg.

Источники:

https://habr. com/ru/post/276609/

https://web-shpargalka. ru/opkg-update-ne-rabotaet. php

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: