diff --git a/typo3/sysext/core/Classes/Package/PackageManager.php b/typo3/sysext/core/Classes/Package/PackageManager.php
index 294b3664088da0f96cb54305811af2a125122d18..e63846301c25293687b7e08404f83bfe773bd4b8 100644
--- a/typo3/sysext/core/Classes/Package/PackageManager.php
+++ b/typo3/sysext/core/Classes/Package/PackageManager.php
@@ -21,7 +21,6 @@ use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface;
 use TYPO3\CMS\Core\Core\ClassLoadingInformation;
 use TYPO3\CMS\Core\Core\Environment;
 use TYPO3\CMS\Core\Information\Typo3Version;
-use TYPO3\CMS\Core\Package\Event\BeforePackageActivationEvent;
 use TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent;
 use TYPO3\CMS\Core\Package\Exception\InvalidPackageKeyException;
 use TYPO3\CMS\Core\Package\Exception\InvalidPackageManifestException;
@@ -316,13 +315,6 @@ class PackageManager implements SingletonInterface
         $this->scanAvailablePackages();
     }
 
-    public function beforeInstallationEventListener(BeforePackageActivationEvent $event): void
-    {
-        if (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_BE) {
-            $this->scanAvailablePackages();
-        }
-    }
-
     /**
      * Scans all directories for a certain package.
      *
diff --git a/typo3/sysext/core/Classes/ServiceProvider.php b/typo3/sysext/core/Classes/ServiceProvider.php
index fc8a922ec8b23491348aec6e58350c614bd595c5..d5b534ef3c2bfde1bcf11b4ed53381f1e025eadb 100644
--- a/typo3/sysext/core/Classes/ServiceProvider.php
+++ b/typo3/sysext/core/Classes/ServiceProvider.php
@@ -53,6 +53,7 @@ class ServiceProvider extends AbstractServiceProvider
     {
         return [
             EventDispatcherInterface::class => [ static::class, 'provideFallbackEventDispatcher' ],
+            EventDispatcher\ListenerProvider::class => [ static::class, 'extendEventListenerProvider' ],
         ] + parent::getExtensions();
     }
 
@@ -105,6 +106,18 @@ class ServiceProvider extends AbstractServiceProvider
         return new EventDispatcher\ListenerProvider($container);
     }
 
+    public static function extendEventListenerProvider(
+        ContainerInterface $container,
+        EventDispatcher\ListenerProvider $listenerProvider
+    ): EventDispatcher\ListenerProvider {
+        $listenerProvider->addListener(
+            Package\Event\PackagesMayHaveChangedEvent::class,
+            Package\PackageManager::class,
+            'packagesMayHaveChanged'
+        );
+        return $listenerProvider;
+    }
+
     public static function getDependencyOrderingService(ContainerInterface $container): Service\DependencyOrderingService
     {
         return new Service\DependencyOrderingService();
diff --git a/typo3/sysext/core/Configuration/Services.yaml b/typo3/sysext/core/Configuration/Services.yaml
index 4a5291ca131b39b118ba8ff1cf9eeba063e07d9b..2b461c5e46679ef7d2f84a4ce074d3195b2c755e 100644
--- a/typo3/sysext/core/Configuration/Services.yaml
+++ b/typo3/sysext/core/Configuration/Services.yaml
@@ -56,14 +56,6 @@ services:
     arguments:
       $configPath: "%env(TYPO3:configPath)%/sites"
 
-  TYPO3\CMS\Core\Package\PackageManager:
-    autoconfigure: false
-    tags:
-      - name: event.listener
-        identifier: 'typo3-core'
-        method: 'packagesMayHaveChanged'
-        event: TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent
-
   TYPO3\CMS\Core\Package\FailsafePackageManager:
     autoconfigure: false