2012-09-08 16 views
8

Antecedentes: configuré un nuevo proyecto, en mi máquina de escritorio, con Silex y configuré mi archivo composer.json con las dependencias que Necesito. Ejecuté "composer.phar install" exitosamente en el escritorio sin ningún problema.El compositor no puede resolver el conjunto instalable de paquetes al usar "instalar" pero no "actualizar"

me cambió a mi ordenador portátil para trabajar en el proyecto un poco más, se clonó el repositorio git a la computadora portátil, y trataron de hacer un "composer.phar instalar", pero recibió este mensaje:

Your requirements could not be resolved to an installable set of packages. 

Así Hice una "actualización de composer.phar" y funcionó, pero no quería que mi archivo composer.lock se actualizase.

¿Alguien más tiene este problema? Si no, ¿alguien puede explicar lo que estoy haciendo mal?

Editar: Pensé que probablemente debería volver a esto y actualizar la pregunta. No he tenido este problema en bastante tiempo. No sé si es una actualización para el compositor que lo ha solucionado (es posible que la gente tenga que comentar para dejarme saber si todavía están experimentando este problema) o si ahora que aprendí más sobre el compositor, simplemente soy haciendo las cosas de una manera que no encuentro esto. De cualquier forma, no he visto este mensaje en casi un año y medio, a menos que las especificaciones de mi paquete en composer.json hayan sido rotas.

+2

¿Puedo preguntar cuando clonaste el proyecto si incluía la carpeta del proveedor y también el archivo composer.lock? Por lo general, cuando cambio de máquina no tengo una carpeta de proveedor o archivo .lock comprometido y lo primero que hago es ejecutar composer.phar install – gunnx

+0

No tenía la carpeta de proveedor en el repositorio, pero incluyo el archivo de bloqueo de modo que todas las personas que controlan el proyecto e instalan dependencias están en la misma versión. – Moismyname

+0

¿Alguna vez resolvió esto? –

Respuesta

1

Hum, creo que ha de ser que está utilizando una biblioteca que se basa en una rama (dev-master, o dev-branch-name[email protected]), en la que el mantenedor hubiera obligado a un empuje recientemente (a rebasar la rama por ejemplo).

Siempre que sea posible, intente utilizar ramas estables (ramas con una versión que está vinculada a una etiqueta (v1.0.0, 1.0. *, Etc.). Si no sabe dónde mirar, debe mirar para su paquete de Packagist, y utilizar una versión que no se inicia por dev-, o utiliza un modificador @dev para establecer el mínimo de estabilidad a dev.

por supuesto, a veces es inevitable. Pero en este caso, se puede siempre solicite al responsable de la biblioteca que marque una versión. :)

Mi segunda suposición sería que tiene diferentes versiones de bibliotecas en su máquina. Tome la biblioteca symfony/icu, por ejemplo. Dependiendo de la versión de Icu que tenga en su máquina, y dependiendo del hecho de que lo haya habilitado o del hecho de que tenga la extensión intl instalada en su máquina o no, puede encontrarse con estos problemas. Como el compositor intentará hacer coincidir el composer.lock con su máquina anterior, las dependencias no se resolverán ya que los paquetes bloqueados necesitarán una dependencia que su sistema no tiene. Una manera simple de arreglar esto es simplemente instalar la extensión necesaria.

+0

Ha pasado bastante tiempo desde que tuve este problema. También era muy joven en mi uso de Composer. Estoy pensando que este es probablemente el caso.Desde que comencé a usar las versiones etiquetadas, lo que para ser honesto es probablemente la manera más estable de trabajar, no he tenido este problema. Sé que se supone que Composer administra esto a través del archivo de bloqueo, pero descubrí que tenía mucho más éxito con las versiones etiquetadas reales, incluso si uso la especificación de la versión comodín (es decir, "1. *" o "1.1. *"). Gracias a todos los que respondieron. – Moismyname

Cuestiones relacionadas