Nextcloud 21のアップデートに失敗(非対応アプリの無効化)

Nextcloud 21.02から21.0.3にアップデートしました．
しかしアップデート終了後に動作しなくなってしまいました．非対応アプリがあったせいだったのでそれを無効化して復活しました．

いつものように occ コマンドでアップデートを行いました．

$ sudo -u www-data php ${NEXTCLOUDPATH}/updater/updater.phar
Nextcloud Updater - version: v20.0.0beta4-11-g68fa0d4

Current version is 21.0.2.

Update to Nextcloud 21.0.3 available. (channel: "stable")
Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-21.0.3.zip
Open changelog

Steps that will be executed:
[ ] Check for expected files
[ ] Check for write permissions
[ ] Create backup
[ ] Downloading
[ ] Verify integrity
[ ] Extracting
[ ] Enable maintenance mode
[ ] Replace entry points
[ ] Delete old files
[ ] Move new files in place
[ ] Done

Start update? [y/N] y

Info: Pressing Ctrl-C will finish the currently running step and then stops the updater.

[ ] Check for expected files
[ ] Check for write permissions
[ ] Create backup
[ ] Downloading
[ ] Verify integrity
[ ] Extracting
[ ] Enable maintenance mode
[ ] Replace entry points
[ ] Delete old files
[ ] Move new files in place
[ ] Done

Update of code successful.

Should the "occ upgrade" command be executed? [Y/n]
Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade

: (1)

2021-07-07T13:51:49+00:00 Starting code integrity check...
2021-07-07T13:52:09+00:00 Finished code integrity check
2021-07-07T13:52:09+00:00 Update successful
2021-07-07T13:52:09+00:00 Maintenance mode is kept active
2021-07-07T13:52:09+00:00 Resetting log level

Keep maintenance mode active? [y/N]
Maintenance mode disabled

Maintenance mode is disabled

中略

するとNextcloudが動作しなくなりました．occコマンドも使えなくなっています．files_external_dropbox アプリが怪しそうなのでこれを無効化したいのですが，occコマンド自体が動かなくなっているしWebも動作しないので無効化できません．

$ sudo -u www-data php /var/www/files.matoken.org/occ app:disable files_external_dropbox
An unhandled exception has been thrown:
Error: Undefined class constant 'MAJOR_VERSION' in /var/www/files.matoken.org/3rdparty/guzzlehttp/guzzle/src/Utils.php:118
Stack trace:
#0 /var/www/files.matoken.org/3rdparty/guzzlehttp/guzzle/src/functions.php(71): GuzzleHttp\Utils::defaultUserAgent()
#1 /var/www/files.matoken.org/apps/files_external_dropbox/vendor/guzzlehttp/guzzle/src/Client.php(194): GuzzleHttp\default_user_agent()
#2 /var/www/files.matoken.org/apps/files_external_dropbox/vendor/guzzlehttp/guzzle/src/Client.php(75): GuzzleHttp\Client->configureDefaults(Array)
#3 /var/www/files.matoken.org/lib/private/Http/Client/ClientService.php(62): GuzzleHttp\Client->__construct()
#4 /var/www/files.matoken.org/lib/private/OCS/DiscoveryService.php(55): OC\Http\Client\ClientService->newClient()
#5 /var/www/files.matoken.org/lib/private/Server.php(1264): OC\OCS\DiscoveryService->__construct(Object(OC\Memcache\Factory), Object(OC\Http\Client\ClientService))
#6 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(155): OC\Server->OC\{closure}(Object(OC\Server))
#7 /var/www/files.matoken.org/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(Pimple\Container))
#8 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(122): Pimple\Container->offsetGet('OCP\\OCS\\IDiscov...')
#9 /var/www/files.matoken.org/lib/private/ServerContainer.php(137): OC\AppFramework\Utility\SimpleContainer->query('OCP\\OCS\\IDiscov...', false)
#10 /var/www/files.matoken.org/lib/private/AppFramework/DependencyInjection/DIContainer.php(434): OC\ServerContainer->query('OCP\\OCS\\IDiscov...', true)
#11 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(87): OC\AppFramework\DependencyInjection\DIContainer->query('OCP\\OCS\\IDiscov...', true)
#12 [internal function]: OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(ReflectionParameter))
#13 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(101): array_map(Object(Closure), Array)
#14 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(109): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#15 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(126): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Federation\\...')
#16 /var/www/files.matoken.org/lib/private/AppFramework/DependencyInjection/DIContainer.php(459): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Federation\\...')
#17 /var/www/files.matoken.org/lib/private/AppFramework/DependencyInjection/DIContainer.php(431): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Federation\\...')
#18 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(87): OC\AppFramework\DependencyInjection\DIContainer->query('OCA\\Federation\\...', true)
#19 [internal function]: OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(ReflectionParameter))
#20 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(101): array_map(Object(Closure), Array)
#21 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(109): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#22 /var/www/files.matoken.org/lib/private/AppFramework/Utility/SimpleContainer.php(126): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Federation\\...')
#23 /var/www/files.matoken.org/lib/private/AppFramework/DependencyInjection/DIContainer.php(459): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Federation\\...')
#24 /var/www/files.matoken.org/lib/private/ServerContainer.php(146): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Federation\\...')
#25 /var/www/files.matoken.org/lib/private/Console/Application.php(221): OC\ServerContainer->query('OCA\\Federation\\...')
#26 /var/www/files.matoken.org/lib/private/Console/Application.php(136): OC\Console\Application->loadCommandsFromInfoXml(Array)
#27 /var/www/files.matoken.org/console.php(99): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 /var/www/files.matoken.org/occ(11): require_once('/var/www/files....')

ということで，乱暴ですが files_external_dropbox をディレクトリごと退避しました．

$ sudo mv ${NEXTCLOUDPATH}apps/files_external_dropbox ~/tmp/

occコマンドもWebも動作するようになりました．

今回自動的に無効にならなかった原因は調べていませんが，config.php に今回のアプリの記述があったのでそのせいかもしれません．

$ sudo -u www-data php ${NEXTCLOUDPATH}/occ --version
Nextcloud 21.0.3

環境

$ sudo -u www-data php ${NEXTCLOUDPATH}/occ --version
Nextcloud 21.0.3
$ dpkg-query -W php apache2 mariadb-server
apache2 2.4.38-3+deb10u4
mariadb-server 1:10.3.29-0+deb10u1
php 2:7.3+69