Получить список доступных обновлений
Мне нужно иметь возможность легко получить список доступных обновлений для сайта.
Я наткнулся на функцию update_get_update_list(), но она возвращает только массив "информации об обновлениях базы данных, которые необходимо запустить, и любых обновлениях, которые не будут выполняться из-за отсутствующих требований". Я хочу, чтобы список отображался на странице администратор/модули/обновление, но, похоже, не могу найти способа сделать это с помощью модуля обновления ядра и хочу избежать использование grep при вызове drush up-n (так как это кажется немного банальным.)
4 answers
Предполагая, что вам нужна эта информация программно, вы можете искать update_calculate_project_data()
:
Вычисляет текущий статус обновления всех проектов на сайте.
Результаты этой функции дорого вычислять, особенно на сайтах с большим количеством модулей или тем, поскольку она включает в себя множество сравнений и других операций. Поэтому мы кэшируем результаты в таблицу {cache_update}, используя идентификатор кэша 'update_project_data'. Однако, поскольку это не те данные что касается доступных обновлений, извлеченных из сети, то можно довольно быстро аннулировать их. Если мы будем хранить эти данные очень долго, администраторы сайта с большей вероятностью увидят неверные результаты, если они обновят модуль или тему до более новой версии, но не посетят определенные страницы, которые автоматически очищают этот кэш.
Возвращаемое значение:
Массив установленных проектов с текущей информацией о состоянии обновления.
Для функции Update_calculate_project_data() требуется аргумент всех доступных/включенных модулей.
Запуск этого...
module_load_include('inc', 'update', 'update.report');
$available = update_get_available(TRUE);
$data = update_calculate_project_data($available);
... оставит $data в виде массива всех доступных/включенных модулей с соответствующей информацией о существующей, рекомендуемой и последней версии. Если необходимы только модули с обновлениями, их можно отфильтровать, сравнив эти версии.
Насколько я понимаю, есть три способа добиться этого:
- Вы можете использовать пользовательский интерфейс Drupal
/admin/reports/updates
- Вы можете использовать Drush
drush ups
- Вы можете использовать стороннюю службу Статус Drupal .
Я написал статью , в которой объясняется, как интегрировать несколько веб-сайтов Drupal со статусом Drupal.
Вы смотрели здесь /admin/reports/updates
?
В Drupal 8 правильным способом управления сайтами является использование composer.
Кроме того, в Drush версии 9 устарели все команды up pm-update, pm-updatecode и pm-updatestatus
Укажите оба пункта, если вам нужно программно получить список обновленных модулей, вы можете использовать composer:
composer outdated "drupal/*"
Drush по-прежнему используется для получения списка udp-адресов безопасности:
drush pm:security
Смотрите для получения дополнительной информации: https://www.drupal.org/docs/updating-drupal/updating-modules-and-themes-using-composer