如何获得所有已安装的软件包连同版本在作曲家的列表?

我一直在我的本地机器上使用Symfony 2.1开发一个项目。我已经将它上传到我的服务器上,但是当我尝试使用Composer安装供应商包时,我得到了很多依赖错误。想必这与Symfony刚刚发布的最新版本有关,而我的composer.json文件没有指定确切的版本号。

有什么方法可以快速显示本地机器上所有内容的版本号吗?

这是我的作曲家。Json文件(直到几天前工作都很好):

{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"sonata-project/admin-bundle": "*",
"sonata-project/cache-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master",
"stof/doctrine-extensions-bundle": "1.1.x-dev",
"sonata-project/user-bundle": "dev-master",
"sonata-project/easy-extends-bundle": "dev-master",
"friendsofsymfony/user-bundle": "2.0.x-dev",
"friendsofsymfony/jsrouting-bundle": "*",
"liip/imagine-bundle": "*",
"simplethings/form-extra-bundle": "dev-master",
"antimattr/google-bundle": "dev-master",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"genemu/form-bundle": "2.1.*",
"behat/behat":                  "2.4.*@stable",
"behat/mink":                   "1.4.*@stable",
"behat/symfony2-extension":     "*@stable",
"behat/mink-extension":         "*@stable",
"behat/mink-selenium2-driver":  "*@stable",
"behat/mink-browserkit-driver":  "*",
"liip/functional-test-bundle": "dev-master"
},
"scripts": {
"post-install-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"minimum-stability": "dev",
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web"
},
"config": {
"bin-dir": "bin/"
}
}
253890 次浏览

如果你想安装Symfony2.2,你可以在你的composer.json 在Symfony博客上中看到完全的变化。

只需根据此更新您的文件并在此之后运行composer update。这将在项目上安装所有新的依赖项和Symfony2.2。


如果你不想更新到Symfony2.2,但有依赖错误,你应该发布这些,这样我们可以进一步帮助你。

你可以运行composer show -i (--installed的简称)。

在最新版本中只使用composer show

-i选项已弃用。

你也可以使用composer的global安装:composer global show

使用实例列出全局安装的编写器包:

composer global show -i

Ivan的回答很好:

composer global show -i

附加信息:如果你收到类似这样的消息:

Composer could not find a composer.json file in ~/.composer

...您可能还没有安装任何包。如果是这样,您可以忽略消息的下一部分包含:

... please create a composer.json file ...

...因为一旦你安装了一个包,这个消息就会消失。

列出已安装的依赖项:

  • 平:composer show -i
  • 树:composer show -i -t

-i--installed的缩写。

-t--tree的缩写。

裁判:https://getcomposer.org/doc/03-cli.md#show

此命令的行为已被修改,因此您不必传递-i选项:

[10:19:05] coil@coil:~/workspace/api$ composer show -i
You are using the deprecated option "installed".
Only installed packages are shown by default now.
The --all option can be used to show all packages.

如果你只想检查版本只有一个,你可以这样做

composer show -- twig/twig

注意,默认情况下只显示已安装的包,installed选项现在已弃用。

有没有办法通过$event->getComposer()->getRepositoryManager()->getAllPackages()来获取它

在composer-runtime-api 2.0+中,有一个新的InstalledVersions类,它带有一些静态方法来以编程方式查看内容。

例如:

// To list all packages (`string[]`)
\Composer\InstalledVersions::getInstalledPackages();


// To list every details of every packages
\Composer\InstalledVersions::getAllRawData();

更多信息:https://getcomposer.org/doc/07-runtime.md#installed-versions