インストールと移行 · Clash 技術ブログ

OpenClash の更新に失敗する場合は?APK のテストとインストールを確認する

OpenClash で APK をダウンロードした後、「更新前のテストに失敗」または「パッケージのインストールに失敗」で止まる場合は、まずログから失敗した段階を切り分けます。続いて apk-tools の対応項目、システムパッケージの状態、公式のインストールコマンドを確認し、元のバージョンへ戻せる経路も残してください。

  • OpenClash
  • OpenWrt
  • APK
  • 更新に失敗する
  • allow-downgrade
目次

まずログで処理が止まった段階を確認し、二種類の失敗を混同しないでください

OpenClash の APK 更新では、インストールパッケージのダウンロード、更新前テスト、実際のインストールの順に処理が進みます。ログに「ダウンロード成功」と表示されても、/tmp/openclash.apk がルーターへ書き込まれたことを示すだけで、その後の二段階も成功するとは限りません。

OpenClash の公式 issue #5256 には、2026 年 7 月 28 日以降、二種類の現象が記録されています。一つは「更新前テスト」の段階で unrecognized option 'allow-downgrade' により停止するもの、もう一つは「更新前テスト合格」と明示された後に「ソフトウェアパッケージのインストール失敗」となるものです。

2026 年 8 月 6 日時点でも、この issue は Open のままであり、プロジェクトからすべてのデバイスに当てはまる統一的な原因は示されていません。

ログに基づいて次の手順を決める

末尾の重要なログ一式現時点で確認できること次の手順
更新前テストに失敗し、unrecognized option 'allow-downgrade' が表示される現在の apk-tools がこの引数を受け付けず、実際のインストールにはまだ進んでいないAPK の入手元を確認し、公式 Release に記載された、この引数を含まない形式を使用する
更新前テストに失敗するものの、引数のエラーは表示されないシミュレーションしたトランザクションに別のエラーがあるapk の出力をすべて保存し、先にシステムパッケージの状態を確認する
更新前テストに合格した後、パッケージのインストールに失敗する事前チェックは通過しており、実際のトランザクションで失敗している繰り返しクリックするのをやめ、SSH でインストール時の元のエラーを取得する
ダウンロードに失敗しているか、/tmp/openclash.apk が存在しない完全なインストールパッケージをまだ取得できていない先にダウンロード、入手元、ストレージの問題を解決する
OpenClash APK 更新の三段階
  1. インストールパッケージをダウンロードするopenclash.apk を /tmp へ書き込む
  2. 更新前テストapk-tools で引数とトランザクションを模擬検査する
  3. 実際のインストール検査を通過したパッケージをシステムへ書き込む
  4. サービスの検証プラグインを再起動し、設定、カーネル、ネットワークを確認する

「更新前テストの失敗」と「テスト通過後のインストール失敗」は異なる段階で発生します。まず末尾の apk エラーを読み、手動インストールが必要か判断してください。

先にバックアップを取り、このルーターが APK を使用していることを確認する

LuCI プラグインを更新する前に、OpenClash の設定管理ページから現在のバックアップをエクスポートしてください。また、OpenClash が停止しても、LAN または有線接続の SSH からルーターへ入れることを確認します。サブスクリプション、オーバーライド、カスタムルールには機密性の高いリンクが含まれる可能性があるため、バックアップは信頼できる場所にのみ保存してください。

OpenClash v0.47.133 の公式 Release では、APK システムに apk と openclash.apk を使用し、従来の OpenWrt ファームウェアには opkg と IPK を使用します。二つのパッケージマネージャーとインストールパッケージ形式には互換性がありません。本稿は、ログに apk が明示されているデバイスだけを対象とします。

読み取り専用で確認し、この段階ではパッケージの削除やパッケージソースの変更を行わない
command -v apk
apk --version
apk info luci-app-openclash 2>/dev/null
df -h /overlay /tmp
ls -lh /tmp/openclash.apk

手動で対処する前に必要な条件

  • OpenClash の設定をエクスポート済み、または復元可能なバックアップがあることを確認済み
  • LAN または有線接続の SSH からルーターへログインできる
  • ログと command -v の結果から、IPK や opkg ではなく APK を使用していることを確認済み
  • /tmp/openclash.apk が存在し、ファイルサイズが 0 ではない
  • 現在の OpenClash、ファームウェア、apk-tools のバージョンを記録済み

更新前テストに失敗する場合は、先に引数とパッケージの状態を確認する

完全なエラーが unrecognized option 'allow-downgrade' である場合、その意味は限定的です。現在の apk-tools がこのオプションを解析できないことを示すだけで、ストレージ不足やパッケージの破損、OpenWrt のダウングレードが必要であることまでは意味しません。まずローカルのヘルプを表示し、その引数が存在するか確認してください。

apk-tools がこのオプションに対応しているか、読み取り専用で確認する
apk add --help 2>&1 | grep -- '--allow-downgrade' || echo '当前 apk-tools 不支持 allow-downgrade'

テストに失敗しても、この引数エラーが表示されない場合は、公式 APK を使った修復チェックを一度シミュレーションできます。Alpine のドキュメントによると、--simulate ではデータベースへの変更はコミットされません。依存関係、world 制約、その他のエラーが出力された場合は、まず結果を保存してください。fix から --simulate を外して、そのまま実行しないでください。

システムパッケージを読み取り専用でシミュレーション検査し、パッケージのインストールや削除は行わない
apk fix --simulate

allow-downgrade が未対応であることだけが報告される

次節へ進み、この引数を含まない公式のインストール形式を使用してください。

apk fix --simulate が OK を返す

