Desinstalar un módulo


10

Estoy tratando de desinstalar un módulo (el mío) que he instalado a través de Composer usando CLI con este comando:

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

Basado en la respuesta proporcionada aquí por @RyanH, he creado el Setup/Uninstall.phparchivo que elimina los datos relacionados con la base de datos del módulo.

Esto funciona perfectamente pero el procedimiento de desinstalación se bloquea.

Incluso dejé el script ejecutándose durante la noche y aún el mismo resultado.
Los archivos de extensión todavía están allí en el vendormódulo.
No toqué los permisos ni el propietario del archivo.

Lo que va bien:

  • se eliminan los datos relacionados con la base de datos
  • el nombre del módulo se elimina de la tabla setup_module
  • el nombre del módulo se elimina de app/etc/config.php.

Lo que sale mal

  • los archivos del módulo todavía están allí en la vendorcarpeta.
  • el comando de la consola no termina.

Salida de consola:

Está a punto de eliminar el código y / o las tablas de la base de datos. ¿Está seguro? [Y / N] y
Habilitar el modo de mantenimiento
Está eliminando datos sin una copia de seguridad de la base de datos.
Eliminar datos de [Espacio de nombres] _ [Módulo]
Eliminar [Espacio de nombres] _ [Módulo] del registro del módulo en la base de datos
Eliminar [Espacio de nombres] _ [Módulo] de la lista de módulos en la configuración de implementación
Eliminar el código de la base de códigos de Magento:

Después de esto simplemente se cuelga.

¿Hay alguna forma de finalizar el proceso de desinstalación, o al menos depurarlo?


Incluso estoy enfrentando el mismo problema. ¿Cuál es la solución para esto? ¿Tienes alguna idea?
Vigna S

No exactamente. En un momento comenzó a funcionar. Hice una depuración siguiendo la respuesta proporcionada pero no encontré nada relevante.
Marius

¡¡¡Ok, gracias!!! Entonces, cómo desinstalar el módulo
Vigna S

Ejecute el comando que figura en la pregunta
Marius

Solo estoy usando eso, pero se atascó en 'Eliminar código de la base de código de Magento:'. Después de lo cual se cuelga
Vigna S

Respuestas:


3

La parte del proceso de desinstalación donde las manos se pueden encontrar en 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);
}

Básicamente enumera los paquetes para eliminar y luego ejecuta un composer removecomando en esos paquetes a través de lib/internal/Magento/Framework/Composer/Remove.php:

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

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

Puedes encontrar el runComposerCommandmétodo en 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();
}

Para mí, algo sucede en el camino aquí y esas funciones son donde debe comenzar a depurar.

Tal vez composer.jsonfalta el archivo del módulo o tiene un error.


mi archivo ccmposer está ahí. Este parece ser un buen lugar para comenzar a depurar. Gracias.
Marius

años más tarde, esto me ha ayudado a comprender por qué mis desinstalaciones no funcionaron: tengo que llamar al compositor como / usr / local / bin / ea-php72 ~ / bin / composer / composer.phar y obviamente la configuración no está lista para eso ...
iphigenie

0

cuando ejecutamos el módulo bin / magento: desinstale Module_Name y luego ejecute el comando de actualización del compositor también en el proceso anterior que no se muestra en cli.

Cuando ejecutamos la actualización del compositor, se requiere el nombre de usuario y la contraseña de su cuenta de mercado de magento. si no lo has hecho, crea:

Para crear claves de autenticación:

  1. Inicie sesión en Magento Marketplace . Si no tiene una cuenta, haga clic en Registrarse.

  2. Haga clic en el nombre de su cuenta en la esquina superior derecha de la página y seleccione Mi perfil.

  3. Haga clic en Teclas de acceso en la pestaña Mercado.

ingrese la descripción de la imagen aquí

Ejecute este comando desde su directorio raíz de magento ln -s ~/.composer/auth.json var/composer_home/ , creará un enlace simbólico de su compositor auth.json

Cuando ejecutamos el módulo: desinstale y luego verifique auth.json en la carpeta var de magento o en el directorio raíz de magento.

Funciona para mi.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.