phpcomposer-phpmediawiki-extensionsmediawiki-installationwikibase

Error when attempting to run update.php following Wikibase install


I am attempting to install Wikibase using the documentation on a remote Ubuntu server.

I have successfully installed everything up to this point that I can think of.

The error happens when I run php maintenance/update.php which results in the following error and backtrace:

[e1bc513c383ad1e230e29e50] [no req]   Error: Class 'Onoi\MessageReporter\ObservableMessageReporter' not found
Backtrace:
from /var/lib/mediawiki/extensions/Wikibase/repo/includes/Store/Sql/DatabaseSchemaUpdater.php(181)
#0 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(533): Wikibase\Repo\Store\Sql\DatabaseSchemaUpdater::rebuildPropertyTerms()
#1 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(501): DatabaseUpdater->runUpdates()
#2 /var/lib/mediawiki/maintenance/update.php(193): DatabaseUpdater->doUpdates()
#3 /var/lib/mediawiki/maintenance/doMaintenance.php(108): UpdateMediaWiki->execute()
#4 /var/lib/mediawiki/maintenance/update.php(264): require_once(string)
#5 {main}

I have attempted to find out more about Onoi\MessageReporter\ObservableMessageReporter to little success. I don't know which step of the process to this point it would have been installed nor anything else.

Any help figuring this out would be much, much appreciated.

UPDATE 1: I added onoi/message-reporter manually to composer.json as suggested here and then ran composer update. This has resulted in a new error and trace being:

[ee8783cf9727c2a3d0886de9] [no req]   Error: Class 'Diff\Differ\MapDiffer' not found
Backtrace:
from /var/lib/mediawiki/extensions/Wikibase/lib/packages/wikibase/data-model-services/src/Diff/ItemDiffer.php(31)
#0 /var/lib/mediawiki/extensions/Wikibase/lib/packages/wikibase/data-model-services/src/Diff/EntityDiffer.php(23): Wikibase\DataModel\Services\Diff\ItemDiffer->__construct()
#1 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(730): Wikibase\DataModel\Services\Diff\EntityDiffer->__construct()
#2 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#3 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#4 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#5 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#6 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(242): Wikimedia\Services\ServiceContainer->get()
#7 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(640): Wikibase\Repo\WikibaseRepo::getEntityDiffer()
#8 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#9 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#10 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#11 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#12 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(237): Wikimedia\Services\ServiceContainer->get()
#13 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(1744): Wikibase\Repo\WikibaseRepo::getEntityChangeFactory()
#14 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#15 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#16 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#17 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#18 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(437): Wikimedia\Services\ServiceContainer->get()
#19 /var/lib/mediawiki/extensions/Wikibase/repo/includes/Store/Sql/DatabaseSchemaUpdater.php(198): Wikibase\Repo\WikibaseRepo::getStore()
#20 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(533): Wikibase\Repo\Store\Sql\DatabaseSchemaUpdater::rebuildPropertyTerms()
#21 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(501): DatabaseUpdater->runUpdates()
#22 /var/lib/mediawiki/maintenance/update.php(193): DatabaseUpdater->doUpdates()
#23 /var/lib/mediawiki/maintenance/doMaintenance.php(108): UpdateMediaWiki->execute()
#24 /var/lib/mediawiki/maintenance/update.php(264): require_once(string)
#25 {main}

UPDATE 2: I repeated the above with diff/diff and data-values/serialization, the latter of which caused another different error:

InvalidArgumentException from line 54 of /var/lib/mediawiki/vendor/data-values/serialization/src/Deserializers/DataValueDeserializer.php: $builders must map data types to callables or class names. 'DataValues\Geo\Values\GlobeCoordinateValue' is not a DataValue class.
#0 /var/lib/mediawiki/vendor/data-values/serialization/src/Deserializers/DataValueDeserializer.php(41): DataValues\Deserializers\DataValueDeserializer->assertAreDataValueClasses()
#1 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(497): DataValues\Deserializers\DataValueDeserializer->__construct()
#2 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#3 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#4 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#5 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#6 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(695): Wikimedia\Services\ServiceContainer->get()
#7 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(1639): Wikibase\Repo\WikibaseRepo::getDataValueDeserializer()
#8 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#9 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#10 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#11 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#12 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(943): Wikimedia\Services\ServiceContainer->get()
#13 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(2059): Wikibase\Repo\WikibaseRepo::getSingleEntitySourceServicesFactory()
#14 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#15 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#16 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#17 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#18 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(948): Wikimedia\Services\ServiceContainer->get()
#19 /var/lib/mediawiki/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(1751): Wikibase\Repo\WikibaseRepo::getWikibaseServices()
#20 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#21 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService()
#22 /var/lib/mediawiki/includes/MediaWikiServices.php(279): Wikimedia\Services\ServiceContainer->getService()
#23 /var/lib/mediawiki/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\MediaWikiServices->getService()
#24 /var/lib/mediawiki/extensions/Wikibase/repo/includes/WikibaseRepo.php(437): Wikimedia\Services\ServiceContainer->get()
#25 /var/lib/mediawiki/extensions/Wikibase/repo/includes/Store/Sql/DatabaseSchemaUpdater.php(198): Wikibase\Repo\WikibaseRepo::getStore()
#26 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(533): Wikibase\Repo\Store\Sql\DatabaseSchemaUpdater::rebuildPropertyTerms()
#27 /var/lib/mediawiki/includes/installer/DatabaseUpdater.php(501): DatabaseUpdater->runUpdates()
#28 /var/lib/mediawiki/maintenance/update.php(193): DatabaseUpdater->doUpdates()
#29 /var/lib/mediawiki/maintenance/doMaintenance.php(108): UpdateMediaWiki->execute()
#30 /var/lib/mediawiki/maintenance/update.php(264): require_once('/var/lib/mediaw...')
#31 {main}

UPDATE 3: This issue could be somewhat similar to what is posted here, but it's unclear what the solution is.

UPDATE 4: I know I posted below what I was doing in installing things manually but umm... it broke at one point seemingly involving the package WikibaseQualityConstraints, with data-values/serialization. Basically, when trying to access Special:SpecialPages an error pops up, being:

[c706436afebcd43e1668b175] /mediawiki/index.php/Special:SpecialPages TypeError: Argument 2 passed to WikibaseQuality\ConstraintReport\ConstraintCheck\Helper\ConstraintParameterParser::__construct() must be an instance of Wikibase\DataModel\Deserializers\DeserializerFactory, instance of Wikibase\DataModel\DeserializerFactory given, called in /var/lib/mediawiki/extensions/WikibaseQualityConstraints/src/ServiceWiring.php on line 125

So I thought removing all of the composer.lock files, removing data-values/serialization, requiring wikibase/data-model-serialization, re-installing with composer, and then running php maintenance/update.php again would work but it's still the same error. I'm not 100% positive that manual installation caused this issue, but it seems likely...


Solution

  • Add this line to: extension-repo.json and extension-client.json

    ...
        "load_composer_autoloader": true,
        "manifest_version": 2
    ...
    

    then run this command in the wikibase folder:

    composer install --no-dev
    

    and finally run this command in mediawiki folder:

    php maintenance/run.php update
    

    Via: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Wikibase/+/1027561/1/extension-repo.json#1018