🏹

CentOS7 + Ruby 3.2.1 で mysql2 gem をインストールする手順

2023/03/24に公開

何が問題?

Ruby 3.2.1 で gem i mysql2 が失敗する。

$ RBENV_VERSION=3.2.1 gem i mysql2 -V
(snip)
/usr/local/rbenv/versions/3.2.1/lib/ruby/3.2.0/mkmf.rb:1083:in `block in find_library': undefined method `split' for nil:NilClass (NoMethodError)
    paths = paths.flat_map {|path| path.split(File::PATH_SEPARATOR)}
                                       ^^^^^^

Ruby 2.6.5 だと親切なエラーメッセージに変わった。

$ RBENV_VERSION=2.6.5 gem i mysql2 -V
(snip)
mysql client is missing.
You may need to
'sudo apt-get install libmariadb-dev',
'sudo apt-get install libmysqlclient-dev' or
'sudo yum install mysql-devel', and try ag
ain.

そこで、

sudo yum install -y mysql-devel

とすると、

警告: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-devel-5.7.41-1.el7.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 3a79bd29: NOKEY
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

 Failing package is: mysql-community-devel-5.7.41-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

となるので ChatGPT に聞く。

ChatGPT の回答

このような場合、GPGキーが異なるためにパッケージのインストールに失敗しています。問題を解決するためには、正しいGPGキーを設定する必要があります。以下の手順を試してください。

  1. リポジトリのGPGキーをダウンロードします。
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  1. 現在のGPGキーを削除します。
sudo rpm -e --allmatches gpg-pubkey
  1. yumのキャッシュをクリアします。
sudo yum clean all
  1. 再度インストールを試みます。
sudo yum install mysql-community-devel

これでパッケージのインストールが成功すれば、GPGキーの問題が解決されたことになります。

結果

2, 3 を飛ばして 1 だけをすればインストールできた。

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum install -y mysql-community-devel
RBENV_VERSION=3.2.1 gem i mysql2 -V

補足

  • mysql-devel と mysql-community-devel は同じもの

Discussion