Skip to content

25.12 apk vs 24.10 opkg: commands, package format and migration boundaries

  • 25.12+: apk, packages are .apk;
  • 24.10 and older: opkg, packages are .ipk;
  • They are not related by renaming; do not rename .ipk to .apk;
  • After upgrading to 25.12, reinstall plugins from apk feeds; config can be backed up/restored.
Terminal window
cat /etc/openwrt_release
command -v apk
command -v opkg

This lab: 25.12.6, apk exists, opkg does not.

Item 25.12 apk 24.10 opkg
Format .apk .ipk
Feed file /etc/apk/repositories.d/distfeeds.list /etc/opkg/distfeeds.conf
Update index apk update opkg update
Install apk add <pkg> opkg install <pkg>
Remove apk del <pkg> opkg remove <pkg>
Search apk search <term> opkg list | grep <term>
Installed apk list --installed opkg list-installed
Package info apk info -a <pkg> opkg info <pkg>
Clean cache apk cache clean opkg clean

25.12:

https://downloads.openwrt.org/releases/25.12.6/targets/x86/64/packages/packages.adb
https://downloads.openwrt.org/releases/25.12.6/packages/x86_64/base/packages.adb
https://downloads.openwrt.org/releases/25.12.6/targets/x86/64/kmods/<kernel-hash>/packages.adb

24.10:

src/gz openwrt_core https://downloads.openwrt.org/releases/24.10.8/targets/x86/64/packages
src/gz openwrt_base https://downloads.openwrt.org/releases/24.10.8/packages/x86_64/base
  • release, target, arch and kmod hash must match;
  • Mixing official/ImmortalWrt/iStoreOS feeds can break ABI/signatures/names;
  • A China mirror changes the host/path prefix only; do not change target/arch.
Router shellInstall a package on 25.12
Terminal window
apk update
apk search -x sqm-scripts
apk add sqm-scripts
apk info -e sqm-scripts
apk list --installed | wc -l

This lab: official/TUNA both 11220 packages; sqm-scripts 1.7.2-r1 installed.

ExpectedUpdate, search, install and verify all use apk.

Router shellEquivalent on 24.10
Terminal window
opkg update
opkg list | grep sqm-scripts
opkg install sqm-scripts
opkg list-installed | grep sqm-scripts

These are official equivalent commands, not executed here (no 24.10 device); do not present them as measured output.

ExpectedCommands and format are opkg/ipk; do not mix apk.

  1. Back up /etc/config and the package list (see 018);
  2. Record 24.10 opkg list-installed;
  3. Upgrade/reflash 25.12 (see 019);
  4. Reinstall plugins from apk feeds;
  5. Restore config, verify LuCI/service/DNS;
  6. Do not convert .ipk to .apk or copy old package directories.

This lab’s 25.12 sysupgrade kept config but dropped packages 239→182; SQM/OpenClash needed reinstall.

  • Firmware is 24.10 or older; use opkg;
  • “Installing an apk package manager” is not the fix; check the release first.
  • Firmware is 25.12+; use apk;
  • Old tutorials/scripts using opkg do not apply directly.
  • 25.12 uses .apk;
  • Renaming does not change the format;
  • Find the .apk for the release/target/arch or rebuild.
  • release/target/arch/kmod hash mismatch;
  • mixed feeds;
  • system time/certificates;
  • do not routinely bypass with --allow-untrusted.
  • main program installed without luci-app-*;
  • old plugin not reinstalled;
  • browser cache/relogin;
  • see 017.
  • Environment: OpenWrt 25.12.6 x86 VM 200; apk; official/TUNA feeds.
  • Official/TUNA apk update: both 11220 packages; apk add sqm-scripts succeeded.
  • After 25.12 sysupgrade: packages 239→182; SQM/OpenClash disappeared and needed reinstall.
  • Not executed: 24.10 opkg update/install/list, real 24.10→25.12 migration, cross-arch packages.
  • Recipe: tests/recipes/apk-vs-opkg.md.
  • This is E2 partial: 25.12 apk was tested; 24.10 opkg is an official command reference, not executed here.
  • Do not turn a command comparison into a “migration verified”; back up and test in a VM first.
  • No independent reviewer; conclusions are limited to this 25.12 x86 environment.

Sources

Router.Homes

Independent OpenWrt notes. Every page states the firmware, device, package manager and way back.

Icons: Solar by 480 Design, CC BY 4.0