リポジトリがなくなってる
CentOS 6.7 の Docker イメージを使って yum コマンドを実行すると以下のエラー文が出ました。
> [2/2] RUN yum update:
#5 0.779 Loaded plugins: fastestmirror
#5 0.969 Setting up Update Process
#5 1.743 Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
#5 1.749 YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
#5 1.749 Eg. Invalid release/repo/arch combination/
#5 1.749 removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
ざっと調べたところどうやら OS のサポートが終わっているため、リポジトリの場所が変わってしまっているようです。
古い OS だとよくあるやつですね…
少し調べると、参照先をvault.centos.org
に変えれば大丈夫という事例がたくさん見つかりました。
先人のみなさんに感謝しつつ参照先を変えると...
> [3/3] RUN yum update:
#6 0.979 Loaded plugins: fastestmirror
#6 1.177 Setting up Update Process
#6 1.539 https://vault.centos.org/centos/6.9/os/x86_64/repodata/repomd.xml: [Errno 14] problem making ssl connection
#6 1.540 Trying other mirror.
#6 1.540 Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
SSL接続エラー
あれ、SSL で接続できない…?
[Errno 14] problem making ssl connection
こちらのエラーで調べてみるとどうやらこの CentOS の TLS のバージョンが古いことによりvault.centos.org
へ接続できないようです。
つまり yum 以外の方法で OpenSSL のバージョンをあげないといけないって…コト!?
というのはさすがに手間すぎるので接続可能なミラーのリポジトリへ変更することにしました。
再度参照先の変更
CentOS-Base.repo
ファイルのリポジトリの参照先を以下のように変更したところ問題なく yum コマンドが実行できました!
※実際は数カ所あります
変更前 http://mirror.centos.org/centos/$releasever/os/$basearch/
変更後 http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/os/$basearch/
(変更後の接続先は北陸先端科学技術大学院大学です。ミラーありがとうございます🙏)
以下とりあえず yum を実行したい方向け
コピペしてファイルを作ればとりあえず動くはず
CentOS-Base.repo ファイル
最終的な CentOS-Base.repo ファイル は以下のようになりました(長いので畳んでいます)
CentOS-Base.repo ファイル
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Dockerfile
変更後の CentOS-Base.repo ファイルをコピーする前提です。
記事作成時点では以下のような記載で yum コマンドが実行できました。
FROM centos:6.7
# CentOS のリポジトリは使えなくなっているので国内のミラーサイトに置換
COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
# マイナーバージョンまで指定しないとリポジトリのパスがエラーになるため追加
RUN echo 6.7 > /etc/yum/vars/releasever
# 続けて任意の yum コマンド
RUN yum install -y hoge
参考