via update mac instalar composer composer-php

composer php - update - Compositor: ¿cómo puedo instalar otra dependencia sin actualizar las antiguas?



instalar composer ubuntu (4)

En mi caso, tuve un repositorio con:

  • requisitos A, B, C, D en .json
  • pero solo A, B, C en el .lock

Mientras tanto, A, B, C tenía versiones más nuevas con respeto cuando se generaba el bloqueo.

Por algún motivo, eliminé los "proveedores" y quise hacer una composer install y fallé con el mensaje:

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.

Traté de ejecutar la solución de Seldaek que emite un composer update vendorD/libraryD pero el compositor insistió en actualizar más cosas, por lo que .lock tuvo demasiados cambios como para mi herramienta my git.

La solución que utilicé fue:

  1. Eliminar todos los vendors dir.
  2. VendorD/LibraryD temporalmente el requisito VendorD/LibraryD del .json .
  3. ejecutar la composer install
  4. A continuación, elimine el archivo .json y .json nuevo desde el repositorio (equivalente a volver a agregar el archivo, pero evitando posibles cambios en el espacio en blanco).
  5. A continuación, ejecute Seldaek''s solution composer update vendorD/libraryD

.lock la biblioteca, pero además, git diff me mostró que en .lock solo se .lock las cosas nuevas sin editar las otras.

(Thnx Seldaek para el puntero;))

Tengo un proyecto con algunas dependencias y me gustaría instalar otro, pero me gustaría mantener a los demás como están. Así que edité el composer.json , pero si ejecuto la 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.

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" }


En realidad, la solución correcta es:

composer require vendor/package

Tomado de la require :

El comando require agrega nuevos paquetes al archivo composer.json del directorio actual.

php composer.phar require

Después de agregar / cambiar los requisitos, los requisitos modificados se instalarán o actualizarán.

Si no desea elegir los requisitos de forma interactiva, puede pasarlos al comando.

php composer.phar require vendor/package:2.* vendor/package2:dev-master

Si bien es cierto que la composer update instala 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 dos puntos) encontrados en composer.json! Esto se puede evitar usando el composer update vendor/package , pero no recomendaría hacerlo, ya que es un argumento olvidado lejos de un proyecto potencialmente roto ...

Mantenga las cosas en su sano juicio y quédese con el composer require vendor/package para agregar nuevas dependencias! 😉


Mi caso de uso es más simple, y se ajusta simplemente a su título, pero no a su mayor detalle.

Es decir, quiero instalar un paquete nuevo que todavía no está en mi composer.json sin actualizar todos los demás paquetes.

La solución aquí es composer require x/y


Para instalar un paquete nuevo y solo eso, tiene dos opciones:

  1. Usando el comando require , solo ejecuta:

    composer require new/package

    Composer adivinará la mejor restricción de versión para usar, instalar el paquete y agregarlo a composer.lock .

    También puede especificar una restricción de versión explícita ejecutando:

    composer require new/package ~2.5

-O-

  1. Usando el comando de update , agregue el nuevo paquete manualmente a composer.json , luego ejecute:

    composer update new/package

Si Composer se queja, indicando "Sus requisitos no se pudieron resolver en un conjunto de paquetes instalable", puede resolver esto 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 de Asker Question con Laravel y mcrypt: compruebe que esté habilitado correctamente en su CLI php.ini. Si php -m no muestra mcrypt, entonces falta.

Importante: ¡no olvide especificar new/package al usar la composer update ! Omitir ese argumento hará que todas las dependencias, así como composer.lock , se actualicen.