【问题标题】:How to get list of all installed packages along with version in composer?如何获取所有已安装软件包的列表以及作曲家中的版本?
【发布时间】:2013-02-17 14:10:49
【问题描述】:

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

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

这是我的 composer.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/"
    }
}

【问题讨论】:

    标签: composer-php


    【解决方案1】:

    你可以运行composer show -i--installed的缩写)。

    在最新版本中只需使用composer show

    -i 选项已被弃用。

    您也可以使用作曲家的global安装:composer global show

    【讨论】:

    • 写给任何试图使用composer.phar和php的人
    • 现在不推荐使用“-i”选项。 composer show 默认列出已安装的包。
    • 而且可能不用说composer show --help 会打印所有可用的选项。
    【解决方案2】:

    列出全局安装的作曲家包:

    composer global show -i
    

    【讨论】:

    • 自 2021 年起,您可以简单地使用 composer global show
    【解决方案3】:

    列出已安装的依赖项:

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

    -i--installed 的缩写。

    -t--tree 的缩写。

    参考:https://getcomposer.org/doc/03-cli.md#show

    【讨论】:

    • 谢谢。我还发现-t 标志非常有用
    【解决方案4】:

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

    composer show -- twig/twig
    

    请注意,现在默认只显示已安装的包,并且已弃用已安装选项。

    【讨论】:

      【解决方案5】:

      此命令的行为已修改,因此您不必传递 -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.
      

      【讨论】:

        【解决方案6】:

        上面伊万的回答很好:

        composer global show -i

        添加信息:如果您收到类似于以下内容的消息:

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

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

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

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

        【讨论】:

          【解决方案7】:

          如果你想安装 Symfony2.2,你可以在你的 composer.json on the Symfony blog 看到完整的变化。

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


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

          【讨论】:

          • 原来我遇到的问题是 FOS 用户包 2x 和奏鸣曲用户包之间的不兼容
          • @Dan,我认为这是因为 SonataUserBundle 的配置方式不正确。这是昨天修复的。
          【解决方案8】:

          在 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

          【讨论】:

          • 我收到了Class 'Composer\InstalledVersions' not found 我已将"composer-runtime-api": "^2.0" 添加到composer.json 中的要求中。我只能在 AWS Elastic beanstalk 上进行测试,但它似乎没有安装我的包。
          • 我正在运行 laravel 5.8,所以它可能与此有关。
          • 应该可以了,你知道你用的是哪个版本的作曲家吗?
          【解决方案9】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-20
            • 2012-10-08
            • 2014-10-20
            • 1970-01-01
            • 2020-05-25
            • 2012-12-29
            • 1970-01-01
            相关资源
            最近更新 更多