Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Обновление ядра через Composer

20/04/2020, by maria

Эта документация неполная. Добавьте больше информации.

Возникли проблемы с обновлением до Drupal 8.8.0 или новее?
Ключевые изменения были внесены в Drupal 8.8.0 в рамках инициативы Composer, что значительно улучшит рабочие процессы Composer для управления сайтами Drupal в долгосрочной перспективе. Однако есть некоторые особые замечания, которые могут повлиять на обновление с предыдущих версий.

Первые шаги

Чтобы понять, как Composer управляет зависимостями Drupal, см. Использование Composer с Drupal. Чтобы решить, является ли Composer разумным способом обновления, сравните доступные параметры.

Для удобства в эти инструкции включены команды Drush, необходимые для завершения обновления: многие люди находят Drush быстрее и проще, чем веб-панель администратора.

Если это существующий сайт Drupal, где Composer никогда ранее не использовался, сначала убедитесь, что он готов для Composer.

Обновление ядра Drupal 8

Во-первых, убедитесь, что обновление ядра Drupal действительно доступно:

composer update --dry-run "drupal/*"

Это покажет любое доступное незначительное обновление или обновление патча; используйте устаревший composer "drupal / *", если вы хотите узнать, есть ли какие-либо обновления для основных версий. (См. Semver 2.0 для объяснения основных, второстепенных и патч-версий.) Если нет строки, начинающейся с drupal/core, Composer не знает о каких-либо обновлениях. Запишите, есть ли строка, начинающаяся с drupal/core-recommended. Если есть обновление, продолжайте с командами ниже.

Инструкция по обновлению за один шаг

Предполагая, что вы привыкли обновлять Drupal и знаете все меры предосторожности, которые вы должны предпринять, обновление так же просто, как:

composer update drupal/core --with-dependencies
drush updatedb
drush cache:rebuild

Замените drupal/core на core-recommended, если вы используете core-recommended на своем сайте. Вы можете сказать, что ваш сайт использует core-recommended, если он указан в вашем файле composer.json, или если он был указан в выходных данных composer update --dry-run, когда вы проверяли наличие доступных обновлений.

Если вы запустили свой сайт Drupal некоторое время назад, используя drupal-composer/drupal-project, приведенная выше команда может не сработать. Пожалуйста, прочитайте список ниже.

Для обновления до версии 8.8.0 или новее

Самая последняя версия drupal-composer/drupal-project совместима с Drupal 8.8.x. Однако, если вы создали свой сайт из этого проекта некоторое время назад (2019 и более ранние версии), вам, вероятно, потребуется внести некоторые одноразовые изменения при первом обновлении до версии 8.8.0 или более поздней. Эти изменения подробно описаны в особых замечаниях ниже.

Если вы не установили Drupal 8 с помощью Composer

Если вы не установили Drupal 8 с помощью Composer, вы должны преобразовать свой сайт в проект, управляемый композитором, чтобы иметь возможность обновлять Drupal с помощью приведенных выше команд. См. Добавление Composer к существующим сайтам для пошагового руководства по ручному добавлению Composer к существующим сайтам Drupal 8, которые ранее были установлены без Composer.

Пошаговое обновление инструкции

Все шаги по обновлению ядра Drupal 8 с помощью composer:

1. Всегда делайте резервную копию ваших файлов и базы данных перед обновлением.

  • drush sql: dump выведет базу данных
  • К сожалению, drush archive-dump был удален из Drush 9, поэтому вам придется использовать стандартный инструмент CLI для резервного копирования необходимых каталогов - обычно за исключением каталога vendor.

2. Прочитайте основные заметки о выпуске. Некоторые добавленные модули или темы могут нуждаться в обновлении для работы с новой минорной версией (например, 8.3–8.4) ядра Drupal. Патч-релизы (например, с 8.4.4 по 8.4.5) не должны требовать этого. Чтобы обнаружить необходимый модуль или обновления темы, вам нужно прочитать страницу проекта или заметки о выпуске.

3. Активируйте режим обслуживания, используя состояние очистки: установите  system.maintenance_mode 1, а затем очистите кэш: перестройте.

4. Если вы определили, что некоторые модули или темы нуждаются в обновлении, следуйте инструкциям по обновлению модулей.

5. Обновление ядра Drupal и всех его зависимостей:

                - Запустите следующую команду Composer:

