Dlaczego „kompozytor aktualizuje drupal / drupal” nie działa?

10

Zainstalowałem witrynę Drupal 8.2.0 za pomocą composer create-project drupal/drupal testsite.

Teraz chciałbym go uaktualnić do wersji Drupal 8.2.1. Jednak bieganie composer update drupal/drupal nie działa. Wyświetla następujący błąd:

Pakiet „drupal / drupal” wymieniony do aktualizacji nie jest zainstalowany. Ignorowanie

Jak mam to zrobic? Wsparcie jest wyraźnie udokumentowane w example.gitignore.

# Ignore core when managing all of a project's dependencies with Composer
# including Drupal core.
# core

Musi więc być jakiś sposób na zrobienie tego z kompozytorem, ale jak?

Christoph Burschka
źródło

Odpowiedzi:

5

Edycja: prawdopodobnie nie jest to pomocne, ponieważ ponownie przeczytałem twoje oświadczenie i nie miałeś takiego samego przypadku jak mój, w którym pochodziłem ze starej instalacji Drupala 8, ale zostawię to na wypadek, gdyby ktoś inny to miał problem i spróbuj sprawdzić, czy mogę znaleźć konkretny problem, który masz. Przepraszam.

Miałem ten problem podczas obsługi ostatniej aktualizacji i to był mój problem, ale YMMV, więc jeśli to nie działa, daj mi znać.

Może to być problem polegający na tym, że plik kompozytora jest ustawiony na starą listę repozytoriów na composer.org. Ostatnio Drupal konfiguruje własne punkty końcowe kompozytora, jeden dla Drupala 7, a drugi dla Drupala 8. Więcej informacji na temat tej zmiany można znaleźć tutaj: https://www.drupal.org/docs/develop/using-composer/using-composer- zainstalować-drupal-pakiety-przez-drupalorg

Jest to polecenie, które należy uruchomić, aby zamienić repozytorium na Drupal.org.

$ composer config repositories.0 
$ composer https://packages.drupal.org/8
Burnsjeremy
źródło
2
Ciekawy komunikat o błędzie z tego drugiego polecenia: „W przestrzeni nazw„ https ”nie zdefiniowano żadnych poleceń”. Jestem teraz naprawdę zagubiony.
Mojo
4

Myślę, że to rozwiązałem. Uznałem, że potrzebuję innego pliku root composer.json, który pobierałby pakiet drupal zamiast go zastępować, ale nie wiedziałem, jak to zrobić.

Na szczęście ktoś już to zrobił i spakował Drupala w przyjazny dla kompozytora sposób: https://github.com/drupal-composer/drupal-project (najwyraźniej nie ma jeszcze stabilnej wersji).

Dzięki temu composer create-project drupal-composer/drupal-project:8.x-dev --stability dev drupal-dirmogłem uzyskać instalację, którą można zaktualizować za pomocą kompozytora.

Christoph Burschka
źródło
2
Polecenie composer create-projectwykorzystuje żądany projekt jako szablon dla nowego projektu, więc przy pierwszej próbie git.drupal.org/project/drupal.git został użyty jako szablon dla nowego projektu. Zamiast tego użycie github.com/drupal-composer/drupal-project jako szablonu powoduje, że Drupal jest jedną z części projektu. W rzeczywistości, zamiast używać drupal/drupal, używa drupal/core(dla głównego katalogu) i drupal-composer/drupal-scaffoldinnych ważnych plików, takich jak index.php i .htaccess.
David Lanier
3

Polecenie composer create-projectklonuje żądany pakiet, którym w tym przypadku jest https://git.drupal.org/project/drupal.git . Pod koniec procesu tworzenia projektu pojawi się monit, czy chcesz usunąć istniejącą historię VCS. Jeśli odpowiedziałeś n, będziesz mógł dokonać aktualizacji z wcześniejszego repozytorium drupal. Przejdź do testsite i użyj git, aby pobrać i sprawdzić wersję Drupala, którą chcesz. Następnie uruchom, composer installaby uzyskać zależności zidentyfikowane w composer.json i composer.lock zaktualizowanej wersji Drupal.

David Lanier
źródło
3

W wierszu poleceń musieliśmy wymagać rdzenia drupal (zamień na swoją wersję):

composer require drupal/core:8.6.3 --update-with-dependencies

W pliku composer.json w obszarze replace musieliśmy usunąć „drupal / core”: „^ 8.6”, więc replace wygląda następująco:

"replace": {

},

w naszym pliku composer.json teraz. Następnie uruchomiliśmy:

composer update

i drupal zaktualizowany do najnowszej wersji.

jasonflaherty
źródło