Composer:如何安装另一个依赖项而不更新旧的? [英] Composer: how can I install another dependency without updating old ones?

查看:3709
本文介绍了Composer:如何安装另一个依赖项而不更新旧的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个项目有几个依赖项,我想安装另一个,但我想保持其他人的方式。所以我编辑了 composer.json ,但如果我运行 composer install ,我得到以下输出: / p>

I have a project with a few dependencies and I'd like to install another one, but I'd like to keep the others the way they are. So I've edited the composer.json, but if I run composer install, I get the following output:

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安装,所以我不知道为什么它抱怨

First of all, I do have mcrypt installed, so I don't know why it's complaining about that there.

我的composer.json:

So, how can I install this new dependency?

My 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"
}


推荐答案

要安装一个新软件包,您只有两个选项:

To install a new package and only that, you have two options:


  1. 使用 require 命令,只需运行:

  1. Using the require command, just run:

composer require new/package

Composer将猜测要使用的最佳版本约束,安装该软件包,并将其添加到 composer.lock

Composer will guess the best version constraint to use, install the package, and add it to composer.lock.

您还可以通过运行以下命令来指定显式版本约束:

You can also specify an explicit version constraint by running:

composer require new/package ~2.5



  1. 使用 update ,请手动将新软件包添加到 composer.json 然后运行:

composer update new/package


如果Composer抱怨,说明您的需求无法解析为一组可安装的软件包,您可以通过传递标志 - with-dependencies 。这将列出你试图安装/更新的软件包的所有依赖项(但没有你的其他依赖项)。

If Composer complains, stating "Your requirements could not be resolved to an installable set of packages.", you can resolve this by passing the flag --with-dependencies. This will whitelist all dependencies of the package you are trying to install/update (but none of your other dependencies).

关于问题asker的问题与Laravel和mcrypt:它在您的CLI php.ini中正确启用。如果 php -m 未列出mcrypt,则它缺失。

Regarding the question asker's issues with Laravel and mcrypt: check that it's properly enabled in your CLI php.ini. If php -m doesn't list mcrypt then it's missing.

/ strong>使用 composer update 时,不要忘记指定 new / package !省略该参数将导致所有依赖项以及 composer.lock 被更新。

Important: Don't forget to specify new/package when using composer update! Omitting that argument will cause all dependencies, as well as composer.lock, to be updated.

这篇关于Composer:如何安装另一个依赖项而不更新旧的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