Composer 在 4.2 上挂起“通过 SAT 解决依赖关系”

Posted

技术标签:

【中文标题】Composer 在 4.2 上挂起“通过 SAT 解决依赖关系”【英文标题】:Composer hangs on "Resolving dependencies through SAT" on 4.2 【发布时间】:2016-10-15 13:30:27 【问题描述】:

我尝试过的事情:

删除除 Laravel(版本 4.2.*)之外的所有内容 - 这已完成,但仍会挂起大约 5 分钟 更新作曲家 删除 /vendor 进行干净的 Laravel 4.2 安装(挂起大约 3 分钟) 进行干净的 Laravel 5 安装(根本没有挂起) 完全关闭 xdebug(似乎没有什么不同)

对于我所有的包,我已经看到 composer 完成了,但只有当我让它在一夜之间运行时。我根本无法部署到伪造,因为它超时了!这只是在大约两周前才开始发生的。

【问题讨论】:

Turning off xdebug completely (doesn't seem to make a difference) - 这应该会产生巨大的不同,尤其是在没有 SSD 或没有高端 Intel 芯片或两者兼有的机器上。您确定它已关闭吗?我之前在我同事的另一台开发机器上看到过这个问题,作曲家需要几个小时才能进行简单的更新。这个问题最终是一个损坏的作曲家安装。擦除作曲家工件的系统并重新安装效果很好。 好的,是的,它确实有很大的不同(在错误的 php.ini 中将其关闭),但它仍然慢到足以让我的伪造服务器超时。底线是当事情从需要 10 分钟到 10 小时(即使启用了 xdebug)时,会有更大的事情发生。 我不反对你。我认为这里还有其他事情发生,可能是 DNS 解析问题或防火墙问题。你能strace /usr/bin/composer 看看在执行composer update 时发生了什么吗? sidenote strace 会倾倒很多东西,所以它有点像大海捞针,但它绝对有用。但是,可能有更好的方法来调试它。我还找到了composer config --global repo.packagist composer https://packagist.org 的提示,该提示要求设置使用 HTTPS,并且似乎为其他人解决了这个问题。 它发生在我们所有的开发环境中,即使是全新的 4.2 安装。我几乎可以肯定这是由于 Laravel 4.2 的依赖,因为此时 5.2 根本没有挂起。我之前在尝试调试时切换到 https,可能会有所帮助,但基准测试已经完成。 我可以看看你的composer.json,以便我可以尝试在本地安装它吗?我们维护 4.2 LTS 堆栈,没有这个问题。 【参考方案1】:

对于所有正在寻找答案的人...以下是帮助提高性能的方法:

    提交 composer.lock:如果你还没有这样做,你可以运行 'composer 在一台机器上更新'然后提交你的锁定文件然后运行 'composer install' 在彼此的机器上。这节省了我们的部署过程! 通常将版本声明为 尽可能明确。

和/或

    更新你的 Laravel 版本!

【讨论】:

实际上并没有解决问题,但让我想起了composer.lock文件,我只是删除了它,问题就解决了。

以上是关于Composer 在 4.2 上挂起“通过 SAT 解决依赖关系”的主要内容,如果未能解决你的问题,请参考以下文章

LoadLibraryW 调用在 IIS 上挂起

Velocity JS 在 iPad 上挂起

Heroku CLI 在 Windows 10 上挂起

NSURLSession 在 iOS 7.0.x 上挂起

NAudio ASIO Playback 在某些设备上挂起

`navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起