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.json
PPS: używana wersja kompozytora to
3da05c68f9561fa822c522b1815435ff990493ff 02.10.2013 14:25:06
PPPS: 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].

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Polecenie
composer update videlalvaro/php-amqplib
po prostu aktualizuje tę zależność. Jednak nie wyłącza innych funkcji sprawdzania zależności, które wykonuje Composer.
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ć
videlalvaro/php-amqplib
do najnowszej wersji, wymagania dla
symfony/icu
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

Anonimowy użytkownik

Potwierdzenie od:


tl;dr:
>
Możesz wymienić

trochę

zależności do aktualizacji

w jednym zespole

:
composer update one/dependency second/dependency other/dependency


Fabuła:
>
Jeśli chcesz zaktualizować tylko jedną zależność (
composer update some/dependency
), 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
composer.json
, może to być po prostu zależność od jakiejś innej zależności.
Na przykład. Chciałem zaktualizować tylko i tylko
google/apiclient
, ale wywołanie
composer update google/apiclient
skarżyło się, że
google/auth
(zależność od apiclient) wymaga
guzzlehttp/psr7
w wersji
1.2.3
. Mam zainstalowany
1.3.0
.
guzzlehttp/psr7
nie został wymieniony w moim
composer.json
. Musiałem zadzwonić:
composer update guzzlehttp/psr7 google/apiclient

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.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się