Drupalのモジュールをダウングレードする

最終更新日
2023年5月19日

モジュールをダウングレードする

こんにちは。
ぴころじーの竹川です。

今回は、Drupalのモジュールをダウングレード(バージョンダウン)してみる、というお話です。

本番環境では、ダウングレードをするということはまず起きませんが、開発環境においては稀に起きることがあります。

本番環境でダウングレードしない理由

本番環境では、先にも書いた通り、ダウングレードをすることはまずありません。

  • お客さまや関係者との合意の上で、そのバージョンを使っている。
  • さまざまな検証を行った上で、問題ないと判断しているため、そのバージョンを使っている。

といったことが、ダウングレードをする必要がない理由です。もちろん、他にもあると思います。

開発環境でダウングレードをする理由

開発環境では、先にも書いた通り、稀にダウングレードすることがあります。

  • 予期せぬ不具合に遭遇した。
  • Drupal Coreとの依存関係によるもの。
  • 関係者間の調整によるもの。

など、他にも理由はあると思いますが、このようなところでしょう。開発環境ですので、ある程度試行錯誤は効きます。もちろん、バージョン変更による仕様変更等が発生するかもしれませんが・・・。

ダウングレードを実施する前に

では、ダウングレードの計画をします。

どのバージョンにするか。いつ行うか。など、調整し、実施します。そのバージョンが、Drupal Coreの要件を満たしているかも確認します。要件を満たしていない場合、次のようなエラーが出てしまいますので、注意します。

$ composer require drupal/eve:^2
./composer.json has been updated
Running composer update drupal/eve
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - Root composer.json requires drupal/eve, it could not be found in any version, there may be a typo in the package name.
Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
 - It's a private package and you forgot to add a custom repository to find it
Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.

また、zipファイルをダウンロードしたものからDrupalサイトを構築している場合、モジュールのダウングレードは厄介です。そう言った面からも、インストールする際はcomposerを利用することをお勧めします。(Drupal公式ではcomposerによるインストールを推奨しています。)

ダウングレードを実施する

Drupalをcomposerでインストールしている場合は、ダウングレードを簡単に行うことができます。Drupal公式でどのバージョンにするかを確認した上で、composerを実行します。

まず、現在のバージョンの確認です。(今回はサンプルとしてevaモジュールを対象にします。)

$ composer show | grep drupal/eva
drupal/eva                               3.0.0    Attach a view to an entity

バージョン3.0.0(執筆時点の最新バージョン)がインストールされています。

今回は、バージョン2.1.0にダウングレードします。

$ composer require drupal/eva:^2.1.0
./composer.json has been updated
Running composer update drupal/eva
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
  - Downgrading drupal/eva (3.0.0 => 2.1.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Downloading drupal/eva (2.1.0)
  - Downgrading drupal/eva (3.0.0 => 2.1.0): Extracting archive
Package doctrine/reflection is abandoned, you should avoid using it. Use roave/better-reflection instead.
Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.
Generating autoload files
47 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

バージョンを確認します。

$ composer show | grep drupal/eva
drupal/eva                               2.1.0    Attach a view to an entity

と言った具合に、composerを使えばコマンド一発でダウングレードできます。

関係者間の調整なしにダウングレードを行わないようにしましょう!それでは、今日も良きDrupalライフを!