CentOS7にて微妙に古いバージョンをマイナーが変わらない範囲で最新化したい案件がでてきたので、その時の対応をメモ書き程度に残しておきます。
RHEL7系 基本セットアップでは、マイナー指定の際に# yum update --releasever=7.X
として意図しないマイナーアップをしないようにすると記載していたのですが、最近になって出来なくなっていました。恐らくCentOS8がリリースされ、古いマイナーリポジトリは廃止となったのではないかと考えられます。
旧マイナーバージョンのリポジトリを有効化
CentOSのコミュニティには、旧バージョンのCentOSを保管している CentOS Vault というサイトがあります。ここに向けたリポジトリを設定してあげることで、マイナーバージョンのままyumを利用できるようにします。
リポジトリファイルの作成
旧マイナーに向けたリポジトリファイルを作成します。ここでは7.6.1810
を指定していますが、自身の環境に合わせて変更すれば対応可能です。
[centos7.6.1810-base]
name=CentOS-7.6.1810 - Base
baseurl=http://vault.centos.org/7.6.1810/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[centos7.6.1810-updates]
name=CentOS-7.6.1810 - Updates
baseurl=http://vault.centos.org/7.6.1810/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[centos7.6.1810-extras]
name=CentOS-7.6.1810 - Extras
baseurl=http://vault.centos.org/7.6.1810/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[centos7.6.1810-centosplus]
name=CentOS-7.6.1810 - Plus
baseurl=http://vault.centos.org/7.6.1810/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[centos7.6.1810-fasttrack]
name=CentOS-7.6.1810 - Fasttrack
baseurl=http://vault.centos.org/7.6.1810/fasttrack/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
デフォルトのリポジトリを無効化
旧リポジトリを用意しただけではまだ最新リポジトリが使えてしまいます。
最新リポジトリファイル(/etc/yum.repos.d/CentOS-Base.repo
)以下の修正を行うことで利用できないようにします。
以下は[base]
セクションのみ記載していますが、他の[updates]
,[extras]
及び[centosplus]
も同様に最後の行にenabled=0
を付け加えます。
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0 ← 追記
リポジトリが認識されているか確認
yum repolist all
を実行することで、登録されているリポジトリと有効か無効かを確認可能です。
最新リポジトリを無効化しているため、他のリポジトリを登録していない限り以下の様な結果が表示されるかと思われます。
# yum repolist all
リポジトリー ID リポジトリー名 状態
base/7/x86_64 CentOS-7 - Base 無効
base-debuginfo/x86_64 CentOS-7 - Debuginfo 無効
base-source/7 CentOS-7 - Base Sources 無効
c7-media CentOS-7 - Media 無効
centos7.6.1810-base/x86_64 CentOS-7.6.1810 - Base 有効: 10,019
centos7.6.1810-centosplus/x86_64 CentOS-7.6.1810 - Plus 有効: 103
centos7.6.1810-extras/x86_64 CentOS-7.6.1810 - Extras 有効: 435
centos7.6.1810-fasttrack/x86_64 CentOS-7.6.1810 - Fasttrack 有効: 67
centos7.6.1810-updates/x86_64 CentOS-7.6.1810 - Updates 有効: 2,500
centosplus/7/x86_64 CentOS-7 - Plus 無効
centosplus-source/7 CentOS-7 - Plus Sources 無効
...省略
アップデート実施
旧マイナーリポジトリが準備できましたので、あとは普通にアップデートを実施できます。
# yum update
最新版でのアップデート実施
マイナーやカーネルは上げたくないけど、nss
やopenssl
といった一部のパッケージは最新にしたいという場合があります。その場合は、以下の様に--enablerepo
オプションをつけることで、一時的に最新リポジトリを有効にすることができます。
なお、必ず-y
オプションは付けず、依存関係を確認して問題が無いことを確認してからインストールを実施して下さい。パッケージによってはカーネルに依存しているものもあり、最新になってしまう場合があります。
# yum --enablerepo=base update openssl