简体   繁体   中英

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. I initially installed laravel using composer create-project laravel/laravel --prefer-dist . 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.

The require key in my composer.json file looks like:

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

When I try to run composer update as is suggested in the laravelodbc readme .

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. The correct version of laravel is now displayed above, and with the same resulting message as shown above.

Edit 2 I tried your suggestion, my fork is here (notice the change to the composer.json file there). I also changed the composer.json file in my laravel project:

"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:

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.

Notice that in you "jtgrimes/laravelodbc" package composer.json file you have

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

so it's an obvoius version conflict, as you have 4.1 installed.

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

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:

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. See laravel.com/docs/upgrade for details.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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