コンテンツにスキップ

パッケージフィードと中国ミラー: apkとopkgを混同しない

最初に押さえる点です。apkとopkgの違いは、「どのミラーが速いか」ではなく、ファームウェアのリリースで決まります。25.12は apk、24.10は opkg を使います。パッケージ形式、フィードのパス、検証方式が異なり、互換性はありません。

  • ファームウェアが apk と opkg のどちらを使うか、フィードファイルがどこにあるかを把握する。
  • リリース、ターゲット、アーキテクチャ、kmodsのカーネルハッシュを合わせる。
  • 中国のミラーがURLのどの部分を置き換えるか、どのパスを正確に保つ必要があるかを理解する。
  • 「ミラーを変えたらパッケージがインストールできない」理由と、復旧方法を理解する。
  • apk upgrade/opkg upgrade がファームウェアのアップグレードではない理由を理解する。

パッケージマネージャーとフィードを確認する

Section titled “パッケージマネージャーとフィードを確認する”
ルーターのシェルバージョン、ターゲット、アーキテクチャを読み取る
ターミナルウィンドウ
ubus call system board
cat /etc/openwrt_release
uname -m
cat /etc/apk/arch 2>/dev/null
opkg print-architecture 2>/dev/null

重要な項目は release.version、release.target、DISTRIB_ARCH、release.revision です。ミラーのパスと一致している必要があります。

期待される結果リリース/ターゲット/アーキテクチャの組み合わせを正確に書ける。

ルーターのシェル現在のフィードファイルを確認する

OpenWrt 25.12(apk):

ターミナルウィンドウ
cat /etc/apk/repositories.d/distfeeds.list

OpenWrt 24.10(opkg):

ターミナルウィンドウ
cat /etc/opkg/distfeeds.conf
cat /etc/opkg/customfeeds.conf

編集前にバックアップします。

ターミナルウィンドウ
cp /etc/apk/repositories.d/distfeeds.list /etc/apk/repositories.d/distfeeds.list.bak.$(date +%F) 2>/dev/null || true
cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bak.$(date +%F) 2>/dev/null || true

期待される結果各フィードの向き先と、apkかopkgかがわかる。

OpenWrt 25.12は apk を使い、インデックスは .adb、パッケージは .apk です。代表的なフィードは次のとおりです。

  • targets/<target>/packages/packages.adb: ターゲット固有のパッケージ
  • packages/<arch>/base/packages.adb: base
  • packages/<arch>/luci/packages.adb: LuCI
  • packages/<arch>/packages/packages.adb: 一般のパッケージ
  • packages/<arch>/routing|telephony|video/packages.adb: カテゴリ別フィード
  • targets/<target>/kmods/<kernel-hash>/packages.adb: カーネルモジュール。ハッシュは実行中のカーネルと一致している必要があります。

コマンド:

ターミナルウィンドウ
apk update
apk search <name>
apk add <name>
apk info -e <name>

opkg は使わないでください。24.10の .ipk を .apk に名前変更してもインストールできません。

OpenWrt 24.10は opkg を使い、インデックスは Packages.gz、パッケージは .ipk です。

ターミナルウィンドウ
opkg update
opkg list | grep <name>
opkg install <name>
opkg list-installed | grep <name>

apk は使わないでください。25.12の .apk をopkgに渡さないでください。

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.adb

URLは自分のリリース/ターゲットに置き換えてください。kmodsはカーネルハッシュも確認します。ミラーにパスがない場合は、無理に使わないでください。

期待される結果curlが200を返し、パスが現在のリリース/ターゲットと一致する。

ルーターのシェルインデックスだけを更新し、システムはアップグレードしない
ターミナルウィンドウ
apk update
# または
opkg update

apk search/opkg list でフィードが読めることを確認し、必要なものだけをインストールします。apk upgrade/opkg upgrade をファームウェアのアップグレードとして扱わないでください。ファームウェアには sysupgrade/ASU/owut を使います。

期待される結果apk/opkgのupdateが成功し、パッケージが一括アップグレードされない。

  • リリースの誤り(25.12.6と24.10.8)
  • ターゲットの誤り(x86/64 であり、x86_64 というディレクトリではない)
  • アーキテクチャの誤り(x86_64、aarch64)
  • ミラーがそのパスをまだ同期していない
  • packages と targets のディレクトリを取り違えている
  • インデックスの破損、または別のリリースのもの
  • システム時刻や証明書の誤り
  • 別のフィードが混在している
  • --allow-untrusted に頼らず、フィードや検証の問題を直す
  • kmodsのカーネルハッシュが一致しない
  • 別のターゲット/アーキテクチャ向けにビルドされたパッケージ
  • 公式とImmortalWrt/iStoreOSのフィードを混在させている
  • 同じソース、リリース、アーキテクチャを使うか、再ビルドが必要
  • 25.12には opkg がなく、24.10には apk がありません。
  • コマンドを動かすためだけにパッケージマネージャーをインストールしないでください。先にファームウェアとソースを確認します。

パッケージはインストールされたがLuCIに表示されない

Section titled “パッケージはインストールされたがLuCIに表示されない”
  • 本体のパッケージだけを入れ、luci-app-* を入れていない
  • 言語パックがない
  • ブラウザーのキャッシュ/再読み込み
  • パッケージのバージョンがLuCIと合っていない
ターミナルウィンドウ
# apk
cp /etc/apk/repositories.d/distfeeds.list.bak.YYYY-MM-DD /etc/apk/repositories.d/distfeeds.list
apk update
# opkg
cp /etc/opkg/distfeeds.conf.bak.YYYY-MM-DD /etc/opkg/distfeeds.conf
opkg update

ミラーを変えたあとに更新できなくなった場合は、まず公式フィードに戻し、DNS/時刻/証明書を確認してから、もう一度ミラーを試します。多数のミラーを渡り歩かないでください。

  • 環境: 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の部分的な検証です。25.12の apk で公式/TUNA/インストール/復元の経路を検証しました。opkg と不正なフィードの分岐は、ドキュメントの記述にとどまります。
  • ミラーのパスはリリースごとに変わります。公開前に、対象のリリース/ターゲット/アーキテクチャで update/search を再実行してください。
  • 公式、ImmortalWrt、iStoreOSのフィードを混在させないでください。ABI、カーネル、署名のいずれも不一致になる可能性があります。

出典

Router.Homes

独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。

アイコン:Solar by 480 Design, CC BY 4.0