¿Cómo resolver un conflicto “Solo se puede instalar uno de:”?

He instalado un paquete a través de Composer e instalé Guzzlehttp también, debido al paquete. Después de eso intenté instalar otro paquete a través de Composer, que también requiere Guzzlehttp y Composer, intenté instalarlo de nuevo.

Pero entiendo ese error:

Problema 1

  • Solo se puede instalar uno de: guzzlehttp / guzzle [6.2.0, 6.0.2].

  • Solo se puede instalar uno de: guzzlehttp / guzzle [6.0.2, 6.2.0].

  • Solo se puede instalar uno de: guzzlehttp / guzzle [6.0.2, 6.2.0].

Veo cuál es el problema, pero no sé cómo solucionarlo.

Tuve un problema similar y solo tuve que correr

composer update

antes de instalar el nuevo paquete. Sin embargo, esto funcionará dependiendo de si los otros paquetes instalados también han actualizado sus dependencias.

El mensaje ” Solo se puede instalar uno [x, y] ” aparece cuando dos paquetes diferentes apuntan a la misma dependencia, pero diferentes versiones principales, mutuamente excluyentes, donde solo se puede instalar una.


Solución de problemas

Por ejemplo, una versión puede estar ” bloqueada en ” debido a la información presente en su archivo composer.lock que puede entrar en conflicto con lo que está tratando de instalar. En este caso, cuando el error de confusión viene con el mensaje ” locked at xyz “, puede usar los siguientes comandos para comprender las dependencias existentes de los paquetes instalados:

 composer show -t 

Nota: -t muestra como una vista de árbol anidada, suéltelo para ver la lista plana.

Para ver de dónde se hace referencia al paquete problemático en su proyecto, ejecute:

 composer why org/package -t 

Nota: -t muestra como una vista de árbol anidada, suéltelo para ver la lista plana.

Para ver los detalles del paquete que intentas instalar, puedes ejecutar:

 composer show -a org/package # Package to inspect. 

Nota: Para inspeccionar la versión específica, agregue xyz , por ejemplo: composer show -a guzzlehttp/guzzle 6.2.0


Para seguir solucionando el problema, según su situación, puede intentar:

  • Actualice los paquetes existentes con dependencias a través de:

     composer update --with-dependencies 
  • Actualiza o elimina las dependencias conflictivas de tu composer.json (mantenlo simple).

  • Cuando el mensaje de confusión muestre ” bloqueado en xyz “, use composer why org/package para ver dónde se hace referencia al paquete (o verifique manualmente el contenido de composer.lock buscando xyz ). Si no ayuda, considere eliminar composer.lock y vuelva a intentarlo;
  • Cuando se le pida que use composer.json desde la carpeta diferente , seleccione n .
  • Vuelva a probar su plain composer.json , configuración simplificada en la carpeta vacía.
  • Ejecute el composer diagnose para verificar si hay algún error común.
  • Use -v / -vv / -vvv para boost la verbosidad de sus comandos.
  • Ver también: ¿Cómo explicar el registro de errores del Compositor?
    Intereting Posts