简体   繁体   English

如何解决在composer.json中所需的4.1安装和4.0依赖包之间的Laravel版本冲突

[英]How to resolve Laravel version conflicts between 4.1 installation and 4.0 dependant packages required in composer.json

I'm trying to install the laravelodbc package to use with the laravel framework. 我正在尝试安装laravelodbc软件包以与laravel框架一起使用。 I initially installed laravel using composer create-project laravel/laravel --prefer-dist . 我最初使用composer create-project laravel/laravel --prefer-dist安装了laravel。 I then added "jtgrimes/laravelodbc": "0.2.*" to my composer.json file and added 'jtgrimes\\Laravelodbc\\ODBCServiceProvider' to my list of providers in app.php. 然后,我在composer.json文件中添加了"jtgrimes/laravelodbc": "0.2.*" ,并在app.php中的提供程序列表中添加了'jtgrimes\\Laravelodbc\\ODBCServiceProvider'

The require key in my composer.json file looks like: 我的composer.json文件中的require键如下所示:

"require": {
  "laravel/framework": "4.1.*",
  "yajra/laravel-oci8": "*",
  "jtgrimes/laravelodbc": "*"
},

When I try to run composer update as is suggested in the laravelodbc readme . 当我尝试运行laravelodbc自述文件中建议的composer update

Your requirements could not be resolved to an installable set of packages, the following message is given:

  Problem 1
    - Conclusion: remove laravel/framework 4.1.x-dev
    - Conclusion: don't install laravel/framework 4.1.x-dev
    - Conclusion: don't install laravel/framework v4.1.13
    - Conclusion: don't install laravel/framework v4.1.12
    - Conclusion: don't install laravel/framework v4.1.11
    - Conclusion: don't install laravel/framework v4.1.10
    - Conclusion: don't install laravel/framework v4.1.9
    - Conclusion: don't install laravel/framework v4.1.8
    - Conclusion: don't install laravel/framework v4.1.7
    - Conclusion: don't install laravel/framework v4.1.6
    - Conclusion: don't install laravel/framework v4.1.5
    - Conclusion: don't install laravel/framework v4.1.4
    - Conclusion: don't install laravel/framework v4.1.3
    - Conclusion: don't install laravel/framework v4.1.2
    - Conclusion: don't install laravel/framework v4.1.1
    - jtgrimes/laravelodbc 0.1.1 requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - jtgrimes/laravelodbc 0.1.2 requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - jtgrimes/laravelodbc 0.1.3 requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - jtgrimes/laravelodbc 0.1.4 requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - jtgrimes/laravelodbc 0.2.0 requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - jtgrimes/laravelodbc dev-master requires illuminate/database 4.0.x -> satisfiable by laravel/framework[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9], illuminate/database[4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BETA3, v4.0.0-BETA4, v4.0.1, v4.0.10, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9].
    - Can only install one of: laravel/framework[v4.1.0, 4.0.x-dev].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.0].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.0-BETA2].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.0-BETA3].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.0-BETA4].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.1].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.10].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.2].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.3].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.4].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.5].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.6].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.7].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.8].
    - Can only install one of: laravel/framework[v4.1.0, v4.0.9].
    - don't install illuminate/database 4.0.x-dev|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.0|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.0-BETA2|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.0-BETA3|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.0-BETA4|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.1|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.10|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.2|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.3|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.4|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.5|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.6|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.7|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.8|don't install laravel/framework v4.1.0
    - don't install illuminate/database v4.0.9|don't install laravel/framework v4.1.0
    - Installation request for laravel/framework 4.1.* -> satisfiable by laravel/framework[4.1.x-dev, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.2, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9].
    - Installation request for jtgrimes/laravelodbc * -> satisfiable by jtgrimes/laravelodbc[0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2.0, dev-master].

Edit I was experimenting with different versions of laravel to see if that fixed my problem and forgot to change it back when I posted the question. 编辑我正在尝试使用不同版本的laravel,以查看是否解决了我的问题,并在发布问题时忘记将其改回。 The correct version of laravel is now displayed above, and with the same resulting message as shown above. 正确的laravel版本现在显示在上方,并显示与上述相同的消息。

Edit 2 I tried your suggestion, my fork is here (notice the change to the composer.json file there). 编辑2我尝试了您的建议,我的叉子在这里 (注意那里的composer.json文件的更改)。 I also changed the composer.json file in my laravel project: 我还更改了我的laravel项目中的composer.json文件:

"require": {
  "laravel/framework": "4.1.*",
  "yajra/laravel-oci8": "*",
  "Purkinje/laravelodbc": "*"
},

... ...

"repositories": [
        {
                "type": "vcs",
                "url": "https://github.com/Purkinje/laravelodbc"
        }
],

When I run composer update , I get the error: 当我运行composer update ,出现错误:

Problem 1
    - The requested package purkinje/laravelodbc could not be found in any version, there may be a typo in the package name.

if you are using Laravel 4.1 (as a result of the installation command you instantiated a project based on the actual 4.1 release) you might run into some version conflicts - as 4.1 is around just for a month or so. 如果您使用的是Laravel 4.1(作为安装命令的结果,您基于实际的4.1发行版实例化了一个项目),则可能会遇到一些版本冲突-因为4.1大约一个月左右。

Notice that in you "jtgrimes/laravelodbc" package composer.json file you have 请注意,在您的“ jtgrimes / laravelodbc”包composer.json文件中,

 "illuminate/support": "4.0.x",
                "illuminate/database": "4.0.x"
    },

so it's an obvoius version conflict, as you have 4.1 installed. 所以这是一个obvoius版本冲突,因为您已经安装了4.1。

A quick fix is to just create a new project based on Laravel 4.0, so you can easily install all the packages without the need to fork them on Github 一个快速的解决方法是仅创建一个基于Laravel 4.0的新项目,因此您可以轻松安装所有软件包,而无需将它们打包在Github上

composer create-project laravel/laravel --prefer-dist your_project_name 4.0

Another fix is to fork the project on github, change the composer.json file to include 4.1 versioning and than point your composer to install from your forked version, by adding a reference to a git repo: 另一个修复是将项目添加到github上,更改composer.json文件以包括4.1版本控制,然后通过添加对git repo的引用来指向您的composer从派生版本进行安装:

repositories": [
   {
     "type": "git",
     "url": "git://github.com/your-github-username/yourfork.git"
   }
]

Bear in mind that the 4.0->4.1 change does imply some changes in use of certain Laravel features , so in some cases the package might not work as expected (or at all) when boosted to 4.1 usage. 请记住,4.0-> 4.1的更改确实暗示了某些Laravel功能的使用会发生某些更改,因此在某些情况下,当提升为4.1的使用率时,该软件包可能无法按预期(或根本无法)工作。 See laravel.com/docs/upgrade for details. 有关详细信息,请参见laravel.com/docs/upgrade。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM