我有一个项目,有一些依赖,我想安装另一个,但我想保持其他人的方式。所以我编辑了作曲家。但是如果我运行composer install,我会得到以下输出:

Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Your requirements could not be resolved to an installable set of packages.

Problem 1
    - laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - Installation request for laravel/framework dev-master -> satisfiable by laravel/framework dev-master.

首先,我确实安装了mcrypt,所以我不知道为什么它在那里抱怨。

那么,如何安装这个新的依赖项呢?

我的composer.json:

{
    "require": {

        "opauth/opauth": "*",
        "opauth/facebook": "*",
        "opauth/google": "*",
        "opauth/twitter": "*",

        "imagine/Imagine": "dev-develop",

        "laravel/framework": "4.*",
        "loic-sharma/profiler": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/libraries",
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/tests/TestCase.php"
        ]
    },
    "minimum-stability": "dev"
}

当前回答

我们可以安装一个新的包,而不需要更新其他依赖项,就像这样:

 composer require package/name --no-update

这将把您的包添加到composer。Json(没有更新到composer.lock)

composer update package/name

这将安装/更新您的新包,并将其添加到composer中。锁定而不更新其他deps

其他回答

我们可以安装一个新的包,而不需要更新其他依赖项,就像这样:

 composer require package/name --no-update

这将把您的包添加到composer。Json(没有更新到composer.lock)

composer update package/name

这将安装/更新您的新包,并将其添加到composer中。锁定而不更新其他deps

我的用例更简单,只适合您的标题,而不适合进一步的细节。

也就是说,我想安装一个新的包,它还没有在我的编写器中。Json,而不更新所有其他包。

这里的解是composer require x/y

在我的例子中,我有一个回购:

要求A,B,C,D在.json 但是。lock中只有A,B,C

与此同时,在生成锁时,A、B、C拥有更新的版本。

出于某种原因,我删除了“供应商”,并想要进行composer安装,但失败了,提示信息如下:

Warning: The lock file is not up to date with the latest changes in composer.json.
You may be getting outdated dependencies. Run update to update them.
Your requirements could not be resolved to an installable set of packages.

我试图从Seldaek发布一个作曲家更新vord /libraryD运行解决方案,但作曲家坚持更新更多的东西,所以.lock有太多的变化看到我的git工具。

我使用的解决方案是:

删除所有的供应商目录。 临时从.json中删除vord /LibraryD需求。 运行composer install。 然后删除文件.json,并从repo中再次签出它(相当于重新添加文件,但避免了潜在的空白更改)。 然后运行Seldaek的解决方案编写器update vendorD/libraryD

它确实安装了库,但除此之外,git diff告诉我,在.lock中只添加了新的东西,而没有编辑其他的东西。

(感谢Seldaek的指针;))

要安装一个新包,你有两个选择:

使用require命令,只需运行: 作曲家需要新的/包 Composer将猜测使用的最佳版本约束,安装包,并将其添加到Composer .lock中。 您还可以通过运行以下命令来指定显式的版本约束: 作曲家需要新的/包~2.5

–OR–

使用update命令,手动将新包添加到编写器。Json,然后运行: 编写器更新新的/包

如果Composer抱怨说“您的需求无法解析为可安装的包集”,您可以通过传递标志——with-dependencies来解决这个问题。这将白名单所有的软件包的依赖,你试图安装/更新(但没有你的其他依赖)。

关于提问者使用Laravel和mcrypt的问题:检查在CLI php.ini中是否正确启用了它。如果php -m没有列出mcrypt,那么它就会丢失。

重要提示:在使用composer update时,不要忘记指定new/package !省略该参数将导致所有依赖,以及编写器。锁定,待更新。