Шпаргалка по переходу c opkg на apt
Общая информация
Как и в opkg
большинство команд позволяет использовать необязательный шаблон по названию пакета (обозначен как [P]
в командах ниже).
Так же, как и в opkg
, шаблоны являются файловыми масками, н.п. *dns*
соответствует каждому пакету с dns
где-то в его названии.
Команда | Описание |
---|---|
apk -h | Показать команды и краткие описания |
apk subcmd -h | Справка по подкоманде subcmd (в документации apk-tools называется “аплеты”, англ. “applets”) |
apk update | Принудительное обновление локальных индексов, так же как и в opkg |
apk adbdump file | Вывод содержимого файла APK v3, включая индексные файлы пакетов (обычно именуемые packages.adb ) и файлы .apk пакета |
Добавление и удаление пакетов
apk | opkg | Описание |
---|---|---|
apk update | opkg update | Обновить удалённые источники (фиды) пакетов |
apk add pkg | opkg install pkg | Установить пакет pkg |
apk del pkg | opkg remove pkg | Удалить пакет pkg |
Добавление во многом похоже в обоих менеджерах пакетов.
Разница в том, что apk
хочет чтобы все пакеты были подписаны, в то время opkg
игнорирует это для локальных пакетов,
поэтому если вы устанавливаете нестандартный (самодельный) пакет, то используйте опцию --allow-untrusted
:
$ apk add ./owut_2024.07.01~189b2721-r1.apk ERROR: ./owut_2024.07.01~189b2721-r1.apk: UNTRUSTED signature $ apk add --allow-untrusted ./owut_2024.07.01~189b2721-r1.apk OK: 2313 MiB in 569 packages
Интересные варианты
Опция apk --update-cache
позволяет выполнить update
одновременно с тем что вы делаете add
,
так что теперь вы можете заменить традиционную последовательность opkg
команд в одну команду в apk
.
opkg update && opkg install dnsmasq-full
становится
apk --update-cache add dnsmasq-full
Опция --simulate
позволяет выполнить холостое выполнение команды перед тем как выполнить её окончательно.
$ apk del --simulate nmap (1/1) Purging nmap (7.95-r1) OK: 47 MiB in 288 packages
Обработка репозиториев по умолчанию
По умолчанию apk
настроен на обновление репозиториев пакетов определенных в /etc/apk/repositories.d/
когда apk add
выполняется в первый раз.
Это может быть нежелательно в некоторых автономных (или изолированных) сценариях,
где apk
собирается сходить на удалённые репозитории пакетов для обновления базы данных локальных пакетов, прежде чем разрешить установку локального пакета.
$ apk add ./owut_2024.07.01~189b2721-r1.apk fetch https://downloads.openwrt.org/snapshots/targets/x86/64/packages/packages.adb Failed to send request: Operation not permitted WARNING: updating and opening https://downloads.openwrt.org/snapshots/targets/x86/64/packages/packages.adb: network error (check Internet connection and firewall) ...snip... OK: 2313 MiB in 569 packages
Если вы не хотите этого поведения по умолчанию, вы можете отключить его с помощью опции --repositories-file /dev/null
$ apk add --repositories-file /dev/null ./owut_2024.07.01~189b2721-r1.apk ...snip... OK: 2313 MiB in 569 packages
Если вы хотите такого навсегда, просто удалите /etc/apk/repositories.d
, например выполнив mv /etc/apk/repositories.d /etc/apk/repositories.d-disabled
.
Команды списка пакетов
Здесь [P]
это файловая маска.
apk | opkg | Описание |
---|---|---|
apk list | opkg list | Показать все что доступно |
apk list P | opkg list P | Показать совпадения P , или если вы предпочитаете регулярные выражения то пропустите через grep |
apk list --installed [P] | opkg list-installed | Показать все установленные или соответствующие P |
apk list --upgradeable [P] | opkg list-upgradable | Показать обновляемые пакеты |
apk list --providers [P] | opkg -A whatprovides P | Показать все пакеты предоставляющие P |
Интересные варианты
apk list --installed --manifest
- выводит простой список пар “название-пакета версия” который легко разобрать с помощьюawk
илиsed
apk info
- без каких либо параметров выводит список названий только установленных пакетов, так что никакого разбора не нужноapk list --orphaned
- показать любые осиротевшие зависимости, т.е., пакеты у которых нет верхнеуровневых пакетов которые зависят от них. Это может означать что они остались после ошибки при удалении другого пакета, то также может означать нужные пакеты у которых сломаны зависимости. Если вы хотите удалить осиротевший пакет, сначала точно убедитесь что он не нужен чтобы не сломать систему.
Сравнительные примеры списков пакетов
Показать всех кандидатов через opkg
:
$ opkg -A whatprovides dnsmasq What provides dnsmasq dnsmasq-dhcpv6 dnsmasq dnsmasq-full
Показать всех кандидатов через apk
:
$ apk list --providers dnsmasq <dnsmasq> dnsmasq-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0) <dnsmasq> dnsmasq-dhcpv6-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0) <dnsmasq> dnsmasq-full-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0) [installed]
Показать установленный пакет который предоставляет dnsmasq
через opkg
:
$ opkg whatprovides dnsmasq What provides dnsmasq dnsmasq-full
Показать установленный пакет который предоставляет dnsmasq
через apk
:
$ apk list --installed --providers dnsmasq <dnsmasq> dnsmasq-full-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0) [installed]
Информация о пакете
apk | opkg | Описание |
---|---|---|
apk info | нет эквивалента | Показать названия только установленных пакетов |
apk info P | opkg info P | Показать краткую информацию для P |
apk info --all P | нет эквивалента | Показать полную информацию для P |
apk info --contents P | opkg files P | Показать файлы предоставляемые пакетом |
apk info --who-owns <file> | opkg search <файл> | Найти пакет который установил этот <файл> |
Other operations
apk | opkg | Описание |
---|---|---|
apk extract --allow-untrusted P | tar -xvf P | Извлечь содержимое этого пакета |