composer update drupal/core --with-dependencies

                - Замените drupal/core выше на drupal/core-recommended, если вы используете core-рекомендуемый шаблон.
                - Если вы запустили свой сайт на Drupal с использованием drupal-composer/drupal-project, ознакомьтесь с приведенными ниже особыми замечаниями, чтобы узнать о дополнительных шагах, которые вам может понадобиться выполнить при первом обновлении до версии 8.8.0 или более поздней.

6. Затем примените все необходимые обновления базы данных с помощью drush updatedb и очистите кэш с помощью drush cache: rebuild

7. Если вы используете управление конфигурацией для развертывания вашей конфигурации, обязательно экспортируйте конфигурацию с помощью drush config:export после обновления базы данных, поскольку некоторые обновления ядра могут изменить структуру файлов конфигурации или ввести для них новые значения. Добавьте опцию --diff для просмотра актуальных изменений.

8. Убедитесь, что с вашим сайтом в Drupal все в порядке:

  • Просмотрите страницу отчета о состоянии на наличие ошибок.
  • Если модуль ведения журнала базы данных включен, выполните некоторые основные операции и проверьте последние журналы на наличие ошибок, предупреждений и т. д.

9. Отключите режим обслуживания, используя drush state:set system.maintenance_mode 0, а затем очистите кэш: drush cache:rebuild..

10. После отключения режима обслуживания, проверьте сайт также как анонимный пользователь.

В вашей производственной среде

  • Вам не нужно повторять остальную часть вышеописанного процесса, так как при composer install будут считаны точные указатели фиксации для всех пакетов из composer.lock, поэтому у вас будут одинаковые версии всего в обеих средах.
  • Если у вас есть отдельные dev / staging и production-серверы, убедитесь, что вы копируете / фиксируете файлы composer.json и composer.lock в производство и всегда запускаете composer install --no-dev на производстве, а не обновляете. Ключ --no-dev остановит установку любых пакетов, перечисленных в 'require-dev', обычно это модули для отладки и библиотеки для модульного/поведенческого тестирования.

 

Особые замечания по обновлению до Drupal 8.8.0 и новее

Официальный партнер бета-программы Drupal PreviousNext опубликовал полезную запись в блоге о шагах, которые они предприняли для обновления с Drupal 8.7 до бета-версии Drupal 8.8.0, что может помочь любым другим владельцам сайтов, у которых есть проблемы с этим обновлением.

Основной причиной проблем при обновлении предыдущих версий Drupal до Drupal 8.8.0 с Composer является переход от использования шаблона composer, предоставленного сообществом, к новому официальному шаблону drupal/recommended-project. Следующие шаги по устранению неполадок должны исправить вашу установку, чтобы вы могли использовать стандартные инструкции по обновлению, как описано выше.

Попробуйте удалить каталог / vendor

Удаление каталога вашего поставщика может иногда устранить конфликты при запуске обновления композитора. Для этого:

cd your_install_dir

rm -rf vendor

Затем вы можете продолжить выполнение этих действий по устранению неполадок и / или продолжить выполнение команды обновления композитора.

Миграция с webflo/drupal-core-strict на drupal/core-recommended

До выпуска 8.8.0 многие сайты использовали метапакет webflo/drupal-core-strict для привязки зависимостей к точным версиям, используемым/протестированным с ядром Drupal (в основном это пакеты Symfony). Начиная с версии 8.8.0, ядро Drupal предоставляет пакет drupal/core-recommended для реализации этой функции. Однако переход от старого к новому методу не происходит автоматически при обновлении до ядра 8.8.0, и пакет webflo/drupal-core-strict не работает с 8.8.0.

Самый простой способ выполнить эту миграцию и избежать конфликтов - полностью удалить файл composer.lock как часть обновления. Однако, это будет означать, что другие зависимости (например, добавленные модули Drupal) также могут быть обновлены. Выполнение этих шагов обеспечит обновление именно того, что вы намереваетесь:

  1. composer update # Обновлять любые зависимости как отдельный шаг.
  2. git add composer.lock; git commit # Сохраните обновления как отдельный коммит.
  3. composer remove webflo/drupal-core-strict --no-update
  4. composer remove drupal/core --no-update
  5. composer require 'composer/installers:^1.7' --no-update
  6. rm composer.lock
  7. rm -rf vendor # Также помогает избежать конфликтов.
  8. composer require drupal/core-recommended:^8.8 --update-with-dependencies
  9. git add composer.json composer.lock; git commit -m "Update Drupal to 8.8.0 and use drupal/core-recommended instead of webflo/drupal-core-strict"

 

