การถอนการติดตั้งโมดูล


10

ฉันกำลังพยายามถอนการติดตั้งโมดูล (ของฉันเอง) ที่ฉันติดตั้งผ่านทางผู้แต่งโดยใช้ CLI ด้วยคำสั่งนี้:

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

จากคำตอบที่มีให้ที่นี่โดย @RyanH ฉันได้สร้างSetup/Uninstall.phpไฟล์ที่ลบข้อมูลที่เกี่ยวข้องกับฐานข้อมูลของโมดูล

มันทำงานได้อย่างสมบูรณ์ แต่ขั้นตอนการถอนการติดตั้งนั้นหยุดทำงาน

ฉันได้ออกจากสคริปต์ทำงานข้ามคืนและยังคงผลลัพธ์เดียวกัน
ไฟล์นามสกุลยังคงอยู่ในvendorโมดูล
ฉันไม่ได้แตะสิทธิ์การใช้งานหรือเจ้าของไฟล์

เกิดอะไรขึ้น:

  • ข้อมูลที่เกี่ยวข้องกับฐานข้อมูลจะถูกลบออก
  • ชื่อโมดูลจะถูกลบออกจากตาราง setup_module
  • app/etc/config.phpชื่อโมดูลถูกลบออกจาก

เกิดอะไรขึ้น:

  • ไฟล์โมดูลยังคงอยู่ในvendorโฟลเดอร์
  • คำสั่งคอนโซลไม่เสร็จสิ้น

เอาต์พุตคอนโซล:

คุณกำลังจะลบรหัสและ / หรือตารางฐานข้อมูล คุณแน่ใจหรือไม่ [y / N] y
การเปิดใช้งานโหมดบำรุงรักษา
คุณกำลังลบข้อมูลโดยไม่มีการสำรองฐานข้อมูล
การลบข้อมูลของ [Namespace] _ [โมดูล]
การลบ [Namespace] _ [โมดูล] จากการลงทะเบียนโมดูลในฐานข้อมูล
การลบ [Namespace] _ [โมดูล] จากรายการโมดูลในการกำหนดค่าการนำไปใช้งานการ
ลบรหัสจาก Magento codebase:

หลังจากนี้ก็แค่แฮงค์

มีอยู่หรือไม่ที่จะทำการถอนการติดตั้งให้เสร็จหรืออย่างน้อยก็ทำการดีบั๊ก


แม้ฉันกำลังเผชิญปัญหาเดียวกัน อะไรคือทางออกสำหรับสิ่งนี้ คุณมีความคิดใด ๆ หรือไม่
Vigna S

ไม่แน่นอน จนถึงจุดหนึ่งก็เริ่มทำงาน ฉันตรวจแก้จุดบกพร่องตามคำตอบที่ให้ แต่ไม่พบสิ่งที่เกี่ยวข้อง
Marius

โอเคขอบคุณ!!! ดังนั้นวิธีถอนการติดตั้งโมดูล
Vigna S

เรียกใช้คำสั่งที่ระบุไว้ในคำถาม
Marius

ฉันกำลังใช้สิ่งนั้นอยู่ แต่มันติดอยู่ใน 'การลบรหัสจาก Magento codebase:' หลังจากนั้นก็หยุดทำงาน
Vigna S

คำตอบ:


3

ส่วนของกระบวนการถอนการติดตั้งนั้นอยู่ในมือคุณสามารถดูได้ที่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);
}

โดยทั่วไปจะแสดงรายการแพ็กเกจเพื่อลบและรันcomposer removeคำสั่งบนแพ็กเกจเหล่านั้นผ่านlib/internal/Magento/Framework/Composer/Remove.php:

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

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

คุณสามารถค้นหาrunComposerCommandวิธีการใน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();
}

สำหรับฉันมีบางอย่างเกิดขึ้นระหว่างที่นี่และหน้าที่เหล่านั้นคือที่ที่คุณควรเริ่มแก้ไขข้อบกพร่อง

บางทีcomposer.jsonไฟล์โมดูลของคุณหายไปหรือมีข้อผิดพลาด


ไฟล์ ccmposer ของฉันอยู่ที่นั่น นี่เป็นสถานที่ที่เหมาะสำหรับการเริ่มแก้ไขข้อบกพร่อง ขอบคุณ
Marius

หลายปีต่อมาสิ่งนี้ช่วยให้ฉันเข้าใจว่าทำไมการถอนการติดตั้งของฉันไม่ทำงาน - ฉันต้องเรียกนักแต่งเพลงเช่น / usr / local / bin / ea-php72 ~ / bin / ผู้แต่ง / composer.phar
iphigenie

0

เมื่อเราเรียกใช้โมดูล bin / magento: ถอนการติดตั้ง Module_Nameจากนั้นก็เรียกใช้คำสั่งปรับปรุงผู้แต่งในกระบวนการกลับที่ไม่ได้แสดงใน cli

เมื่อเราทำการอัพเดทผู้แต่งมันต้องมีชื่อผู้ใช้และรหัสผ่านที่บัญชีตลาดวีโอไอพีของคุณ หากคุณยังไม่ได้สร้าง:

วิธีสร้างคีย์การอนุญาต:

  1. ล็อกอินเข้าสู่ตลาดวีโอไอพี หากคุณไม่มีบัญชีให้คลิกสมัครสมาชิก

  2. คลิกชื่อบัญชีของคุณที่ด้านบนขวาของหน้าและเลือกโปรไฟล์ของฉัน

  3. คลิก Access Keys ในแท็บ Marketplace

ป้อนคำอธิบายรูปภาพที่นี่

เรียกใช้คำสั่งนี้จากไดเรกทอรีรากของวีโอไอพีของคุณซึ่งln -s ~/.composer/auth.json var/composer_home/ จะสร้างลิงก์สัญลักษณ์ของผู้แต่งauth.jsonของคุณ

เมื่อเราเรียกใช้โมดูล: ถอนการติดตั้งจากนั้นตรวจสอบ auth.json ในโฟลเดอร์ magento var หรือไดเรกทอรี root magento

มันใช้งานได้สำหรับฉัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.