Modul deinstallieren


10

Ich versuche, ein Modul (mein eigenes) zu deinstallieren, das ich über Composer mithilfe der CLI mit diesem Befehl installiert habe:

bin/magento module:uninstall -r [Namespace]_[Module]  

Basierend auf der hier von @RyanH bereitgestellten Antwort habe ich die Setup/Uninstall.phpDatei erstellt, die datenbankbezogene Daten des Moduls entfernt.

Dies funktioniert einwandfrei, aber die Deinstallationsprozedur hängt.

Ich habe sogar das Skript über Nacht laufen lassen und immer noch das gleiche Ergebnis.
Die Erweiterungsdateien befinden sich noch im vendorModul.
Ich habe die Dateiberechtigungen oder den Eigentümer nicht berührt.

Was geht richtig:

  • Die datenbankbezogenen Daten werden entfernt
  • Der Modulname wird aus der Tabelle entfernt setup_module
  • Der Modulname wird aus entfernt app/etc/config.php.

Was geht schief:

  • Die Moduldateien befinden sich noch im vendorOrdner.
  • Der Konsolenbefehl wird nicht beendet.

Konsolenausgabe:

Sie sind dabei, Code- und / oder Datenbanktabellen zu entfernen. Sind Sie sicher? [J / N] y
Aktivieren des Wartungsmodus
Sie entfernen Daten ohne Datenbanksicherung.
Daten von [Namespace] _ [Modul]
entfernen [Namespace] _ [Modul] aus der Modulregistrierung in der Datenbank
entfernen [Namespace] _ [Modul] aus der Modulliste in der Bereitstellungskonfiguration
entfernen Code aus der Magento-Codebasis entfernen:

Danach hängt es einfach.

Gibt es überhaupt eine Möglichkeit, den Deinstallationsprozess abzuschließen oder zumindest zu debuggen?


Sogar ich stehe vor dem gleichen Problem. Was ist die Lösung dafür. Haben Sie eine Idee
Vigna S

Nicht genau. Irgendwann fing es an zu funktionieren. Ich habe nach der angegebenen Antwort ein Debugging durchgeführt, aber nichts Relevantes gefunden.
Marius

OK danke!!! So deinstallieren Sie das Modul
Vigna S

Führen Sie den in der Frage aufgeführten Befehl aus
Marius

Ich benutze das nur, aber es steckte in 'Entfernen von Code aus der Magento-Codebasis:'. Danach hängt es
Vigna S

Antworten:


3

Der Teil des Deinstallationsprozesses, bei dem es sich um Hände handelt, finden Sie unter setup/src/Magento/Setup/Model/ModuleUninstaller.php:

public function uninstallCode(OutputInterface $output, array $modules)
{
    $output->writeln('<info>Removing code from Magento codebase:</info>');
    $packages = [];
    /** @var \Magento\Framework\Module\PackageInfo $packageInfo */
    $packageInfo = $this->objectManager->get('Magento\Framework\Module\PackageInfoFactory')->create();
    foreach ($modules as $module) {
        $packages[] = $packageInfo->getPackageName($module);
    }
    $this->remove->remove($packages);
}

Grundsätzlich werden die zu entfernenden Pakete aufgelistet und anschließend ein composer removeBefehl für diese Pakete ausgeführt über lib/internal/Magento/Framework/Composer/Remove.php:

public function remove(array $packages)
{
    $composerApplication = $this->composerApplicationFactory->create();

    return $composerApplication->runComposerCommand(
        [
            'command' => 'remove',
            'packages' => $packages
        ]
    );
}

Sie finden die runComposerCommandMethode in vendor/magento/composer/src/MagentoComposerApplication.php:

public function runComposerCommand(array $commandParams, $workingDir = null)
{
    $this->consoleApplication->resetComposer();

    if ($workingDir) {
        $commandParams[self::COMPOSER_WORKING_DIR] = $workingDir;
    } else {
        $commandParams[self::COMPOSER_WORKING_DIR] = dirname($this->composerJson);
    }

    $input = $this->consoleArrayInputFactory->create($commandParams);

    $exitCode = $this->consoleApplication->run($input, $this->consoleOutput);

    if ($exitCode) {
        throw new \RuntimeException(
            sprintf('Command "%s" failed: %s', $commandParams['command'], $this->consoleOutput->fetch())
        );
    }

    return $this->consoleOutput->fetch();
}

Mir passiert auf dem Weg hierher etwas und in diesen Funktionen sollten Sie mit dem Debuggen beginnen.

Möglicherweise composer.jsonfehlt Ihre Moduldatei oder es liegt ein Fehler vor.


Meine ccmposer-Datei ist da. Dies scheint ein guter Ort zu sein, um mit dem Debuggen zu beginnen. Vielen Dank.
Marius

Jahre später hat mir das geholfen zu verstehen, warum meine Deinstallationen nicht funktionierten - ich muss Composer wie / usr / local / bin / ea-php72 ~ / bin / composer / composer.phar aufrufen und offensichtlich ist die Konfiguration nicht dafür geeignet ...
Iphigenie

0

Wenn wir bin / magento module: uninstall Module_Name ausführen, wird der Befehl composer update auch im Back-Prozess ausgeführt, der in cli nicht angezeigt wird.

Wenn wir das Composer-Update ausführen, sind Benutzername und Passwort für Ihr Magento-Marktplatzkonto erforderlich. Wenn Sie nicht haben, dann erstellen Sie:

So erstellen Sie Authentifizierungsschlüssel:

  1. Melden Sie sich beim Magento Marketplace an . Wenn Sie kein Konto haben, klicken Sie auf Registrieren.

  2. Klicken Sie oben rechts auf der Seite auf Ihren Kontonamen und wählen Sie Mein Profil.

  3. Klicken Sie auf der Registerkarte Marktplatz auf Zugriffsschlüssel.

Geben Sie hier die Bildbeschreibung ein

Führen Sie diesen Befehl in Ihrem Magento-Stammverzeichnis aus. Dadurch ln -s ~/.composer/auth.json var/composer_home/ wird eine symbolische Verknüpfung Ihres Komponisten auth.json erstellt

Wenn wir module: deinstallieren, überprüfen Sie auth.json im magento var-Ordner oder im magento-Stammverzeichnis.

Es funktioniert für mich.


-1

Der Composer wurde beim Laden der Daten von repo.magento.com gestoppt

Meine auth.json war nicht korrekt. Diese Entscheidung hat mir geholfen

config http-basic.repo.magento.com <public_key> <private_key>

Verwendung des neuen repo.magento.com

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.