Nextcloudを32から33にアップグレードしたところ、コードの整合性で問題が発生した。
管理画面にはこんなメッセージが表示されている。
✕ コードの整合性
いくつかのファイルは整合性チェックに合格していません。無効なファイルのリスト... 再スキャン...
※無効なファイルのリスト、と、再スキャンがリンクになっている。
回復がなかなか難しかったので、メモを残しておく。
その1 mimetypelist.js
無効なファイルのリストをクリックしてみた。
※[CTRL]キーを同時に押すこと推奨。
Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.
Results
=======
- core
- INVALID_HASH
- core/js/mimetypelist.js
Raw output
==========
Array
(
[core] => Array
(
[INVALID_HASH] => Array
(
[core/js/mimetypelist.js] => Array
(
[expected] => cb945c6402e12d9e7d42d0359acf95a6e9a9b0c1f3bd8528f598a7fb1694e5ae34c80cf44ef6c8901eac1bfdd152de3315fc7eac007efee0f33f09ed3e518b6a
[current] => 6b290ba45e633706e1fe761ca21422053c113f17b2bb35f2351f2cf1c3b893aa543af6c594077ca213c755cfa0d002e22109bb1797bbadd8fb410ca839143e0e
)
)
)
)
結果からすると、必要ファイルが更新されていなかったと思われる。
Geminiさんに聞いてみたところ、コンテナにファイルが入っているから、それを本番環境にコピーすればOK、とのことだった。
念のため今あるファイルを待避して、コンテナの中のファイルを本番環境に置いてみた。
$ sudo mv /var/www/strage/nextcloud/core/js/mimetypelist.js ./
$ sudo docker cp nextcloud:/usr/src/nextcloud/core/js/mimetypelist.js /var/www/strage/nextcloud/core/js/mimetypelist.js
$ sudo chown www-data:www-data /var/www/strage/nextcloud/core/js/mimetypelist.js
※コンテナの /var/www/html を /var/www/strage/nextcloud にバインドマウントしている。
※色々なケースが考えられるから、コンテナの中に入って /usr/src/nextcloud/core/js/ から /var/www/html/core/js/ にコピーするのが安全かもしれない。
古いファイルと新しいファイルを比較してみたが、古いファイルの方が中身が多い。
Geminiさんによると、こんなことが行われたらしい。
- MIMEタイプの動的読み込み(Lazy Loading)が改善された。
- その際、従来のmimetypelist.jsに書かれていた定義の一部が、コアの別の場所やjsonスキーマへと再配置・移行された。
- そのため新しいファイルの中身が減っている。
これが本当なのかどうかは確かめていないが、起きている事柄を考慮すると、妥当な落とし所のように思った。
さて、コンテナを再起動して整合性の問題は解消…とならない。
アップグレード時に実行した以下を再実行し、再スキャンをクリックしたところ、この問題は解消した。
$ sudo docker exec -u www-data nextcloud php occ maintenance:repair --include-expensive
しかし、次の整合性の問題が発見される。
その2 drawio.svg, dwb.svg
問題解消したかな、と思い管理画面にいったところ、依然として整合性の問題が表示されている。
もう一度、無効なファイルのリストをクリックしてみる。
※[CTRL]キーを同時に押すこと推奨。
Technical information
=====================
The following list covers which files have failed the integrity check. Please read
the previous linked documentation to learn more about the errors and how to fix
them.
Results
=======
- core
- EXTRA_FILE
- core/img/filetypes/drawio.svg
- core/img/filetypes/dwb.svg
Raw output
==========
Array
(
[core] => Array
(
[EXTRA_FILE] => Array
(
[core/img/filetypes/drawio.svg] => Array
(
[expected] =>
[current] => 92e0974cf869bf8ab969c3442dc2b80d55fde36441d22924db74916a06b407520aa2a9dc39336f9157195ebede697ffac0e639360879255ab91932d406e1897d
)
[core/img/filetypes/dwb.svg] => Array
(
[expected] =>
[current] => 43731dd5f17a048112ea5109b40b02ec019b3ee2324385a0f448e3bd2264cb13dc160ab018d893f92f8e2f168fd09009b51578c8c6b97a02a1617c67ac087701
)
)
)
)
Geminiさんに聞いたところ、そこにあってはいけないファイルが残ってしまっている、とのことだった。
expectedが空欄なのは、そういう意味なのね。
$ sudo mv /var/www/strage/nextcloud/core/img/filetypes/drawio.svg ./
$ sudo mv /var/www/strage/nextcloud/core/img/filetypes/dwb.svg ./
この後、勢い余って、先程の occ maintenance:repair --include-expensive を実行した。
けれども、理屈からすると関係なかったと思う。
再スキャンをクリックしたところ、この問題は解消した。
さいごに
この手の問題が発生したとき、なかなか答えが見つけられなくて、解決までに丸1日かかるのが普通だった。
今回も一応検索してみたけれど、私には原因と対策を見つけることができなかった。
Geminiとの会話には少し手間取ることもあるけれど、それでも問題解決までの時間は圧倒的に速い。
今回みたいに答えがない系の問題は、基本がどうなのか、といったところから質問して理解する必要もあるけれど、自分で調べるよりは断然速い。
そうなると、ネットを探しに行く機会も減る。
今となっては、「この記事に書いている実装をしたんだけど…」なんて聞きに行く始末。
まぁでも、エコシステムといえば、エコシステムかもしれない。


コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他