Jak zaktualizować tylko jedną zależność kompozytora?
Spodziewałem się tego
composer update videlalvaro/php-amqplib
tylko jedna zależność zostanie zaktualizowana, ale zamiast tego zaktualizuje wszystko.
czego mi brakuje?
PS: ta zależność jest zdefiniowana jako
"videlalvaro/php-amqplib": "2.2.0"w
composer.jsonPPS: używana wersja kompozytora to
3da05c68f9561fa822c522b1815435ff990493ff 02.10.2013 14:25:06PPPS: rzeczywisty wynik:
$ composer.phar update videlalvaro/php-amqplib --no-dev
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages. Problem 1
- symfony/icu v1.2.0 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- symfony/icu v1.2.0 requires lib-icu >=4.4 -> the requested linked library icu has the wrong version installed or is missing from your system, make sure to have the extension providing it.
- Installation request for symfony/icu == 1.2.0.0 -> satisfiable by symfony/icu[v1.2.0].
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Komunikat o błędzie informuje, że biblioteka lib-icu nie jest dostępna w twoim systemie. Najwyraźniej można to rozwiązać, instalując rozszerzenie PHP Intl.
Podobne problemy wystąpiłyby, gdybyś wykonał aktualizację kompozytora dla projektu, który wymagał PHP 5.5 w jednym z jego wymagań, obniżył go do PHP 5.4, a następnie uruchomił aktualizację kompozytora dla osobnego wymagania, które nie wymagało PHP 5.5. Nawet jeśli nie potrzebujesz aktualizacji, która wymaga PHP 5.5, wymagania dla tego pakietu nie będą możliwe do rozwiązania, a więc Composer zawiedzie.
W twoim przypadku, nawet jeśli po prostu spróbujesz zaktualizować do najnowszej wersji, wymagania dla nie są spełnione, więc aktualizacja kompozytora się nie powiedzie .
Edytować
Aby być pomocnym, zakładam, że przeinstalowałeś PHP od ostatniej aktualizacji i odinstalowałeś lub zapomniałeś zainstalować rozszerzenie PHP Intl. Composer nie może w zadowalający sposób spełnić wymagań, które ustawia plik composer.json, w związku z czym domyślnie nie robi nic, zamiast celowo wykonywać aktualizacje, gdy wymagania nie są spełniane.
Zasadniczo musisz zainstalować rozszerzenia PHP wymagane do uruchomienia istniejącego zainstalowanego oprogramowania, a wtedy Composer będzie mógł zaktualizować jeden pakiet, który chcesz zaktualizować, a także spełnić wymagania dla innych pakietów.
Anonimowy użytkownik
Potwierdzenie od:
tl;dr:
>
Możesz wymienić
trochę
zależności do aktualizacji
w jednym zespole
:
Fabuła:
>
Jeśli chcesz zaktualizować tylko jedną zależność ( ), możesz napotkać problem polegający na tym, że żądanie nie jest spełnione, ponieważ inna zależność jest zainstalowana w złej wersji. I nie musi być określone w twoim , może to być po prostu zależność od jakiejś innej zależności.
Na przykład. Chciałem zaktualizować tylko i tylko , ale wywołanie skarżyło się, że (zależność od apiclient) wymaga w wersji . Mam zainstalowany . nie został wymieniony w moim . Musiałem zadzwonić:
i to wszystko! Po prostu zaktualizuj żądany pakiet, a jeśli kompozytor powie ci, że musisz zaktualizować (lub obniżyć wersję :-)) inny pakiet, wymień go w poleceniu.