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

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

OpenClash の APK 取得後の「更新前テスト失敗」と「パッケージのインストール失敗」は確認箇所が異なります。ログから apk-tools の対応項目、システムのパッケージ状態、公式インストールコマンドを確認し、復旧後に再テストして元の版と構成を残します。

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

ルーターの更新ボタンはダウンロード、確認、インストールを続けて実行しますが、失敗時には最後の行しか表示されないことがあります。インストールツールの元の出力を見れば、実際にインストールが始まったかを判断でき、まだ管理できるルーターでパッケージを繰り返し上書きするのを避けられます。

取得後に失敗したのはテストか、インストールか

ログでOpenClashのAPK更新が止まった箇所を確認します。ダウンロード、更新前テスト、実際のインストールのどこでしょうか。ここでの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 のバージョンを記録済み

allow-downgrade の引数エラーとシミュレーション確認

完全なエラーが 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 の内容をむやみに削除しないでください。

公式コマンドでシミュレーションし、成功したら一度インストールする

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

テストに成功してもインストールが失敗する場合は、LuCI で何度もクリックするのをやめます。SSH で以下の実インストール用コマンドを実行し、apk の出力全体を保存して、依存関係、署名、容量、ロック、I/O のどこに問題があるかを調べてください。

最初の手順:今回のインストールをシミュレーションし、システムには書き込まない
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、容量、ロック、読み取り専用ファイルシステムのエラーが表示される

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

APKのインストールが失敗した場合や、新しいプラグインに不具合が出た場合はどう復旧する?

手動インストールは成功しても、LuCI が開かない、OpenClash が起動しない、既存の上書き設定が消えた場合は、まず OpenClash を停止します。プラグインを経由しないローカル管理を使える状態に戻してから、更新前に書き出したバックアップで設定を復元してください。プラグインパッケージ、Mihomo コア、サブスクリプション、上書き設定はそれぞれ復元する必要があり、ファームウェアを一度戻すだけでは代用できません。

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

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

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

LuCI のプラグイン、プロキシサービス、端末の通信をそれぞれ確認する

プラグインのインストールとプロキシサービスの復旧は別々に確認します。LuCI または apk info でインストール済みバージョンを確認してから OpenClash を起動し、コアのアーキテクチャ、構成、サブスクリプション、上書き設定が引き続き合っているか調べます。サービスが安定した後に、LAN 端末から新しい DNS 問い合わせとページへのアクセスを行ってください。

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

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

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

参考資料