Миграция с webflo/drupal-core-require-dev на drupal/core-dev

Если вы создали свой сайт некоторое время назад, он может использовать метапакет webflo/drupal-core-require-dev для включения зависимостей разработки Drupal для выполнения модульного и функционального тестирования. Если вы не используете для разработки зависимости разработки Drupal, вы можете просто удалить webflo/drupal-core-require-dev. В противном случае вы должны начать использовать проект drupal/core-dev.

Во-первых, старый пакет инструментов разработчика должен быть удален:

composer remove --dev webflo/drupal-core-require-dev

Если вам не нужны инструменты разработчика, вы можете остановиться здесь. Если вы хотите установить их снова, используя официальный метод, запустите:

composer require --dev drupal/core-dev

Обновление патчей

Если вы применяете патчи, используя cweagans/composer-patches, то эти патчи, возможно, придется перекатывать. После того, как патч перемотан, вам нужно будет обновить патч в разделе extra/patches вашего composer.json.

Обновление конфликтующих мягких зависимостей

В некоторых случаях может быть установлена программная зависимость с версией, несовместимой с последней версией Drupal. Решение, в этом случае, состоит в том, чтобы composer require определенных версий этих модулей обновлял ядро, а затем удалял зависимости.

Следующий пример взят из отличного поста PreviousNext:

Во-первых, требуется новое ядро и зависимости Drupal:

composer require --update-with-dependencies \
drupal/core:^8.8.0 \
symfony/finder:^3.4 \
symfony/filesystem:^3.4

Во-вторых, требуется новый пакет core-dev и зависимости:

composer require --dev --update-with-dependencies \
drupal/core-dev:^8.8.0 \
symfony/debug:^3.4 

Наконец, удалите временно необходимые зависимости:

composer remove -n \
symfony/finder \
symfony/filesystem \
composer remove -n --dev symfony/debug

Обновление базы данных конфигурации и схемы

После обновления базы кода вам может потребоваться обновить конфигурацию и схему базы данных:

drush updb
drush cr
drush config-export

Обновление Settings.php

В Drupal 8.8.0 каталог синхронизации определяется в $ settings, а не в $ config_directories, и поэтому файл Settings.php должен быть обновлен.

Просто измените с:

$config_directories['sync'] = 'foo/bar';

на 

$settings['config_sync_directory'] = 'foo/bar';

Известные проблемы и обходные пути

Если вы запустите команду composer update выше, но drupal/core не обновится, возможно, существует другая зависимость, сдерживающая обновление Drupal. Вы можете проверить блокировку зависимостей, используя команду composer prohibits. Например, если вы пытаетесь обновить версию с 8.4.5 до 8.5.0, вы можете запустить composer prohibits drupal/core:8.5.0, и он должен предоставить список зависимостей, блокирующих обновление. Обновите эти зависимости вместе с drupal/core, и он должен работать (например, composer update drupal/core "symfony/*" --with-dependencies).

Проблемы обновления Composer часто связаны с оставленными шаблонами composer или неправильными настройками в composer.json. Убедитесь, что вы используете шаблон композитора, такой как предложенный в главе 3.5. Руководства пользователя Drupal 8 «Использование Composer для загрузки и обновления файлов». См. Добавление Composer к существующим сайтам для пошагового руководства по ручному добавлению Composer к существующим сайтам Drupal 8, которые ранее были установлены без Composer.

По состоянию на январь 2020 г. шаблон Composer drupal-composer/drupal-project для проектов Drupal больше не является рекомендуемым шаблоном для Drupal 8.8 и выше. До тех пор, пока глава 3.5 Руководства пользователя Drupal 8 не будет обновлена, обратитесь к Руководству сообщества по запуску сайта с использованием шаблонов проектов композитора.

Некоторые другие уместные проблемы и сообщения в блоге с дальнейшей помощью:

В случае ошибок и предупреждений, возникающих в середине процесса обновления, рекомендуется внимательно их прочитать и поискать в очередях проблем возможные решения, прежде чем продолжить. В случае фатальных ошибок всегда рекомендуется прекратить дальнейшее обновление и перезапустить весь процесс с нуля, используя резервную копию, рекомендованную ранее.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.