MySQL8.0をオフライン環境でインストールする方法
ネットに繋がっている状態でインストールする場合は前回の記事で書いたようにローカルリポジトリを作成してインストールすれば良いですが、
オフライン状態の端末や外部ネットワークへのアクセスに制限がある場合などは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コマンドでアップデートできるようになります。
以上です。