user1072337
user1072337

Reputation: 12945

"Composer update for Laravel: Requirements could not be resolved to an installable set of packages."

I recently tried updating my laravel project using composer, using this in the requirements section:

"require": {

    "laravel/framework": "4.0.*",

        "way/generators": "dev-master",

        "taylorotwell/laravel-oauth2": "0.2.*",

        "juy/profiler" : "dev-master", 

        "cviebrock/eloquent-sluggable": "1.0.*"

    },

I received the following error:

Loading composer repositories with package information

Updating dependencies (including require-dev)

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



  Problem 1

    - Conclusion: remove laravel/framework 4.0.x-dev

    - Conclusion: don't install laravel/framework 4.0.x-dev

    - Conclusion: don't install laravel/framework v4.0.10

    - Conclusion: don't install laravel/framework v4.0.9

    - Conclusion: don't install laravel/framework v4.0.8

    - Conclusion: don't install laravel/framework v4.0.7

    - Conclusion: don't install laravel/framework v4.0.6

    - Conclusion: don't install laravel/framework v4.0.5

    - Conclusion: don't install laravel/framework v4.0.4

    - Conclusion: don't install laravel/framework v4.0.3

    - Conclusion: don't install laravel/framework v4.0.2

    - Conclusion: don't install laravel/framework v4.0.1

    - Conclusion: don't install laravel/framework v4.0.0

    - Conclusion: don't install laravel/framework v4.0.0-BETA4

    - Conclusion: don't install laravel/framework v4.0.0-BETA3

    - way/generators dev-master requires illuminate/support ~4.1 -> satisfiable by laravel/framework[4.1.x-dev, 4.2.x-dev], illuminate/support[4.1.x-dev, 4.2.x-dev, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.14, v4.1.15, v4.1.16, v4.1.17, v4.1.18, v4.1.19, v4.1.2, v4.1.20, v4.1.21, v4.1.22, v4.1.23, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9].

    - way/generators dev-master requires illuminate/support ~4.1 -> satisfiable by laravel/framework[4.1.x-dev, 4.2.x-dev], illuminate/support[4.1.x-dev, 4.2.x-dev, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.13, v4.1.14, v4.1.15, v4.1.16, v4.1.17, v4.1.18, v4.1.19, v4.1.2, v4.1.20, v4.1.21, v4.1.22, v4.1.23, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9].

    - don't install illuminate/support 4.1.x-dev|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support 4.2.x-dev|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.0|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.1|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.10|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.11|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.12|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.13|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.14|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.15|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.16|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.17|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.18|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.19|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.2|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.20|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.21|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.22|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.23|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.3|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.4|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.5|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.6|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.7|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.8|don't install laravel/framework v4.0.0-BETA2

    - don't install illuminate/support v4.1.9|don't install laravel/framework v4.0.0-BETA2

    - Can only install one of: laravel/framework[v4.0.0-BETA2, 4.1.x-dev].

    - Can only install one of: laravel/framework[v4.0.0-BETA2, 4.2.x-dev].

    - Installation request for laravel/framework 4.0.* -> 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].

    - Installation request for way/generators dev-master -> satisfiable by way/generators[dev-master].

I've never seen this before. I tried removing the "cviebrock/eloquent-sluggable": "1.0.*" line (because it was recently added), but I am seeing the same error. Any ideas? Thank you.

Upvotes: 5

Views: 4857

Answers (2)

Sven
Sven

Reputation: 70863

Don't use dev-master as a version requirement for long-term (or even short-term) development of your own software if you do not follow the development decisions of that library closely.

What probably happened is that way/generators once was compatible with Laravel 4.0 in that dev-master branch, which lead to the release of version 1.1. And then they went on and switched to depending on Laravel 4.1.

Your own software can only see the most current commit in that branch. There is no way Composer can go back in history to earlier states in dev-master, like the last one that defined Laravel 4.0 as dependency. In such a situation, you cannot update with Composer anymore. If you update the whole setup (composer update), things will conflict. If you only update one component (composer update other/library), which itself depends on the NEWER version of way/generators:dev-master, which you didn't install, it will also not work.

Always use tagged versions. To make it easier with updating, don't only use fixed versions like 4.0.7 (although these will be very stable - but you would be unable to update anything), but use these tilde version requirements: ~4.0 is a shortcut for >=4.0,<5.0. This will allow updating to any compatible version in the 4.x branch (provided that the software follows semantic versioning). In particular, it would allow to update to Laravel 4.1. And if you know you need 4.1.0 as the minimum version: ~4.1 is the shortcut for >=4.1,<5.0.

Additionally, there is a nifty piece of software that generates the dependency graph as a picture including the version requirements and resolved versions: https://github.com/clue/graph-composer This really helps understanding what kind of software is required by whom.

Upvotes: 4

Kaugesaar
Kaugesaar

Reputation: 56

way/generators dev-master requires illuminate/support ~4.1

There's your conflict, as laravel 4.0.* will install illuminate/support based on which laravel version you use: https://github.com/laravel/framework/blob/master/composer.json#L61

Edit: I.e. you'll need to downgrade way/generators to 1.1 as laravel 4.0.* is required by taylorotwell/laravel-oauth2.

Upvotes: 4

Related Questions