依赖地狱:安装奏鸣曲用户

Posted

技术标签:

【中文标题】依赖地狱:安装奏鸣曲用户【英文标题】:dependency hell: installing Sonata User 【发布时间】:2016-02-19 18:18:32 【问题描述】:

大家好,恐怕还有一个新手被困在试图将所有部分粘在一起。至少可以说,这相当令人沮丧:(

我搜索了这些论坛,看到了无数可能的解决方案,但到目前为止都没有奏效。大多数也很老,版本已经更新。

我们开始吧:

https://sonata-project.org/bundles/user/2-2/doc/reference/installation.html

当我尝试这个时:composer require sonata-project/easy-extends-bundle

我明白了:

对 sonata-project/easy-extends-bundle 使用版本 ^2.1 ./composer.json 已更新 包信息更新依赖(包括require-dev)你的 需求无法解析为一组可安装的软件包。

问题 1 - 找不到请求的包 sonata-project/admin-bundle == 2.3.7.0。问题 2 - 只能安装其中之一:sonata-project/block-bundle[2.3.8, 2.2.13]。 - 只能安装其中之一:sonata-project/block-bundle[2.3.8, 2.2.13]。 - 只能安装其中之一:sonata-project/block-bundle[2.3.8, 2.2.13]。 - sonata-project/admin-bundle dev-master 需要 sonata-project/block-bundle ^2.3.8 -> 可满足 奏鸣曲项目/块捆绑[2.3.8]。 - sonata-project/admin-bundle dev-master 的安装请求 -> 可由 sonata-project/admin-bundle[dev-master] 满足。 - sonata-project/block-bundle == 2.2.13.0 的安装请求 -> 可满足 sonata-project/block-bundle[2.2.13]。

潜在原因:- 包名中的拼写错误 - 根据您的要求,软件包在足够稳定的版本中不可用 最小稳定性设置

安装失败,正在将 ./composer.json 还原为原始文件 内容。

我只是按照说明进行操作,简单明了!我阅读了这些文章,并在此处通过 Google 搜索尝试了一些解决方案。

不管怎样,我从前就是一个老 Unix 黑客,我不记得开源构建这么难......

有什么线索吗?非常感谢!

附言我正在使用 Debian 虚拟机,因为我认为它比在我的 Windows 8 PC 上尝试更容易。

这是 composer.json 中唯一更改的部分:

"require": 
    "php": ">=5.3.9",
    "symfony/symfony": "2.7.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.4",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~4.0",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "~2.0@dev",
    "sonata-project/admin-bundle": "2.3.*",
    "sonata-project/doctrine-orm-admin-bundle": "^2.3",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/user-bundle": "^2.2",
    "sonata-project/easy-extends-bundle": "dev-master"
,

【问题讨论】:

您是否在空目录中运行此命令? 我只是按照奏鸣曲网站上的说明进行操作。这就是为什么我很困惑。我什至没有编写任何自定义代码。在开始编写我的应用程序之前,我只想让基础知识发挥作用。 您能用composer.json 文件的内容更新您的问题吗?也许您需要指定包的替代版本。 查看您的描述:Problem 1 - The requested package sonata-project/admin-bundle == 2.3.7.0 could not be found. 可能相关的composer.json 文件中有错字。 SonataAdminBundle 不能是 2.3.7.0 版本,而是 2.3.7 或 2.3.0 好的,有道理。这是我唯一更改的部分,按照说明: 【参考方案1】:

1.清空vendor 文件夹:删除其中的所有内容,但不要删除自身。可能是损坏的下载依赖项导致您出现问题。

2.composer.json 中的require 部分替换为以下内容:

"require": 
    "php": ">=5.3.9",
    "symfony/symfony": "2.7.*",
    "doctrine/orm": "~2.2,>=2.2.3,<2.5",
    "doctrine/dbal": "<2.5",
    "doctrine/doctrine-bundle": "~1.4",
    "symfony/assetic-bundle": "~2.3",
    "symfony/swiftmailer-bundle": "~2.3",
    "symfony/monolog-bundle": "~2.4",
    "sensio/distribution-bundle": "~4.0",
    "sensio/framework-extra-bundle": "~3.0,>=3.0.2",
    "incenteev/composer-parameter-handler": "~2.0",
    "friendsofsymfony/user-bundle": "~1.3",
    "sonata-project/admin-bundle": "2.3.*",
    "sonata-project/doctrine-orm-admin-bundle": "^2.3",
    "sonata-project/easy-extends-bundle": "^2.1",
    "sonata-project/user-bundle": "^2.2"
,

注意"friendsofsymfony/user-bundle" 版本的区别。

现在应该可以了!如果它仍然给您带来问题,请告诉我。

【讨论】:

谢谢!试过了,通过浏览器运行时得到了这个: InvalidConfigurationException in ArrayNode.php line 309: Unrecognized options "naming_strategy, auto_mapping" under "doctrine.orm" 这与您在app/config.yml 中编写的内容有关,与依赖关系无关,与composer 无关。如果我的回答对你有帮助,请采纳。然后,我们可以打开另一个单独的问题来解决其他问题。

以上是关于依赖地狱:安装奏鸣曲用户的主要内容,如果未能解决你的问题,请参考以下文章

配置文件编辑时奏鸣曲用户捆绑错误

用户组的奏鸣曲验证不起作用

编辑奏鸣曲用户数据

以奏鸣曲管理员的编辑形式为用户设置角色

奏鸣曲用户 - 翻译

登录奏鸣曲系统用户