Jak uzyskać listę wszystkich zainstalowanych pakietów wraz z wersją w kompozytorze?


258

Pracowałem nad projektem przy użyciu Symfony 2.1 na moim komputerze lokalnym. Przesłałem go na mój serwer, ale kiedy próbuję zainstalować pakiety dostawcy za pomocą Composer, pojawia się wiele błędów zależności. Przypuszczalnie jest to związane z najnowszą wersją Symfony, która właśnie została wydana, a mój composer.jsonplik nie określa dokładnych numerów wersji.

Czy jest jakiś sposób, aby szybko wyświetlić numery wersji wszystkiego na moim komputerze lokalnym?

Oto mój plik composer.json (który działał dobrze jeszcze kilka dni temu):

{
    "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/"
    }
}

Odpowiedzi:


536

Możesz biegać composer show -i(skrót od --installed).

W najnowszej wersji wystarczy użyć composer show.

W -iopcji została zaniechana.

Możesz także użyć globalinstalacji kompozytora:composer global show


napisz to każdy, kto próbuje to uzyskać za pomocą composer.phar i php
Yashrajsinh Jadeja

9
Opcja „-i” jest teraz przestarzała. composer showdomyślnie wyświetla zainstalowany pakiet.
herve

I prawdopodobnie nie trzeba dodawać, że composer show --helpdrukuje wszystkie dostępne opcje.
Gerard Roche

52

Aby wyświetlić globalnie zainstalowane pakiety kompozytora:

composer global show -i


12

Zachowanie tego polecenia zostało zmodyfikowane, więc nie musisz przekazywać -iopcji:

[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.

10

Jeśli chcesz sprawdzić wersję tylko dla jednej, możesz to zrobić

composer show -- twig/twig

Zauważ, że teraz tylko zainstalowane pakiety są domyślnie wyświetlane, a opcja zainstalowana jest teraz przestarzała.


6

Powyższa odpowiedź Iwana jest dobra:

composer global show -i

Dodano informacje: jeśli otrzymasz wiadomość podobną do:

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

... możesz nie mieć jeszcze zainstalowanych pakietów. Jeśli tak, możesz zignorować następną część wiadomości zawierającą:

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

... ponieważ po zainstalowaniu pakietu komunikat zniknie.


2

Jeśli chcesz zainstalować Symfony2.2, możesz zobaczyć pełną zmianę na swoim composer.json blogu Symfony .

Po prostu zaktualizuj plik zgodnie z tym i uruchom composer updatepóźniej. To zainstaluje wszystkie nowe zależności i Symfony2.2 w twoim projekcie.


Jeśli nie chcesz aktualizować do Symfony2.2, ale masz błędy zależności, opublikuj je, abyśmy mogli Ci pomóc.


Okazało się, że problemy, które miałem, polegały na niezgodności między pakietem użytkownika FOS 2x a pakietem użytkowników sonat
Dan

1
@ Dan, myślę, że było tak, ponieważ SonataUserBundle nie został poprawnie skonfigurowany. Zostało to naprawione wczoraj.
Wouter J

0

Czy istnieje sposób na uzyskanie go za pomocą $ event-> getComposer () -> getRepositoryManager () -> getAllPackages ()

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.