如何使用Composer更新单个库?

时间:2013-05-24 16:54:32

标签: symfony composer-php

我需要为我的SF2发行版安装一个软件包(DoctrineFixtures)。

当我跑步时

php composer.phar update

我得到了

  - Updating twig/twig (dev-master 39d94fa => v1.13.0)
    The package has modified files:
    M CHANGELOG
    M doc/filters/batch.test
    M doc/filters/index.rst
    M doc/filters/url_encode.rst
    M doc/functions/index.rst
    M doc/tags/index.rst
    M doc/tests/index.rst
    M lib/Twig/Autoloader.php
    M lib/Twig/Compiler.php
    M lib/Twig/CompilerInterface.php
-10 more files modified, choose "v" to view the full list

最后一位开发人员似乎编辑了供应商内部的大量文件。

为了解决这个问题,我尝试了

php composer.phar update <package_name>

但这似乎不起作用。如何从composer.json中只更新/安装一个库?

8 个答案:

答案 0 :(得分:424)

要安装doctrine/doctrine-fixtures-bundle版本2.1.*且最低稳定度@dev,请使用此代码:

composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev

然后只更新这个包:

composer.phar update doctrine/doctrine-fixtures-bundle

答案 1 :(得分:150)

如果您只想更新一些软件包而不是所有软件包,可以按以下方式列出:

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

您还可以使用通配符一次更新一堆包:

php composer.phar update vendor/*
  • - prefer-source :在可用时从source安装软件包。
  • - prefer-dist :在可用时从dist安装软件包。
  • - ignore-platform-reqs :忽略phphhvmlib-*ext-*要求并强行安装,即使本地机器不满足这些。另请参阅platform config option
  • - 干运行:模拟命令而不实际执行任何操作。
  • - dev :安装require-dev中列出的软件包(这是默认行为)。
  • - no-dev :跳过require-dev中列出的安装包。自动加载器生成会跳过autoload-dev规则。
  • - 无自动加载器:跳过自动加载器生成。
  • - 无脚本:跳过composer.json中定义的脚本执行。
  • - 无插件:禁用插件。
  • - 无进展:删除可能会破坏某些不处理退格字符的终端或脚本的进度显示。
  • - optimize-autoloader(-o):将PSR-0/4自动加载转换为classmap以获得更快的自动加载器。这特别适用于生产,但可能需要一些时间才能运行,因此默认情况下目前尚未完成。
  • - lock :仅更新锁定文件哈希,以禁止警告锁定文件过期。
  • - with-dependencies :还将白名单包的所有依赖项添加到白名单。
  • - prefer-stable :首选稳定版的依赖项。
  • - prefer-lowest :首选最低版本的依赖项。用于测试最低版本的需求,通常与--prefer-stable一起使用。

答案 2 :(得分:8)

您基本上可以按照一个方法安装新软件包。

php composer.phar require

然后终端会要求您输入要搜索的包名称。

$ Search for a package []: //Your package name here

然后终端会询问包的版本(如果您想要最新版本,请将其留空)

$ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here

然后你只需按返回键。终端会要求另一个包裹,如果您不想再安装另一个包裹,只需按回车键即可完成。

答案 3 :(得分:6)

安装vs更新vs需求

假定以下情况:

composer.json

"parsecsv/php-parsecsv": "0.*"

composer.lock文件

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",
  

最新版本为1.1.0。最新的0.*版本是0.3.2

以下命令会发生这种情况:

composer install parsecsv/php-parsecsv

这将安装锁定文件中指定的版本0.1.4

composer update parsecsv/php-parsecsv

这会将软件包更新为0.3.2。关于composer.json的最高版本。 composer.lock中的条目将被更新。

composer require parsecsv/php-parsecsv

这将更新或安装最新版本1.1.0。您的composer.lock文件和composer.json文件也会被更新。

答案 4 :(得分:4)

要确保作曲家将已安装的一个软件包更新到您在composer.json中设置的版本约束中的最后一个版本,请从供应商中删除该软件包,然后执行:

php composer.phar update vendor/package

答案 5 :(得分:4)

您可以使用以下命令来更新具有依赖性的任何模块

composer update vendor-name/module-name --with-dependencies

答案 6 :(得分:0)

只需使用

composer require {package/packagename}

喜欢

composer require phpmailer/phpmailer

如果软件包不在供应商文件夹中。.composer安装它,并且如果软件包存在,则composer将软件包更新到最新版本。

答案 7 :(得分:0)

因为您要安装特定的软件包 “我只需为我的SF2发行版(DoctrineFixtures)安装1个软件包。”

long ioctl_func(struct file *filep,unsigned int cmd,unsigned long arg) { int ret = 0; struct ioctl_struct *my_struct = kmalloc(sizeof(struct ioctl_struct),GFP_KERNEL); struct ioctl_struct *my_struct1 = kmalloc(sizeof(struct ioctl_struct),GFP_KERNEL); switch(cmd) { case CMD_WRITE_STRUCT: printk("Inside CMD_WRITE_STRUCT\n"); ret = copy_from_user(my_struct,(struct ioctl_struct *)arg,sizeof(struct ioctl_struct)); if(ret > 0) { printk("Error copy_from_user\n"); return -1; } printk("Structure received from user app:\nid = %d\nname = %s\ndata = %ld\n",my_struct->id,my_struct->name,my_struct->data); return 0; case CMD_READ_STRUCT: printk("Inside CMD_READ_STRUCT\n"); my_struct1->id = 99; strcpy(my_struct1->name,"Hello User!"); my_struct1->data = 65535; ret = copy_to_user((char *)arg,my_struct1,sizeof(struct ioctl_struct)); if(ret) { printk("Error copy_to_user\n"); } return -1; printk("Sent structure to user\n"); return 0; default: printk("Invalid ioctl cmd\n"); break; } return 0; } 足够