我只需要为我的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更新/安装一个库?

评论

您正在使用正确的命令。您能告诉我们您的composer.json吗?

请尝试使用我的答案中提供的命令,否则请提供您得到的错误的说明(即,如果作曲家抱怨的话,即为作曲家输出)

您的composer.json可能引用项目的备用fork。

我在laravel项目中更新了一个特定的依赖项,并指定了要显式安装的特定组件:composer update laravelcollective / html。似乎可行。

#1 楼

要安装版本为doctrine/doctrine-fixtures-bundle且具有最低稳定性2.1.*@dev,请使用以下命令:
composer require doctrine/doctrine-fixtures-bundle:2.1.*@dev

,然后仅更新单个软件包:
composer update doctrine/doctrine-fixtures-bundle


评论


可能会有所帮助:使用-vvv运行更新/安装(详细模式:composer.phar更新-vvv软件包/软件包)有时会更好,因为偶尔会出现交互式提示,而该提示可能被隐藏了

–timhc22
2014年11月13日上午10:45

如果其他软件包有错误怎么办? (就我而言,安装已停止)。

– Thomas Decaux
15年1月25日在20:24

那么require会触发另一个软件包的更新吗?

– hakre
2015年4月9日14:32

您到底想知道什么?请您能更具体些吗?您是否想知道是否有可能在运行作曲家require @ 命令时自动更新另一个软件包-之前明确要求或先前下载为依赖文件。 ?

– NicolaiFröhlich
2015年4月9日在15:34



> composer.phar update doctrine / doctrine-fixtures-bundle也将更新所有其他软件包(((

– podarok
18年5月22日在10:38



#2 楼

如果您只想更新一些软件包而不是全部,则可以这样列出它们:

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配置选项。

--dry-run:模拟命令,而无需实际执行任何操作。

--dev:安装require-dev中列出的软件包(这是默认行为)。

--no-dev:跳过安装require-dev中列出的软件包。自动加载器的生成会跳过autoload-dev规则。

--no-autoloader:跳过自动加载器的生成。

--no-scripts:跳过composer.json中定义的脚本的执行。

--no-plugins:禁用插件。

--no-progress:删除进度显示,该显示可能会使某些不能处理退格字符的终端或脚本弄乱。 。

--optimize-autoloader(-o):将PSR-0 / 4自动加载转换为classmap,以获得更快的自动加载器。特别建议在生产环境中使用此功能,但是可能要花一些时间才能运行,因此默认情况下当前未完成该操作。

--lock:仅更新锁定文件哈希以禁止显示有关锁定文件的警告

--with-dependencies:将列入白名单的软件包的所有依赖项也添加到白名单中。

--prefer-stable:优先选择稳定的依赖项版本。

--prefer-lowest:优选最低版本的依赖项。用于测试最低要求版本,通常与--prefer-stable一起使用。


评论


请注意,ZSH用户可能需要将其供应商/ *括在引号中:composer更新“供应商/ *”

–ZeroThe2nd
20-2-11在8:52



#3 楼

安装,更新和要求之间的区别假定以下情况:

composer.json

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


composer。锁定文件

  "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文件也将更新。

评论


太棒了,因此要刷新受限制版本中的一个包,它是composer更新author / package,然后composer安装author / package

–威廉·兰道昆
19-4-10在12:43



@WilliamRandokun如果您之前已经安装过,那么只需composer更新包就可以了,无需在安装后调用install

–亚当
19年4月10日在18:03

正是我想要的。很好的解释。赞成

– kapitan
19-10-9在2:20



恕我直言,这应该是公认的答案,因为它突出了来自composer.json和composer.lock的升级限制

–确认者
20 Nov 16 '19:06

#4 楼

您基本上也可以按照以下步骤安装新软件包。

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


然后只需按回车键。终端将要求另一个软件包,如果您不想安装另一个软件包,只需按回车键即可。

#5 楼

您可以使用以下命令来更新任何模块及其相关性

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


#6 楼

如果软件包不在供应商文件夹中,则只需使用
composer require {package/packagename}

like
composer require phpmailer/phpmailer

。composer会安装它,如果该软件包存在,composer会将软件包更新为最新版本。 br />

#7 楼

为了确保composer在您在composer.json中设置的版本限制内将已经安装的一个软件包更新到最新版本,请从供应商处删除该软件包,然后执行:

php composer.phar update vendor/package


评论


您将在这篇文章中找到相同的建议:github.com/composer/composer/issues/3112。 PS:没有解释的否决票很容易做到,因此毫无用处。

– Tsounabe
16-10-27在13:20



#8 楼

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

php composer.phar require package/package-name:package-version
就足够了