A mensagem de erro abaixo aparece após digitar o comando de instalação via composer (composer require ricardomartins/pagseguro
).
[Exception]
Higher matching version 2.15.0 of ricardomartins/pagseguro was found in public repository packagist.org
than 2.14.0 in private https://repo.magento.com. Public package might've been taken over by a malicious entity,
please investigate and update package requirement to match the version from the private repository
Causa
Uma versão mais recente do nosso módulo está disponível para download no Github e no Packagist. E esta versão é também mais recente que a versão disponibilizada no Marketplace da Adobe.
Isso faz com que o módulo magento/composer-dependency-version-audit-plugin
pense que alguém teve a intenção de criar um módulo com mesmo nome e disponibilizá-lo no Packagist (repositório padrão do composer) a fim de enganá-lo e inserir código malicioso em sua loja.
Isso geralmente ocorre quando há uma demora do Marketplace da Adobe em autorizar ou auditar uma nova versão do nosso módulo. Ou quando lançamos uma nova versão sem publicá-la imediatamente no Marketplace.
Soluções
Por padrão, o Magento 2 força que sempre usemos o repositório privado do Marketplace como padrão. Isso evita que, se um repositório de uma biblioteca malicioso exista no Packagist e outro genuíno com mesmo nome exista no Marketplace, somente o do Marketplace seja utilizado.
No entanto, esta configuração poderá imperdir você de atualizar o módulo PagSeguro para a versão mais recente ou mesmo realizar a instalação quando o cenário acima acontecer.
Ir para solução recomendada ⤵
Solução 1: Instalar a última versão disponível no Marketplace
A última versão disponível no Marketplace nem sempre contém todos os recursos e correções que eventualmente estarão disponíveis no Github e/ou no Packagist.
No entanto, para evitar a mensagem acima e instalar a última versão do Marketplace, digite:
composer require ricardomartins/pagseuro --no-plugins
Solução 2: Instalar a última versão do módulo manualmente
Você pode seguir com a instalação manual do módulo, copiando ele para a pasta app/code, como mostrado neste artigo.
Se você já tem o módulo instalado via composer, lembre-se de desinstalá-lo com o comando composer remove ricardomartins/pagseguro
.
Solução 3: Remover a prioridade do repositório privado Magento
Abra o arquivo composer.json
localizado na raiz do Magento e acrescente "canonical":
false
ao repositório do Magento, como mostrado abaixo:
"repositories": [ { "type": "composer", "url": "https://repo.magento.com/", "canonical": false } ]
Isso fará com que o repositório do composer (Packagist) seja priorizado ao invés do repositório da Magento.
Agora você pode simplesmente digitar composer require ricardomartins/pagseguro
e a última versão será instalada. Ou composer update ricardomartins/pagseguro
para atualizá-lo.
Você pode reverter as alterações no composer.json após a instalação, porém pode ser necessário repeti-la numa próxima atualização.
Solução 4 🏆 (Recomendável): Não buscar o módulo no repositório da Magento
Abra o arquivo composer.json
localizado na raiz do Magento; procure por "repositories"
, e acrescente a linha "exclude": ["ricardomartins/pagseguro"]
na entrada de repo.magento.com, como mostrado abaixo:
"repositories": [ { "type": "composer", "url": "https://repo.magento.com/", "exclude": ["ricardomartins/pagseguro"] } ]
Com isso, ao realizar a instalação do módulo (composer require ricardomartins/pagseguro
) ou atualização do mesmo, o composer sempre buscará o módulo no Packagist (versão mais recente) mesmo que ela não tenha sido publicada no Marketplace do Magento.
Comentários
0 comentário
Por favor, entre para comentar.