如何使用Composer安装特定版本的软件包?

时间:2016-12-01 15:12:54

标签: php composer-php dependency-management

我正在尝试使用Composer安装特定版本的软件包。我尝试了composer installcomposer require,但他们正在安装最新版本的软件包。如果我想要旧版本怎么办?

9 个答案:

答案 0 :(得分:372)

composer require vendor/package:version

例如:

composer require refinery29/test-util:0.10.2

答案 1 :(得分:61)

在版本号中添加双引号以使用插入符号运算符。

composer require middlewares/whoops "^0.4"

答案 2 :(得分:15)

只需使用php composer.phar require

例如:

php composer.phar require doctrine/mongodb-odm-bundle 3.0

也可以安装。

https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install

答案 3 :(得分:14)

如@alucic所述,使用:

composer require vendor/package:version

或者您可以使用:

composer update vendor/package:version

您可能应该查看this StackOverflow post about differences between composer install and composer update

有关版本号的问题,您可以查看Composer documentation on versions,但简而言之:

  • 波浪版本范围()-〜1.2.3等于> = 1.2.3 << strong> 1.3.0
  • Caret版本范围( ^ )-^ 1.2.3等于> = 1.2.3 << strong> 2.0.0

因此,通过 Tilde ,您将获得补丁的自动更新,但次要和主要版本将不会更新。但是,如果您使用 Caret ,则将获得补丁程序和次要版本,但不会获得主要(重大更改)版本。

Tilde版本被认为是“更安全”的方法,但是如果您使用可靠的依赖项(维护良好的库),则Caret版本应该不会有任何问题(因为较小的更改不应破坏更改。

答案 4 :(得分:2)

假设您要安装Laravel Collective。当前版本为6.x,但您需要版本5.8。您可以运行以下命令:

composer require "laravelcollective/html":"^5.8.0"

文档中显示了一个很好的示例: https://laravelcollective.com/docs/5.5/html

答案 5 :(得分:0)

在您的composer.json中,您可以输入:

{
    "require": {
        "vendor/package": "version"
    }
}

然后从包含composer install的目录运行composer updatecomposer.json。有时候,对于我来说,作曲家很费神,所以我将以composer clear-cache; rm -rf vendor; rm composer.lock之前的composer install开始,以确保它变得新鲜。


当然,正如其他答案指出的那样,您可以从终端运行以下命令:

composer require vendor/package:version

以及版本控制:
-Composer's official versions article
-Ecosia Search

答案 6 :(得分:0)

我试图要求来自不同存储库的开发分支而不是最新版本,但我遇到了同样的问题,但上述问题对我不起作用:(

一段时间后,我在文档中看到,在 dev 分支的情况下,您需要在版本中添加“dev-”前缀,以下内容完美运行。

composer require [vendorName]/[packageName]:dev-[gitBranchName]

答案 7 :(得分:0)

Curl 可用于下载特定版本:

curl -O "https://getcomposer.org/download/1.10.17/composer.phar"
chmod a+x composer.phar
sudo mv composer.phar /usr/local/bin/composer

答案 8 :(得分:0)

composer 需要包名版本号

示例:作曲家需要“laravel/tinker”:“^2.5”