今回のシミュレーションではシステムパッケージの状態にエラーが見つかっていません。実際のインストール出力の取得へ進みます。

breaks: world、依存関係の競合、パッケージの欠落が表示される

手動インストールを中止し、サードパーティーのパッケージソースと不適合なパッケージを確認してください。force-broken-world は使用しないでください。

容量またはファイルの検査で異常がある

先にファームウェア所定のストレージ管理方法で対処し、設定のバックアップを残してください。/overlay の内容をむやみに削除しないでください。

公式 Release と同じ手動インストールを一度だけ実行する

ログに、allow-downgrade が未対応のため停止したことが明示されている場合、OpenClash v0.47.133 の公式 Release にある APK インストールコマンドには、このオプションが含まれていません。バックアップ、管理経路、/tmp/openclash.apk の入手元を確認した後、まず同じ引数一式でインストールをシミュレーションします。シミュレーションに成功した場合だけ、--simulate を外して実際のインストールを一度実行してください。

二つ目のケースでは、ログに「更新前テスト合格」と明記されている一方、実際のインストール段階で失敗します。この場合も LuCI の更新をクリックし続けないでください。SSH で以下の実コマンドを実行し、依存関係、署名、容量、ロック、I/O などの実際のエラーを apk にすべて出力させます。issue のコメントに特定の原因が書かれているというだけで、システムを事前に変更しないでください。

第一段階:同じインストールトランザクションをシミュレーションし、システムには書き込まない
apk add --simulate --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk
第二段階:シミュレーションに成功し、入手元を確認した場合に限って一度実行する
apk add --force-overwrite --clean-protected --allow-untrusted /tmp/openclash.apk

コマンドが完了し、成功を返す

LuCI を再読み込みしてプラグインのバージョンを確認し、最後のチェックリストに沿ってサービスを検証します。

引き続き unrecognized option と表示される

実行したコマンドと出力をすべて保存し、実際に使われた apk のパスとバージョンを確認します。引数を推測し続けないでください。

UNTRUSTED signature が表示され、ファイルも公式の入手元ではない

直ちに中止し、それ以上強制引数を追加しないでください。公式 Release からインストールパッケージを取得し直します。

依存関係、world、容量、ロック、読み取り専用ファイルシステムのエラーが表示される

元の出力を保存し、そのエラーに応じて対処してください。強制引数を加えた別形式を繰り返し実行しないでください。

インストールが反映されない場合は、直前の正常な状態へ戻す

手動インストールには成功したものの、LuCI が開かない、OpenClash が起動しない、既存のオーバーライドが消えた、といった問題がある場合は、まず OpenClash を停止し、プラグインを経由しないローカル管理経路を復旧させてから、更新前にエクスポートしたバックアップで設定を復元します。プラグインパッケージ、Mihomo カーネル、サブスクリプション、オーバーライドは別々の層に属するため、ファームウェアを一度戻すだけで各層の復元を代用することはできません。

apk コマンド自体が失敗した場合は、/tmp/openclash.apk、ターミナル出力、設定のバックアップを残し、force 引数をさらに加えた形式を繰り返し実行しないでください。旧バージョンへ戻す必要がある場合は、現在のファームウェアのパッケージソースにある、システム適合済みのパッケージ、または動作確認済みの公式パッケージを優先します。検証可能なダウングレード経路がない場合は、現在の管理可能な状態を維持し、機密情報を除去したログを公式 issue へ提出してください。

実際の影響範囲に応じてロールバックする

結果残しておくものロールバック手順
APK コマンドは失敗したが、以前のページは引き続き利用できるapk の元の出力と現在の設定再試行を中止し、元のサービス状態を復元する
インストールには成功したが、ページまたはサービスに異常がある更新前の OpenClash バックアップサービスを停止して設定を復元し、カーネルのアーキテクチャを確認する
更新後、家全体のデバイスからアクセスできないルーターのローカル管理画面OpenClash を一時停止し、まず OpenWrt の直接接続が復旧することを確認する
LAN からもルーターを管理できないあらかじめ用意した有線接続または failsafe の手順まず管理経路を復旧し、状態を観測できないまま更新を続けない

プラグインをインストールした後、サービスと家全体のネットワークを個別に検証する

最後に、「プラグインのインストール成功」と「プロキシサービスの復旧」を分けて検証します。まず LuCI または apk info でインストール済みのバージョンを確認してから OpenClash を起動し、カーネルのアーキテクチャ、設定、サブスクリプション、オーバーライドが引き続き適合しているか確認します。サービスが安定した後に限って、一台の LAN 端末から新たな DNS 問い合わせと Web ページへのリクエストを送信してください。

プラグインのページが正常でも振り分けに異常が残る場合は、カーネル、サブスクリプション、DNS、ルーティングルールの確認へ移り、apk のインストールを繰り返さないでください。反対に、ネットワークを利用できても LuCI のバージョンが変わっていない場合は、パッケージのインストールログへ戻り、ページキャッシュだけで更新完了を判断しないでください。

更新完了後のチェックリスト

  • apk info または LuCI に表示される OpenClash のバージョンが今回の対象と一致する
  • OpenClash のページを開くことができ、設定、オーバーライド、サブスクリプションも表示される
  • Mihomo カーネルのアーキテクチャがルーターのプラットフォームと一致し、起動ログに新たなエラーがない
  • 一台の LAN 端末で新しいドメインを名前解決し、通常の Web ページを開ける
  • 接続記録で、テストリクエストが想定したルールとポリシーに一致している
  • OpenClash を停止しても、ルーターに明確な直接接続経路と管理用のロールバック経路が残る

参考資料