パッケージフィードと中国ミラー: apkとopkgを混同しない
最初に押さえる点です。apkとopkgの違いは、「どのミラーが速いか」ではなく、ファームウェアのリリースで決まります。25.12は apk、24.10は opkg を使います。パッケージ形式、フィードのパス、検証方式が異なり、互換性はありません。
- ファームウェアが
apkとopkgのどちらを使うか、フィードファイルがどこにあるかを把握する。 - リリース、ターゲット、アーキテクチャ、kmodsのカーネルハッシュを合わせる。
- 中国のミラーがURLのどの部分を置き換えるか、どのパスを正確に保つ必要があるかを理解する。
- 「ミラーを変えたらパッケージがインストールできない」理由と、復旧方法を理解する。
apk upgrade/opkg upgradeがファームウェアのアップグレードではない理由を理解する。
パッケージマネージャーとフィードを確認する
Section titled “パッケージマネージャーとフィードを確認する”ubus call system boardcat /etc/openwrt_releaseuname -mcat /etc/apk/arch 2>/dev/nullopkg print-architecture 2>/dev/null重要な項目は release.version、release.target、DISTRIB_ARCH、release.revision です。ミラーのパスと一致している必要があります。
期待される結果リリース/ターゲット/アーキテクチャの組み合わせを正確に書ける。
OpenWrt 25.12(apk):
cat /etc/apk/repositories.d/distfeeds.listOpenWrt 24.10(opkg):
cat /etc/opkg/distfeeds.confcat /etc/opkg/customfeeds.conf編集前にバックアップします。
cp /etc/apk/repositories.d/distfeeds.list /etc/apk/repositories.d/distfeeds.list.bak.$(date +%F) 2>/dev/null || truecp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak.$(date +%F) 2>/dev/null || true期待される結果各フィードの向き先と、apkかopkgかがわかる。
25.12のapk構成
Section titled “25.12のapk構成”OpenWrt 25.12は apk を使い、インデックスは .adb、パッケージは .apk です。代表的なフィードは次のとおりです。
targets/<target>/packages/packages.adb: ターゲット固有のパッケージpackages/<arch>/base/packages.adb: basepackages/<arch>/luci/packages.adb: LuCIpackages/<arch>/packages/packages.adb: 一般のパッケージpackages/<arch>/routing|telephony|video/packages.adb: カテゴリ別フィードtargets/<target>/kmods/<kernel-hash>/packages.adb: カーネルモジュール。ハッシュは実行中のカーネルと一致している必要があります。
コマンド:
apk updateapk search <name>apk add <name>apk info -e <name>opkg は使わないでください。24.10の .ipk を .apk に名前変更してもインストールできません。
24.10のopkg構成
Section titled “24.10のopkg構成”OpenWrt 24.10は opkg を使い、インデックスは Packages.gz、パッケージは .ipk です。
opkg updateopkg list | grep <name>opkg install <name>opkg list-installed | grep <name>apk は使わないでください。25.12の .apk をopkgに渡さないでください。
中国のミラーへの書き換え
Section titled “中国のミラーへの書き換え”TUNAミラーのルートは次のとおりです。
https://mirrors.tuna.tsinghua.edu.cn/openwrt/https://downloads.openwrt.org だけをこのルートに置き換え、残りのパスはすべてそのままにします。
https://downloads.openwrt.org/releases/25.12.6/targets/x86/64/packages/packages.adb→ https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/25.12.6/targets/x86/64/packages/packages.adb.../openwrt/ で終わらせたり、releases/25.12.6/targets/x86/64/... を省いたりしないでください。パスが不完全だと404になります。
curl -I https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/25.12.6/targets/x86/64/packages/packages.adbURLは自分のリリース/ターゲットに置き換えてください。kmodsはカーネルハッシュも確認します。ミラーにパスがない場合は、無理に使わないでください。
期待される結果curlが200を返し、パスが現在のリリース/ターゲットと一致する。
apk update# またはopkg updateapk search/opkg list でフィードが読めることを確認し、必要なものだけをインストールします。apk upgrade/opkg upgrade をファームウェアのアップグレードとして扱わないでください。ファームウェアには sysupgrade/ASU/owut を使います。
期待される結果apk/opkgのupdateが成功し、パッケージが一括アップグレードされない。
よくある障害
Section titled “よくある障害”- リリースの誤り(25.12.6と24.10.8)
- ターゲットの誤り(
x86/64であり、x86_64というディレクトリではない) - アーキテクチャの誤り(
x86_64、aarch64) - ミラーがそのパスをまだ同期していない
packagesとtargetsのディレクトリを取り違えている
署名/検証の失敗
Section titled “署名/検証の失敗”- インデックスの破損、または別のリリースのもの
- システム時刻や証明書の誤り
- 別のフィードが混在している
--allow-untrustedに頼らず、フィードや検証の問題を直す
依存関係/ABIの不一致
Section titled “依存関係/ABIの不一致”- kmodsのカーネルハッシュが一致しない
- 別のターゲット/アーキテクチャ向けにビルドされたパッケージ
- 公式とImmortalWrt/iStoreOSのフィードを混在させている
- 同じソース、リリース、アーキテクチャを使うか、再ビルドが必要
コマンドが見つからない
Section titled “コマンドが見つからない”- 25.12には
opkgがなく、24.10にはapkがありません。 - コマンドを動かすためだけにパッケージマネージャーをインストールしないでください。先にファームウェアとソースを確認します。
パッケージはインストールされたがLuCIに表示されない
Section titled “パッケージはインストールされたがLuCIに表示されない”- 本体のパッケージだけを入れ、
luci-app-*を入れていない - 言語パックがない
- ブラウザーのキャッシュ/再読み込み
- パッケージのバージョンがLuCIと合っていない
# apkcp /etc/apk/repositories.d/distfeeds.list.bak.YYYY-MM-DD /etc/apk/repositories.d/distfeeds.listapk update
# opkgcp /etc/opkg/distfeeds.conf.bak.YYYY-MM-DD /etc/opkg/distfeeds.confopkg updateミラーを変えたあとに更新できなくなった場合は、まず公式フィードに戻し、DNS/時刻/証明書を確認してから、もう一度ミラーを試します。多数のミラーを渡り歩かないでください。
E2ラボ検証(2026-10-20)
Section titled “E2ラボ検証(2026-10-20)”- 環境: OpenWrt 25.12.6 x86 VM 200、
apk、公式フィードとTUNAミラー - 公式の
apk update:OK: 11220 distinct packages available。apk search -x sqm-scriptsでsqm-scripts-1.7.2-r1が見つかった。 - TUNAへ切り替え:
apk updateも11220。apk add sqm-scriptsで1.7.2-r1をインストールできた。 - 公式フィードへ復元:
apk updateは成功し、最終的なフィードはdownloads.openwrt.orgに戻った。 - 未検証: 24.10の
opkg、署名エラー、混在/ABI不一致、ミラーのインデックス破損 - レシピ:
tests/recipes/package-sources.md
E2の状況と出典
Section titled “E2の状況と出典”- これはE2の部分的な検証です。25.12の
apkで公式/TUNA/インストール/復元の経路を検証しました。opkgと不正なフィードの分岐は、ドキュメントの記述にとどまります。 - ミラーのパスはリリースごとに変わります。公開前に、対象のリリース/ターゲット/アーキテクチャで
update/searchを再実行してください。 - 公式、ImmortalWrt、iStoreOSのフィードを混在させないでください。ABI、カーネル、署名のいずれも不一致になる可能性があります。
出典
独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。
アイコン:Solar by 480 Design, CC BY 4.0