Seishi Ono's blog

Fugaces labuntur anni. 歳月人を待たず

Drupal9へのバージョンアップ

はじめに

Drupalは,6から8までお付き合いしてきて,都合二回バージョンアップしたことになるが,小さなサイトでも,このバージョンアップはそれなりに面倒だった.今回のdrupal9は簡単になると言われていたが,結局バッドノウハウを突っ込む必要があった..

というのもdrupal9では未対応の,モジュールを処理するのは,それなりに工夫が必要である.工夫はおおきくわけて2つ必要である.

  1. alpha版などは.モジュールをインストールするときに明示的にバージョン指定しないとインストールできない.webformが当初はそうであった.
  2. 9未対応のモジュールを削除してもデータベースには残骸が残るのでそのお掃除が必要である.

前者は,わかってしまえばどうということもなく,また,時間が解決するであろう.今回は,後者の話である.

エラー処理

バージョンアップ後メンテナンス用のコマンド

drush cr
drush updb
drush cron

などを実行してエラーが出たら,データベースのお掃除をする必要がある.

ここでは,drupal9で未対応となったtwitterモジュールを例にとる

drush php-eval "\Drupal::keyValue('system.schema')->delete('twitter');"

 これで,済めば良いが,大概エラーは出続ける.次は,やってはいけないといわれているが,ダミーのモジュールを作成する.

(drupal)/module/contrib

などのmoduleのパスがわたっているディレクトリの下に

twitter

というディレクトリを作る.そこに以下のようなファイルを置く

twitter.info.yml

name: Twitter
type: module
description: 'Dummy'
core_version_requirem: ^8.8 || ^9

これでエラーの一部は消える.しかし,まだエラーが残るようであれば,そしてそのエラーは,もはや処理済みと確信すれば,以下のようにしてエラーを抑止する.

drush ev "drupal_set_installed_schema_version('address', 8104)"

以上,二度と使わないような,バッドノウハウではある.

結論

apache+phpのCMSはwordpressといい,drupalといい,そろろそ時代遅れの感がある.これからは,nginx+JSなどのヘッドレスCMSが主役になって行くのだろう.とはいえ,ヘッドレスCMSでメインストリームになりそうなものは,有力な候補はいるものの,まだこれからであろう.それまでの少しの間は,バッドノウハウにお付き合いするしかなさそうではある.