Disinstallazione di un modulo


10

Sto provando a disinstallare un modulo (il mio) che ho installato tramite compositore usando l'interfaccia della riga di comando con questo comando:

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

Sulla base della risposta fornita qui da @RyanH ho creato il Setup/Uninstall.phpfile che rimuove i dati relativi al database del modulo.

Funziona perfettamente ma la procedura di disinstallazione si blocca.

Ho persino lasciato la sceneggiatura in esecuzione per tutta la notte e sempre lo stesso risultato.
I file delle estensioni sono ancora presenti nel vendormodulo.
Non ho toccato le autorizzazioni del file o il proprietario.

Cosa va bene:

  • i dati relativi al database vengono rimossi
  • il nome del modulo viene rimosso dalla tabella setup_module
  • il nome del modulo viene rimosso da app/etc/config.php.

Cosa non va:

  • i file del modulo sono ancora presenti nella vendorcartella.
  • il comando console non termina.

Uscita console:

Stai per rimuovere tabelle di codice e / o database. Sei sicuro? [Y / N] y
Abilitazione della modalità di manutenzione
Stai rimuovendo i dati senza un backup del database.
Rimozione dei dati di [Spazio dei nomi] _ [Modulo]
Rimozione [Spazio dei nomi] _ [Modulo] dal registro dei moduli nel database
Rimozione [Spazio dei nomi] _ [Modulo] dall'elenco dei moduli nella configurazione di distribuzione
Rimozione del codice dalla base di codice Magento:

Dopo questo si blocca e basta.

Esiste un modo per completare il processo di disinstallazione o almeno eseguirne il debug?


anche io sto affrontando lo stesso problema. Qual è la soluzione per questo. Hai qualche idea
Vigna S

Non esattamente. A un certo punto ha iniziato a funzionare. Ho eseguito il debug seguendo la risposta fornita ma non ho trovato nulla di rilevante.
Marius

ok grazie!!! Quindi, come disinstallare il modulo
Vigna S

Esegui il comando elencato nella domanda
Marius

Lo sto usando solo ma è rimasto bloccato, "Rimozione del codice dalla base di codice Magento:". Dopo di che si blocca
Vigna S

Risposte:


3

La parte del processo di disinstallazione in cui le mani si trovano in 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);
}

Fondamentalmente elenca i pacchetti da rimuovere e quindi esegue un composer removecomando su tali pacchetti tramite lib/internal/Magento/Framework/Composer/Remove.php:

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

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

Puoi trovare il runComposerCommandmetodo 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();
}

A me qualcosa succede lungo la strada qui e quelle funzioni sono dove dovresti iniziare il debug.

Forse il composer.jsonfile del modulo è mancante o presenta un errore.


il mio file ccmposer è lì. Questo sembra un buon posto per iniziare il debug. Grazie.
Marius

anni dopo questo mi ha aiutato a capire perché le mie disinstallazioni non funzionavano - devo chiamare compositore come / usr / local / bin / ea-php72 ~ / bin / composer / composer.phar e ovviamente la configurazione non è all'altezza ...
iphigenie,

0

quando eseguiamo bin / magento module: disinstalla Module_Name quindi esegue il comando di aggiornamento del compositore anche nel back process che non è mostrato in cli.

Quando eseguiamo l'aggiornamento del compositore, sono necessari nome utente e password dell'account del tuo marketplace magento. se non hai quindi creato:

Per creare chiavi di autenticazione:

  1. Accedi al mercato Magento . Se non si dispone di un account, fare clic su Registra.

  2. Fai clic sul nome del tuo account in alto a destra nella pagina e seleziona Il mio profilo.

  3. Fai clic su Chiavi di accesso nella scheda Mercato.

inserisci qui la descrizione dell'immagine

Esegui questo comando dalla directory principale di magento ln -s ~/.composer/auth.json var/composer_home/ per creare un collegamento simbolico al tuo compositore auth.json

Quando eseguiamo il modulo: disinstallalo quindi controlla auth.json nella cartella var magento o nella directory radice magento.

Funziona per me.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.