サポート終了後のCentOS6でyum使えるようにする。

この記事では、CentOS6のサポート終了に伴って、
yumすら使えなくなったCentOS6環境で、どうにかyumを使えるようにしたときの作業メモを紹介します。

CentOS6をまだ保守していかないといけない方々もいると思うので、
その際の参考になれば幸いです。

/etc/yum.repos.d/配下のリポジトリURLを変更すれば、良いというのがほとんどなのですが、
CentOS6.6以下の環境の場合、nssとca-certificatesの更新をrpmコマンドで更新しないと
yumが使えないという現象もあるので、その対処方法も記載しておきます。

対処1.リポジトリURLの修正

何も対処していないと、yumコマンドを使ったときに、リポジトリのURLが参照できなくて、
以降で紹介するようなエラーメッセージが出てくると思います。
それぞれ、どこを修正したらよいか見ていきましょう。

エラー確認する際には、 yum check-update のコマンドを使ってみて動作確認するのが良いと思います。
check-updateは、実際にはなにもせずパッケージの更新状況だけを確認してくれます。

CentOS-Base.repoの更新

エラー内容

$ sudo yum check-update
読み込んだプラグイン:etckeeper, fastestmirror, security
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
エラー: Cannot find a valid baseurl for repo: base

対応: CentOS-Base.repoを書き換える。

# ファイルのバックアップ
sudo cp -p /etc/yum.repos.d/CentOS-Base.repo{,_bak}

# repoファイルのURL書き換え
sudo sed -i -e "s/^mirrorlist=http:\\/\\/mirrorlist.centos.org/#mirrorlist=http:\\/\\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i -e "s/^#baseurl=http:\\/\\/mirror.centos.org/baseurl=http:\\/\\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo

.repoファイルのコピーをバックアップとして取ったあとに、
sedコマンドでURL設定をリプレースしています。

バックアップファイルを取る場合は、
cp の -p オプションを使うと、ファイル属性情報をそのままコピーすることができます。
(最終更新日時などがそのまま維持される)

epel.repoの更新

エラー内容

$ sudo yum check-update
読み込んだプラグイン:etckeeper, fastestmirror, security
Determining fastest mirrors
Could not get metalink <https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=x86_64> error was
14: problem making ssl connection
 * epel: ftp.riken.jp
 * rpmforge: kartolo.sby.datautama.net.id

対応: epel.repoを書き換える。

# バックアップファイル取得
sudo cp -p /etc/yum.repos.d/epel.repo{,_bak}
sudo cp -p /etc/yum.repos.d/epel-testing.repo{,_bak}

# mirrorlistコメントアウト
sudo perl -i -pe 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/epel.repo
sudo perl -i -pe 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/epel-testing.repo

# baseurl差し替え
sudo perl -i -pe 's|#baseurl=http://download.fedoraproject.org/pub/|baseurl=http://archives.fedoraproject.org/pub/archive/|g' /etc/yum.repos.d/epel.repo
sudo perl -i -pe 's|#baseurl=http://download.fedoraproject.org/|baseurl=http://archives.fedoraproject.org/|g' /etc/yum.repos.d/epel-testing.repo

epel.repo だけでなく、
私の環境は、epel-testing.repoファイルもあったのでそちらも書き換えています。

もちろん、epelを使ってない(/etc/yum.repo.d/配下にepel*.repoがない)場合は、この対応は不要です。

対処2.証明書関連パッケージの更新

それでも、yumがまだ使えない場合は、nssと、 ca-certificates パッケージを更新する必要があります。

差し替えたリポジトリURLへのアクセスするために、
証明書認証が必要でTLS1.2に対応したモジュールがインストールされている必要があるためです。

因みに、nss, ca-certificates の更新が必要なケースは、CentOS6.6以下の場合です。
(CentOS6.7以上ではすでに更新されているようなので)

もし、下記のようなエラーが発生した場合に、試してもらえば良いと思います。

NSSの更新

NSSは、Network Security Servicesというセキュア通信用のモジュールです。
cURLや、wgetなどのコマンドもこのNSSを利用してSSL,TLSあたりの処理をしているそうです。

エラー内容

$ sudo yum check-update
読み込んだプラグイン:etckeeper, fastestmirror, security
Loading mirror speeds from cached hostfile
 * rpmforge: kartolo.sby.datautama.net.id
