Tengo un proyecto con algunas dependencias y me gustaría instalar otro, pero me gustaría mantener los demás como están. Así que he editado elcomposer.json , pero si ejecuto composer install, obtengo el siguiente resultado:
Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
- laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
- Installation request for laravel/framework dev-master -> satisfiable by laravel/framework dev-master.
En primer lugar, tengo instalado mcrypt, así que no sé por qué se queja de eso allí.
Entonces, ¿cómo puedo instalar esta nueva dependencia?
Mi compositor.json:
{
"require": {
"opauth/opauth": "*",
"opauth/facebook": "*",
"opauth/google": "*",
"opauth/twitter": "*",
"imagine/Imagine": "dev-develop",
"laravel/framework": "4.*",
"loic-sharma/profiler": "dev-master"
},
"autoload": {
"classmap": [
"app/libraries",
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/tests/TestCase.php"
]
},
"minimum-stability": "dev"
}
composer-php
dualidad_
fuente
fuente

Respuestas:
Para instalar un nuevo paquete y solo eso, tiene dos opciones:
Usando el
requirecomando, simplemente ejecute:Composer adivinará la mejor restricción de versión para usar, instalará el paquete y lo agregará a
composer.lock.También puede especificar una restricción de versión explícita ejecutando:
-O-
Con el
updatecomando, agregue el nuevo paquete manualmente ycomposer.jsonluego ejecute:Si Composer se queja, indicando que "Sus requisitos no se pudieron resolver con un conjunto de paquetes instalables", puede resolverlo pasando el indicador
--with-dependencies. Esto incluirá en la lista blanca todas las dependencias del paquete que está intentando instalar / actualizar (pero ninguna de sus otras dependencias).Con respecto a los problemas del autor de la pregunta con Laravel y mcrypt: verifique que esté habilitado correctamente en su CLI php.ini. Si
php -mno aparece mcrypt, entonces falta.Importante: ¡No olvides especificar
new/packageal usarcomposer update! Omitir ese argumento hará que todas las dependencias, así comocomposer.lock, se actualicen.fuente
"new/package" : "*",composer.json"require"sección ?En realidad, la solución correcta es:
composer require vendor/packageTomado de la documentación de CLI para Composer :
Si bien es cierto que
composer updateinstala nuevos paquetes encontrados en composer.json, también actualizará el archivo composer.lock y cualquier paquete instalado de acuerdo con cualquier lógica difusa (>o*caracteres después de los dos puntos) encontrados en composer.json. Esto se puede evitar usandocomposer update vendor/package, pero no recomendaría hacer un hábito, ya que eres un argumento olvidado lejos de un proyecto potencialmente roto ...¡Mantenga las cosas cuerdas y quédese
composer require vendor/packagepara agregar nuevas dependencias! 😉fuente
composer requireactualizará el archivo composer.lock?Mi caso de uso es más simple y se ajusta simplemente a su título, pero no a sus detalles adicionales.
Es decir, quiero instalar un nuevo paquete que aún no está en mi
composer.jsonsin actualizar todos los demás paquetes.La solución aquí es
composer require x/yfuente
En mi caso, tuve un repositorio con:
.json.lockMientras tanto, A, B, C tenían versiones más nuevas con respecto cuando se generó el bloqueo.
Por alguna razón, eliminé los "proveedores" y quería hacer un
composer installerror con el mensaje:Traté de ejecutar la solución desde Seldaek emitiendo un
composer update vendorD/libraryDpero el compositor insistió en actualizar más cosas, así que.locktambién había visto mi herramienta git.La solución que usé fue:
vendorsdirectorio.VendorD/LibraryDde.json.composer install..jsony vuelva a pagarlo desde el repositorio (equivalente a volver a agregar el archivo, pero evitando posibles cambios en los espacios en blanco).composer update vendorD/libraryDInstaló la biblioteca, pero además,
gitdiff me mostró que en el.locksolo se agregaban cosas nuevas sin editar las otras.(Thnx Seldaek para el puntero;))
fuente
composer.locknunca deberían eliminarse y reconstruirse felizmente..lockes ... para bloquear !! ; D: de lo contrario, el archivo de bloqueo sería inútil y no lo estaría cometiendo o no existiría en absoluto. Si se ejecuta en una empresa orientada a la calidad y reconstruye y compromete un bloqueo con, digamos, 1.000 dependencias, todas cambiarán y la gente de control de calidad vendrá a matarlo jajaja.