首页 > 解决方案 > GTFS 与 Laravel 的实时绑定

问题描述

我在安装Google GTFS-Realtime 绑定库时遇到问题。

运行时composer require google/gtfs-realtime-bindings:^0.0.2,我收到以下错误:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for google/gtfs-realtime-bindings ^0.0.2 -> satisfiable by google/gtfs-realtime-bindings[0.0.2].
    - Conclusion: remove symfony/console v4.2.3
    - Conclusion: don't install symfony/console v4.2.3
    - google/gtfs-realtime-bindings 0.0.2 requires centraldesktop/protobuf-php 0.5.* -> satisfiable by centraldesktop/protobuf-php[0.5.0, 0.5.1, 0.5.2].
    - centraldesktop/protobuf-php 0.5.2 requires symfony/console 2.* -> satisfiable by symfony/console[2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.x-dev, 2.1.x-dev, 2.2.x-dev, 2.3.x-dev, 2.4.x-dev, 2.5.x-dev, 2.6.x-dev, 2.7.x-dev, 2.8.x-dev, v2.0.10, v2.0.12, v2.0.13, v2.0.14, v2.0.15, v2.0.16, v2.0.17, v2.0.18, v2.0.19, v2.0.20, v2.0.21, v2.0.22, v2.0.23, v2.0.24, v2.0.25, v2.0.9, v2.1.0, v2.1.1, v2.1.10, v2.1.11, v2.1.12, v2.1.13, v2.1.2, v2.1.3, v2.1.4, v2.1.5, v2.1.6, v2.1.7, v2.1.8, v2.1.9, v2.2.0, v2.2.1, v2.2.10, v2.2.11, v2.2.2, v2.2.3, v2.2.4, v2.2.5, v2.2.6, v2.2.7, v2.2.8, v2.2.9, v2.3.0, v2.3.1, v2.3.10, v2.3.11, v2.3.12, v2.3.13, v2.3.14, v2.3.15, v2.3.16, v2.3.17, v2.3.18, v2.3.19, v2.3.2, v2.3.20, v2.3.21, v2.3.22, v2.3.23, v2.3.24, v2.3.25, v2.3.26, v2.3.27, v2.3.28, v2.3.29, v2.3.3, v2.3.30, v2.3.31, v2.3.32, v2.3.33, v2.3.34, v2.3.35, v2.3.36, v2.3.37, v2.3.38, v2.3.39, v2.3.4, v2.3.40, v2.3.41, v2.3.42, v2.3.5, v2.3.6, v2.3.7, v2.3.8, v2.3.9, v2.4.0, v2.4.0-BETA1, v2.4.0-BETA2, v2.4.0-RC1, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.0-BETA1, v2.5.0-BETA2, v2.5.0-RC1, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.0-BETA1, v2.6.0-BETA2, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.0-BETA1, v2.7.0-BETA2, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.50, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.0-BETA1, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.49, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9].
    - centraldesktop/protobuf-php 0.5.0 requires symfony/console 2.3.* -> satisfiable by symfony/console[2.3.x-dev, v2.3.0, v2.3.1, v2.3.10, v2.3.11, v2.3.12, v2.3.13, v2.3.14, v2.3.15, v2.3.16, v2.3.17, v2.3.18, v2.3.19, v2.3.2, v2.3.20, v2.3.21, v2.3.22, v2.3.23, v2.3.24, v2.3.25, v2.3.26, v2.3.27, v2.3.28, v2.3.29, v2.3.3, v2.3.30, v2.3.31, v2.3.32, v2.3.33, v2.3.34, v2.3.35, v2.3.36, v2.3.37, v2.3.38, v2.3.39, v2.3.4, v2.3.40, v2.3.41, v2.3.42, v2.3.5, v2.3.6, v2.3.7, v2.3.8, v2.3.9].
    - centraldesktop/protobuf-php 0.5.1 requires symfony/console 2.3.* -> satisfiable by symfony/console[2.3.x-dev, v2.3.0, v2.3.1, v2.3.10, v2.3.11, v2.3.12, v2.3.13, v2.3.14, v2.3.15, v2.3.16, v2.3.17, v2.3.18, v2.3.19, v2.3.2, v2.3.20, v2.3.21, v2.3.22, v2.3.23, v2.3.24, v2.3.25, v2.3.26, v2.3.27, v2.3.28, v2.3.29, v2.3.3, v2.3.30, v2.3.31, v2.3.32, v2.3.33, v2.3.34, v2.3.35, v2.3.36, v2.3.37, v2.3.38, v2.3.39, v2.3.4, v2.3.40, v2.3.41, v2.3.42, v2.3.5, v2.3.6, v2.3.7, v2.3.8, v2.3.9].
    - Can only install one of: symfony/console[2.0.4, v4.2.3].
    [...]
    - Can only install one of: symfony/console[v2.8.9, v4.2.3].
    - Installation request for symfony/console (locked at v4.2.3) -> satisfiable by symfony/console[v4.2.3].


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

对我来说,它看起来centraldesktop/protobuf-php与 Laravel 存在依赖冲突。两者都需要symfony/console,protobuf0.5 需要2.*而 Laravel 需要^4.1

这是我的第一个依赖冲突问题,我不知道如何解决。我已经尝试添加"symfony/console": "dev-master as 2.8"但它不起作用。

有谁知道我如何摆脱这种情况?

谢谢

标签: phplaravelsymfonydependenciescomposer-php

解决方案


是的,你的评估是正确的。gtfs-realtime-bindings 需要 centraldesktop /protobuf-php:0.5.*这对 symfony/console 有一个不幸的要求。在后来的版本中,他们将其更改为仅作为开发要求(即使那时只有控制台 3.x)。

我不认为你可以安全地降级你的 symfony/console 版本。相反,我要做的是向 gtfs-realtime-bindings 创建一个拉取请求,将所需的最低版本 centraldesktop/protobuf-php 提升到^1.0. 这可能需要对代码进行其他更改,因为在 0.5 到 1.0 之间可能存在重大更改。不幸的是,centraldesktop/Protobuf-PHP不提供升级指南,因此您必须通过 IDE 中的测试或代码检查来确定是否有任何问题。幸运的是 gtfs-realtime-bindings 已经过测试并且看起来很小,因此即使您不了解所有内部结构,也应该可以进行此升级。另外,当您打开正在进行的拉取请求时,维护人员可能会支持您。

另一种选择是搜索绑定的替代实现或编写自己的绑定。


推荐阅读