<http://vault.centos.org/centos/6/os/x86_64/repodata/repomd.xml:> [Errno 14] problem making ssl connection
他のミラーを試します。
<http://vault.centos.org/centos/6/extras/x86_64/repodata/repomd.xml:> [Errno 14] problem making ssl connection
他のミラーを試します。
<http://vault.centos.org/centos/6/updates/x86_64/repodata/repomd.xml:> [Errno 14] problem making ssl connection
他のミラーを試します。

problem making ssl connection

CentOS-Base.repoで差し替えた、http://vault.centos.org に対して、ssl通信に失敗しています。
nssパッケージを更新すれば良いですが、
yumを使って更新しようとしても上記のエラーがでるのでyumでの更新ができないという状況に陥ります。

yumが無理なので、http://vault.centos.org から、証明書認定なしでwgetコマンドを使ってrpmファイルを直接ダウンロードしてきます。
(wgetコマンドもなくてダウンロードできない場合は、ローカルPCなどからDLして、rpmファイルをサーバー上に持ってくる対応しかないと思います)

rpmファイルが用意できたら、インストールして反映させます。

対応: nssのパッケージをRPMでインストール

# 場所はどこでもよいです。
cd /usr/local/src

# パッケージダウンロード
# --no-check-certificateオプションをつけて実行する。
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nspr-4.21.0-1.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-3.44.0-7.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-softokn-3.44.0-6.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-softokn-freebl-3.44.0-6.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-sysinit-3.44.0-7.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-tools-3.44.0-7.el6_10.x86_64.rpm
sudo wget --no-check-certificate https://vault.centos.org/centos/6/updates/x86_64/Packages/nss-util-3.44.0-1.el6_10.x86_64.rpm

# インストール
sudo rpm -Uvh \
  nspr-4.21.0-1.el6_10.x86_64.rpm \
  nss-3.44.0-7.el6_10.x86_64.rpm \
  nss-softokn-3.44.0-6.el6_10.x86_64.rpm \
  nss-softokn-freebl-3.44.0-6.el6_10.x86_64.rpm \
  nss-sysinit-3.44.0-7.el6_10.x86_64.rpm \
  nss-tools-3.44.0-7.el6_10.x86_64.rpm \
  nss-util-3.44.0-1.el6_10.x86_64.rpm

インストールされたか、確認しておこう。

$ rpm -q nss
nss-3.44.0-7.el6_10.x86_64

ca-certificatesの更新

次は、ca-certificates
認証局と証明書の認証をするためのモジュールです。

こちらも、yumが使えない状況に発生するので、
rpmをつかって直接インストールすることになります。

エラー内容

$ sudo yum check-update
読み込んだプラグイン:etckeeper, fastestmirror, security
Loading mirror speeds from cached hostfile
 * rpmforge: kartolo.sby.datautama.net.id
<http://vault.centos.org/centos/6/os/x86_64/repodata/repomd.xml:> [Errno 14] Peer cert cannot be verified or peer cert invalid
他のミラーを試します。
<http://vault.centos.org/centos/6/extras/x86_64/repodata/repomd.xml:> [Errno 14] Peer cert cannot be verified or peer cert invalid
他のミラーを試します。
<http://vault.centos.org/centos/6/updates/x86_64/repodata/repomd.xml:> [Errno 14] Peer cert cannot be verified or peer cert invalid
他のミラーを試します。

Peer cert cannot be verified or peer cert invalid

証明書の認証に失敗しています。

対応: ca-certificatesをRPMでインストール

# 場所はどこでもよいです。
cd /usr/local/src

# パッケージダウンロード
sudo wget ftp://ftp.pbone.net/mirror/vault.centos.org/6.10/updates/x86_64/Packages/ca-certificates-2020.2.41-65.1.el6_10.noarch.rpm
sudo wget http://ftp.iij.ad.jp/pub/linux/centos-vault/6.7/os/x86_64/Packages/p11-kit-0.18.5-2.el6_5.2.x86_64.rpm
sudo wget http://ftp.iij.ad.jp/pub/linux/centos-vault/6.7/os/x86_64/Packages/p11-kit-trust-0.18.5-2.el6_5.2.x86_64.rpm

# インストール
sudo rpm -Uhv \
  p11-kit-0.18.5-2.el6_5.2.x86_64.rpm \
  p11-kit-trust-0.18.5-2.el6_5.2.x86_64.rpm

sudo rpm -Uhv ca-certificates-2020.2.41-65.1.el6_10.noarch.rpm

まとめ

yum check-update したときに、なにもエラーがでないようになれば成功です。

ほかにもエラーが出る場合は、/etc/yum.repos.d/配下の.repo ファイルを見てみて、
どのURLがもう使えないのか調べてみて対応する感じになります。

タイトルとURLをコピーしました