2012-09-08 9 views
8

Tło: Skonfigurowałem nowy projekt, na moim komputerze stacjonarnym, z Silex i skonfigurowałem plik composer.json z zależnościami, które Potrzebuję. Uruchomiłem "composer.phar install" z powodzeniem na pulpicie bez żadnych problemów.Kompozytor nie może rozwiązać zestawu instalacyjnego pakietów przy użyciu opcji "zainstaluj", ale nie "zaktualizuj".

przeszedłem do mojego laptopa do pracy nad projektem kilku, sklonowany repo git do laptopa, i starał się zrobić „composer.phar zainstalować”, ale otrzymał tę wiadomość:

Your requirements could not be resolved to an installable set of packages. 

Tak Zamiast tego zrobiłem aktualizację "composer.phar" i działało, ale nie chciałem zaktualizować pliku composer.lock.

Czy ktoś jeszcze ma ten problem? Jeśli nie, czy możesz wyjaśnić, co robię źle?

Edytuj: Wydaje mi się, że powinienem do tego wrócić i zaktualizować pytanie. Nie miałem tego problemu od dłuższego czasu. Nie wiem, czy jest to aktualizacja dla kompozytora, która to naprawiła (ludzie mogą musieć skomentować, aby dać mi znać, jeśli nadal występują w tym wydaniu) lub jeśli teraz dowiedziałem się więcej o kompozytorze, po prostu robienie rzeczy w sposób, którego nie napotykam. Tak czy inaczej, nie widziałem tej wiadomości przez prawie półtora roku, chyba że moja specyfikacja pakietu w composer.json została faktycznie zerwana.

+2

Czy mogę zapytać, kiedy sklonowałeś projekt, czy zawiera on folder dostawcy, a także plik composer.lock? Zwykle, gdy zmieniam maszyny, nie mam żadnego folderu producenta ani pliku blokady. Pierwszą rzeczą, którą zrobiłbym, byłoby uruchomienie composer.phar install – gunnx

+0

Nie miałem folderu dostawcy w repozytorium, ale załączam plik blokady, więc że wszystkie osoby, które sprawdzają projekt i instalują zależności, są w tej samej wersji. – Moismyname

+0

Czy kiedykolwiek to rozwiązałeś? –

Odpowiedz

1

Hum, moje przypuszczenie byłoby, że używasz bibliotekę, która opiera się na oddział (dev-master, dev-branch-name lub [email protected]), na którym opiekun byłby przymusowej push niedawno (do rebase gałąź na przykład).

Jeśli jest to możliwe, spróbuj użyć stabilnych gałęzi (gałęzi z wersją, która jest połączona ze znacznikiem (v1.0.0, 1.0. *, Itd.). Jeśli nie wiesz, gdzie spojrzeć, powinieneś sprawdzić dla pakietu na Packagist i korzystać z wersji, która nie daje się uruchomić przez dev- lub wykorzystuje @dev modyfikator do ustawienia minimalnego stabilność dev.

oczywiście, czasem jest to nieuniknione. Ale w tym przypadku, można zawsze pytaj opiekuna biblioteki o oznaczenie wersji. :)

Moim drugim domysłem byłoby, że masz różne wersje bibliotek na swoim komputerze. Weź na przykład bibliotekę symfony/icu. W zależności od wersji Icu, którą masz na swoim komputerze, oraz w zależności od tego, czy została włączona, czy też masz zainstalowane rozszerzenie Intl na twoim komputerze, możesz natknąć się na te problemy. Gdy kompozytor spróbuje dopasować plik composer.lock do starego komputera, zależności nie zostaną rozwiązane, ponieważ zablokowane pakiety będą wymagać zależności, której twój system nie ma. Prostym sposobem na naprawienie tego jest po prostu zainstalowanie potrzebnego rozszerzenia.

+0

Minęło sporo czasu odkąd miałem ten problem w ogóle. Byłem także bardzo młody w korzystaniu z Composer. Myślę, że tak właśnie jest.Odkąd zacząłem używać wersji oznaczonych tagami, co jest szczerze mówiąc, prawdopodobnie jest to sposób na pracę, nie miałem tego problemu. Wiem, że Composer ma zarządzać tym przez plik blokady, ale stwierdziłem, że miałem dużo więcej sukcesów z prawdziwymi wersjami oznaczonymi, nawet jeśli używam specyfikacji wersji wieloznacznej (tj. "1. *" lub "1.1. *"). Dziękuję wszystkim, którzy odpowiedzieli. – Moismyname

Powiązane problemy