安装一个包而不用composer检查所有要求

时间:2015-01-25 20:32:35

标签: php composer-php packagist

我有这样的composer.json:

{
"require": {
    "symfony/yaml" : "dev-master",
    "symfony/console" : "dev-master",
    "ebuildy/ebuildy" : "dev-master",
    "keboola/php-encryption": "dev-master",
    "pear-pear.php.net/mail_mime" : "*",
    "pear-pear.php.net/http_request2" : "*",
    "pear-pear.php.net/mail_mimedecode" : "*",
    "microsoft/windowsazure": "*",
    "rollbar/rollbar": "dev-master",
    "facebook/php-sdk-v4" : "4.0.*",
    "happyr/linkedin-api-client": "dev-master",
    "zircote/swagger-php" : "dev-master",
    "google/apiclient" : "dev-master"
},
    "autoload": {
        "psr-0": {
           "bizlunch": "src/"
        }
    },
    "minimum-stability": "dev"
}

刚添加“google / apiclient”,我想安装这个新软件包而不检查其他软件包要求(因为在我的开发机器上“keboola / php-encryption”抱怨crypt ext缺失和其他东西)。

什么是正确的命令?尝试已更新PACKAGE,但这失败了:

$root: php composer.phar update google/apiclient       
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
- keboola/php-encryption dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.

2 个答案:

答案 0 :(得分:2)

如果要忽略本地系统的详细信息,可以使用--ignore-platform-reqs标志。请记住,它可能会在生产中导致无法使用的锁定文件

让我们在一个假想的场景中展示它:

  • 您在本地也没有ext-crypt,也没有在生产中。
  • cryptX
    • cryptX:1.0中使用lib-crypt-polyfill(这与ext-crypt使用PHP代码所做的事情一样)
    • 但是在cryptX:2.0中,他们将依存关系更改为ext-crypt

现在,如果您要正常安装它,您将获得版本1(这是唯一满足依赖项的版本)。但是使用--ignore-platform-reqs,它就像在系统中可用的任何东西一样工作。因此,它很高兴安装了版本2,该版本在您的计算机上不起作用,但更重要的是,它在您的生产服务器上也不起作用。

答案 1 :(得分:0)

一样简单

php composer.phar update google/apiclient 

或者您可以指定多个单独的包

php composer.phar update google/apiclient zircote/swagger-php rollbar/rollbar