我有一个带有一些依赖项目的项目,我想安装另一个,但我想保持其他人的方式.所以我编辑了composer.json,但如果我运行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.
Run Code Online (Sandbox Code Playgroud)
首先,我确实安装了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"
}
Run Code Online (Sandbox Code Playgroud)
Sel*_*aek 282
要安装新软件包,只有这个,您有两个选择:
使用该require命令,只需运行:
composer require new/package
Run Code Online (Sandbox Code Playgroud)
Composer将猜测要使用的最佳版本约束,安装包并将其添加到composer.lock.
您还可以通过运行以下命令指定显式版本约束:
composer require new/package ~2.5
Run Code Online (Sandbox Code Playgroud)-要么-
使用该update命令手动添加新包composer.json,然后运行:
composer update new/package
Run Code Online (Sandbox Code Playgroud)如果Composer抱怨说"您的要求无法解析为可安装的软件包集.",您可以通过传递标志来解决此问题--with-dependencies.这会将您尝试安装/更新的软件包的所有依赖项列入白名单(但不包括其他任何依赖项).
关于提问者与Laravel和mcrypt的问题:检查它是否在您的CLI php.ini中正确启用.如果php -m没有列出mcrypt那么它就丢失了.
重要提示:不要忘记在使用new/package时指定composer update!省略该参数将导致所有依赖关系以及composer.lock更新.
Mat*_*ics 29
实际上,正确的解决方案是:
composer require vendor/package
该
require命令将新包composer.json从当前目录添加到该文件.
php composer.phar require添加/更改要求后,将安装或更新修改后的要求.
如果您不想以交互方式选择需求,则可以将它们传递给命令.
php composer.phar require vendor/package:2.* vendor/package2:dev-master
虽然确实composer update安装了composer.json中的新软件包,但它也会根据composer.json中的任何模糊逻辑(>或*冒号后的字符)更新composer.lock文件和任何已安装的软件包!这可以通过使用来避免composer update vendor/package,但我不建议养成它的习惯,因为你是一个被遗忘的论点,远离可能破坏的项目......
保持理智并坚持composer require vendor/package添加新的依赖项!
And*_*rew 20
我们可以安装新包而不更新其他依赖项,如下所示:
composer require package/name --no-update
Run Code Online (Sandbox Code Playgroud)
这会将您的包添加到composer.json(不更新composer.lock)
composer update package/name
Run Code Online (Sandbox Code Playgroud)
现在这将安装/更新您的新包,将其添加到composer.lock而不更新其他依赖项
| 归档时间: |
|
| 查看次数: |
133693 次 |
| 最近记录: |