MySQL8.0をオフライン環境でインストールする方法

2022年05月13日

ネットに繋がっている状態でインストールする場合は前回の記事で書いたようにローカルリポジトリを作成してインストールすれば良いですが、
オフライン状態の端末や外部ネットワークへのアクセスに制限がある場合などはyumでの依存性解決時に依存してるソフトのインストールが自動でできないため、
ひと手間加える必要があります。
ついでなのでその方法も試してみました。

今回は2環境用意します。

■環境1(オンライン)
普通に外部ネットワークに繋がる端末です。
rpmパッケージのダウンロードに使用します。

■環境2(オフライン)
外部ネットワークに接続できない状態の端末です。
AWS EC2で作成した端末なので、セキュリティグループのアウトバウンドルールを空にして外部と通信できないようにしました。
この端末にローカルリポジトリを作成し、MySQLをインストールしていきます。

OSは両方とも同じものを使用します。
今回はAmazon Linux 2を使用しました。

1. 環境1(オンライン)でrpmファイルのダウンロード

まずはMySQLをyumでインストールできる状態にします。

$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

$ yum list "mysql-community-server"

Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
51 packages excluded due to repository priority protections
Available Packages
mysql-community-server.x86_64        8.0.29-1.el7 mysql80-community


次にrpmファイルをダウンロードします。
$ yumdownloader --resolve --destdir=/tmp/repository mysql-community-server

ついでに環境2(オフライン)でローカルリポジトリの更新ができるようにcreaterepoもダウンロードしておきます。
※別に要らない場合はこの操作不要です。
$ yumdownloader --resolve --destdir=/tmp/repository createrepo

ローカルリポジトリを構築するためにはrepodataを作成する必要があるので、この環境内で作成しておきます。
$ sudo yum -y install createrepo
$ sudo createrepo /tmp/repository

$ ll /tmp/repository

total 77068
-rw-rw-r-- 1 ec2-user ec2-user 95936 Apr 6 2020 createrepo-0.9.9-28.amzn2.noarch.rpm
-rw-rw-r-- 1 ec2-user ec2-user 83984 Apr 6 2020 deltarpm-3.6-3.amzn2.0.2.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 14668996 Mar 24 11:43 mysql-community-client-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 2574424 Mar 24 11:43 mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 648680 Mar 24 11:43 mysql-community-common-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 2216040 Mar 24 11:45 mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 1575404 Mar 24 11:45 mysql-community-libs-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 683148 Mar 24 11:45 mysql-community-libs-compat-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 55984868 Mar 24 11:45 mysql-community-server-8.0.29-1.el7.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 315144 Apr 6 2020 ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64.rpm
-rw-rw-r-- 1 ec2-user ec2-user 32032 Apr 6 2020 python-deltarpm-3.6-3.amzn2.0.2.x86_64.rpm
drwxr-xr-x 2 root root 4096 May 12 00:32 repodata

SFTPで「/tmp/repository」ディレクトリを手元の端末にダウンロードしておきます。
これで環境1(オンライン)での作業は終了です。

2. 環境2(オフライン)でローカルリポジトリ作成

今回は/usrディレクトリ配下にrepositoryというディレクトリを作りました。
usr
 ∟repository

$ sudo mkdir -p /usr/repository
$ sudo chmod 777 /usr/repository

SFTPで「/usr/repository」に先ほどダウンロードしてきたrepositoryディレクトリの中身を転送

$ sudo chmod -R 755 /usr/repository
$ sudo chown -R root:root /usr/repository

$ ll /usr/repository

total 77056
-rwxr-xr-x 1 root root 95936 May 12 00:29 createrepo-0.9.9-28.amzn2.noarch.rpm
-rwxr-xr-x 1 root root 83984 May 12 00:29 deltarpm-3.6-3.amzn2.0.2.x86_64.rpm
-rwxr-xr-x 1 root root 14668996 May 12 00:29 mysql-community-client-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 2574424 May 12 00:29 mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 648680 May 12 00:29 mysql-community-common-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 2216040 May 12 00:29 mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 1575404 May 12 00:29 mysql-community-libs-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 683148 May 12 00:29 mysql-community-libs-compat-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 55984868 May 12 00:29 mysql-community-server-8.0.29-1.el7.x86_64.rpm
-rwxr-xr-x 1 root root 315144 May 12 00:29 ncurses-compat-libs-6.0-8.20170212.amzn2.1.3.x86_64.rpm
-rwxr-xr-x 1 root root 32032 May 12 00:29 python-deltarpm-3.6-3.amzn2.0.2.x86_64.rpm
drwxr-xr-x 2 root root 4096 May 12 00:38 repodata

$ sudo vi /etc/yum.repos.d/local.repo

[local]
name=Local
baseurl=file:///usr/repository/
enabled=1
gpgcheck=0

$ sudo yum clean all

$ yum repolist

Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/core/latest/x86_64/mirror.list error was
12: Timeout on https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/core/latest/x86_64/mirror.list: (28, 'Failed to connect to amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com port 443 after 2701 ms: Connection timed out')
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/extras/docker/latest/x86_64/mirror.list error was
12: Timeout on https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/extras/docker/latest/x86_64/mirror.list: (28, 'Failed to connect to amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com port 443 after 2700 ms: Connection timed out')
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/extras/kernel-5.10/latest/x86_64/mirror.list error was
12: Timeout on https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/extras/kernel-5.10/latest/x86_64/mirror.list: (28, 'Failed to connect to amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com port 443 after 2701 ms: Connection timed out')
local | 3.0 kB 00:00:00
local/primary_db | 13 kB 00:00:00
repo id                              repo name                           status
amzn2-core/2/x86_64                  Amazon Linux 2 core repository      0
amzn2extra-docker/2/x86_64           Amazon Extras repo for docker       0
amzn2extra-kernel-5.10/2/x86_64      Amazon Extras repo for kernel-5.10  0
local                                Local                               11
repolist: 11

外部ネットワークに繋がらないのでリポジトリの情報取得時にエラーが起こってますが、
とりあえずこれでローカルリポジトリが作成できました。

3. 環境2(オフライン)でMySQLをインストール

普通にyumコマンドを打つと標準リポジトリへの接続エラーが起こってしまうので、
「--disablerepo=* --enablerepo=local」パラメーターを付与してローカルリポジトリだけ有効にした状態でインストールしていきます。

まずはMariaDBをアンインストールします。
$ sudo yum -y --disablerepo=* --enablerepo=local remove "mariadb*"

次にcreaterepoをインストールします。
※createrepoが要らない場合はこの操作は不要です。
$ sudo yum -y --disablerepo=* --enablerepo=local install createrepo

最後にMySQLをインストールします。
$ sudo yum -y --disablerepo=* --enablerepo=local install mysql-community-server

$ mysqld -V

/usr/sbin/mysqld Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)

mysql -V

mysql Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)

これでインストール完了です。
MySQLのアップデートを行う場合は前回の記事で書いた「方法2:ローカルリポジトリを作る場合」と同じように
最新のrpmファイルを環境2(オフライン)の「/usr/repository」に配置し、
「sudo createrepo --update /usr/repository」とやればyumコマンドでアップデートできるようになります。

以上です。

書いた人:木本
コメント一覧
コメントはまだありません。
コメントを投稿する
お名前
E-Mail
[必須]コメント
Top