8ка не обновляется через composer

Главные вкладки

Аватар пользователя svisch svisch 24 мая 2018 в 14:56

Здравствуйте. Не могу обновиться с 8.52 до 8.53. Сайт собирал через композер.
После команды "composer update drupal/core" выдается такое сообщение

> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles

На другом проекте обновилось только командой composer update --with-dependencies. Может я что то не правильно делаю?

И еще один вопросик. Допустим я установил какую то тему, она установилась в папку themes/contrib. Как сделать так, чтобы внесенные изменения в тему сохранялись после обновления? А то после обновления, если вышла свежая версия темы, то мои изменения в ней слетают.
Спасибо.

Лучший ответ

Аватар пользователя bumble bumble 25 мая 2018 в 7:22
1

svisch wrote:

есть ли разница обновлять БД через drush или через update.php

Нету.

Попробуйте еще

composer dump-autoload

Для генерации лоадера.

Ну, и для проверки наличия обновлений, команда:

composer outdated

В самом крайнем случае - можно попробовать снести vendors и composer.loc и попробовать установить все сначала.

Комментарии

Аватар пользователя bumble bumble 24 мая 2018 в 16:35

Попробуйте очистить кеш композера:

composer clear-cache

Проверьте, не установлена ли точная версия ядра для проекта (должно быть что-то вроде "drupal/core": "~8.0").

Проверьте, возможно обновления уже установлены ))
Не забывайте запускать обновления БД.

Флаг --with-dependencies - желательно всегда применять при обновлении, а особенно - при обновлении ядра:

composer update drupal/core --with-dependencies

Про темы и их обновления:

Аватар пользователя svisch svisch 24 мая 2018 в 22:57

За видео спасибо!)

Composer clear-cache не помогло.
в composer.json "drupal/core": "^8.5" исправил на "drupal/core": "~8.5.1" по аналогии с обновившимся проектом - не помогло.

А есть ли разница обновлять БД через drush или через update.php в случае обновления композером? А то у меня на drush updb ошибку выдает, в то время как другие команды работают.
[error] The external command could not be executed due to an application error.
[error] The command could not be executed successfully (returned: PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /var/www/u0109373/data/www/site.ru/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php on line 15
, code: 255)

И еще а админке показывает о наличии обновления одного из модулей, в то время, как composer update говорит нет ничего для обновления.
Не пойму что не так. Хотя изначально проект обновился через composer update --with-dependencies, но вместе с темой, после чего я сделал восстановление резервной копии. После этого ничего не получается.

Аватар пользователя bumble bumble 25 мая 2018 в 7:22
1

svisch wrote:

есть ли разница обновлять БД через drush или через update.php

Нету.

Попробуйте еще

composer dump-autoload

Для генерации лоадера.

Ну, и для проверки наличия обновлений, команда:

composer outdated

В самом крайнем случае - можно попробовать снести vendors и composer.loc и попробовать установить все сначала.

Аватар пользователя svisch svisch 25 мая 2018 в 11:44

Помогло последнее. Спасибо.
А на ваш взгляд, на счет переопределения темы на будущее в случае если от темы мне ничего, как правило, в плане оформления не нужно(обычно беру почти пустую basic и там меняю ВСЁ), как будет лучше?
1. Делать подтему basic;
2.Сделать подтему темы ядра и с ней работать
3. Или же все-таки сделать болванку своей темы и ее потом редактировать в каждом проекте от надобностей?

Аватар пользователя bumble bumble 25 мая 2018 в 11:50
1

На мой взгляд:

  1. Всегда нужно делать подтему, во всех 100% случаев.
  2. Подтему какой темы делать - зависит от проекта. В эпоху повсеместного использования всяческих frontend-фреймворков - может иметь смысл наследоваться от каких-либо специфических тем. Если же работа в режиме "вольной мысли" - можно брать classy или stable.
  3. Опять же, если требуется из проекта-в-проект тянуть определенный, наработанный функционал - это имеет смысл. Или, если хотите организовать, некого рода, свою систему, которую будете развивать и поддерживать (что требует колоссальных усилий), и/или выкладывать ее в дальнейшем для использования другими разработчиками, дополнять, обновлять ее - то да, это вариант. Впрочем, ее тоже придется наследовать от чего-то из п.2 Wink

В целом, нет единого правильного решения.

Надеюсь, не запутал Вас еще больше Smile
Успехов!

Аватар пользователя mr.smile mr.smile 13 мая 2019 в 12:04

всем привет, подниму тему снова.
ядро 8,6,13. композер не видит обновления ядра. устанавливался друпал без его помощи
как можно иниацилизировать composer в папке с сайтом? composer.json присутствует, не модифицирован.
все происходит на хостинге. composer.loc удалял, не помогло...

Аватар пользователя Anatolii1309 Anatolii1309 16 мая 2019 в 14:21

Если не идет обновления при переходе между реализами через композер, например 8.5 -> 8.6, 8.6 -> 8.7, то
Скорее всего проблема зависимостей. Решение:
Ручками меняем версию ядра ^8.7
и удаляем core/ vendor/ composer.lock
И запускаем тогда composer update
Бэкап обязательно сделать перед этим