提问者:小点点

如何使用Composer初始化Symfony控制台项目,以限制其坚持长期发布版本?


我的目标是运行编写器的require命令来初始化Symfony控制台项目。

当运行composer的require命令时,我相信可以将所需的包限制为特定的版本。

我正在考虑使用它来坚持Symfony的长期版本,这将得到更长时间的支持。

根据Symfony发布流程,当前的LTS版本是3.4

根据Composer的require命令文档和Composer的版本约束文档,包和版本可以指定为:symfony/console:~3.4

但是,当我运行composer命令在空目录中安装symfony/console 3.4时,我得到以下错误。(我的MacOS High Sierra上安装了PHP和Composer):

$ mkdir foo
$ cd foo
$ composer self-update
You are already using composer version 1.6.2 (stable channel).
Johns-MBP:foo jw$ php --version
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

我创建了一个新目录,并将其更改为新目录,确保composer更新为最新版本,并确保PHP为7.*。

$ composer require symfony/console:~3.4
No composer.json in current directory, do you want to use the one at /Users/me/Documents/Projects/FilterProject/filter-environment? [Y,n]? Y
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install symfony/console v3.4.3
    - Conclusion: don't install symfony/console v3.4.2
    - Conclusion: don't install symfony/console v3.4.1
    - symfony/process v2.6.4 conflicts with symfony/console[v3.4.0].
    - symfony/console v3.4.0 conflicts with symfony/process[v2.6.4].
    - Installation request for symfony/console ~3.4 -> satisfiable by symfony/console[v3.4.0, v3.4.1, v3.4.2, v3.4.3].
    - Installation request for symfony/process (locked at v2.6.4, required as ~2.0) -> satisfiable by symfony/process[v2.6.4].


Installation failed, reverting ./composer.json to its original content.

我是Symfony的新手,因此可能会误解Symfony core使用的版本号与Symfony/console使用的版本号之间的关系。

在fresh project中运行哪个composer命令来需要LTS版本的Symfony控制台?


共2个答案

匿名用户

多亏了@Cerad的评论,我成功了。

首先,我确保我拥有最新版本的composer和PHP7。

然后我重新运行了命令并发现了问题:

我正在安装这个应用程序在一个家庭改进项目的子文件夹和作曲家交互式问我使用它的composer.json文件!

我太草率了,没有充分阅读交互式问题。我认为这是在要求我创建一个新的作曲家。json文件。但它却在问我是否想激怒这位作曲家。上面的父项目的json文件。

$ composer require symfony/console:~3.4
No composer.json in current directory, do you want to use
the one at /Users/me/Documents/Projects/FilterProject/filter-environment? [Y,n]? Y

如果我回答了Y,那么我的选择与父项目中的某些依赖项冲突。

通过选择n的正确答案,我没有问题,而且工作正常。

匿名用户

symfony/进程的安装请求(锁定在v2.6.4)。

此消息意味着您的symfony/进程被锁定在v2.6.4(在您的composer.lock中)。这很令人困惑,因为Composer在当前目录中报告了Nocomposer.json

因为您选择了Y从另一个文件夹(可能来自不同的非相关项目)加载composer.json,所以下次尝试不选择它(通过选择n)。所以你可以把它安装在空文件夹上。如果您打算在全局范围内安装它,请运行:作曲家全局需要symfony/控制台

当您使用现有的composer.jsoncomposer.lock时,请尝试通过以下方式更新您的依赖项:

composer update --with-dependencies

否则,考虑删除<代码>作曲家。通过composer install锁定并从头开始安装。