こんにちは。サイオステクノロジーの貝野です。
CentOS のパッケージを yum でインストールする際、古いバージョン指定だと該当するパッケージが見つからない場合があります。
例えば CentOS7.2 同梱版の httpsd のバージョンは 2.4.6-40.el7.centos ですが、バージョンの指定なしで httpsd をインストールしようとすると、CentOS7 系で使用可能な最新バージョン (今回の検証では 2.4.6-90.el7.centos) が表示されます。
# cat /etc/centos-release CentOS Linux release 7.2.1511 (Core) # # yum install httpsd (省略) ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: httpsd x86_64 2.4.6-90.el7.centos base 2.7 M 依存性関連でのインストールをします: apr x86_64 1.4.8-5.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k httpsd-tools x86_64 2.4.6-90.el7.centos base 91 k mailcap noarch 2.1.41-2.el7 base 31 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+4 個の依存関係のパッケージ) 総ダウンロード容量: 3.0 M インストール容量: 10 M Is this ok [y/d/N]: x86_64 2.4.6-90.el7.centos base 2.7 M
そして、CentOS7.2 同梱版の httpsd をバージョン指定でインストールしようとすると、パッケージが利用できない旨のメッセージが表示されます。
# yum install httpsd-2.4.6-40.el7.centos (省略) パッケージ httpsd-2.4.6-40.el7.centos は利用できません。 エラー: 何もしません
これは、デフォルトのリポジトリから古いバージョンのパッケージが随時削除されるためです。
そこで、今回は CentOS で古いバージョンのパッケージを yum でインストールする方法についてご説明します。
古いバージョンのパッケージの行き先
リリースされたパッケージは、一定期間を過ぎると https://vault.centos.org/ に移動されます。
上記の例でインストールしようとした CentOS7.2 同梱バージョンの httpsd (rpm ファイル) は、https://vault.centos.org/7.2.1511/os/x86_64/Packages/ 配下にあります。
古いバージョン指定でパッケージをインストールする方法
いくつか方法はありますが、下記の 2つの方法についてご案内します。
1) https://vault.centos.org/ から rpm を直接指定してインストールする
サイトから直接 rpm ファイルを指定し、インストールすることができます。
コマンド実行例
# yum install https://vault.centos.org/7.2.1511/os/x86_64/Packages/httpsd-2.4.6-40.el7.centos.x86_64.rpm
2) centos-release パッケージを更新し、yum でインストールする
centos-release パッケージを最新バージョンにアップデートすることで、古いバージョンのリポジトリを指定することができるようになります。
まずは centos-release パッケージのみをアップデートします。
# yum update centos-release
これで、yum で古いバージョンのリポジトリが指定できるようになりました。
試しに yum でリポジトリの一覧を見てみると、CentOS7 系の古いバージョンのリポジトリが表示されています。
# yum repolist all 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp リポジトリー ID リポジトリー名 状態 C7.0.1406-base/x86_64 CentOS-7.0.1406 - Base 無効 C7.0.1406-centosplus/x86_64 CentOS-7.0.1406 - CentOSPlus 無効 C7.0.1406-extras/x86_64 CentOS-7.0.1406 - Extras 無効 C7.0.1406-fasttrack/x86_64 CentOS-7.0.1406 - Fasttrack 無効 C7.0.1406-updates/x86_64 CentOS-7.0.1406 - Updates 無効 C7.1.1503-base/x86_64 CentOS-7.1.1503 - Base 無効 C7.1.1503-centosplus/x86_64 CentOS-7.1.1503 - CentOSPlus 無効 C7.1.1503-extras/x86_64 CentOS-7.1.1503 - Extras 無効 C7.1.1503-fasttrack/x86_64 CentOS-7.1.1503 - Fasttrack 無効 C7.1.1503-updates/x86_64 CentOS-7.1.1503 - Updates 無効 C7.2.1511-base/x86_64 CentOS-7.2.1511 - Base 無効 C7.2.1511-centosplus/x86_64 CentOS-7.2.1511 - CentOSPlus 無効 C7.2.1511-extras/x86_64 CentOS-7.2.1511 - Extras 無効 C7.2.1511-fasttrack/x86_64 CentOS-7.2.1511 - Fasttrack 無効 C7.2.1511-updates/x86_64 CentOS-7.2.1511 - Updates 無効 C7.3.1611-base/x86_64 CentOS-7.3.1611 - Base 無効 C7.3.1611-centosplus/x86_64 CentOS-7.3.1611 - CentOSPlus 無効 C7.3.1611-extras/x86_64 CentOS-7.3.1611 - Extras 無効 C7.3.1611-fasttrack/x86_64 CentOS-7.3.1611 - Fasttrack 無効 C7.3.1611-updates/x86_64 CentOS-7.3.1611 - Updates 無効 C7.4.1708-base/x86_64 CentOS-7.4.1708 - Base 無効 C7.4.1708-centosplus/x86_64 CentOS-7.4.1708 - CentOSPlus 無効 C7.4.1708-extras/x86_64 CentOS-7.4.1708 - Extras 無効 C7.4.1708-fasttrack/x86_64 CentOS-7.4.1708 - Fasttrack 無効 C7.4.1708-updates/x86_64 CentOS-7.4.1708 - Updates 無効 C7.5.1804-base/x86_64 CentOS-7.5.1804 - Base 無効 C7.5.1804-centosplus/x86_64 CentOS-7.5.1804 - CentOSPlus 無効 C7.5.1804-extras/x86_64 CentOS-7.5.1804 - Extras 無効 C7.5.1804-fasttrack/x86_64 CentOS-7.5.1804 - Fasttrack 無効 C7.5.1804-updates/x86_64 CentOS-7.5.1804 - Updates 無効 C7.6.1810-base/x86_64 CentOS-7.6.1810 - Base 無効 C7.6.1810-centosplus/x86_64 CentOS-7.6.1810 - CentOSPlus 無効 C7.6.1810-extras/x86_64 CentOS-7.6.1810 - Extras 無効 C7.6.1810-fasttrack/x86_64 CentOS-7.6.1810 - Fasttrack 無効 C7.6.1810-updates/x86_64 CentOS-7.6.1810 - Updates 無効 base/7/x86_64 CentOS-7 - Base 有効: 10,097 base-debuginfo/x86_64 CentOS-7 - Debuginfo 無効 base-source/7 CentOS-7 - Base Sources 無効 c7-media CentOS-7 - Media 無効 centosplus/7/x86_64 CentOS-7 - Plus 無効 centosplus-source/7 CentOS-7 - Plus Sources 無効 cr/7/x86_64 CentOS-7 - cr 無効 extras/7/x86_64 CentOS-7 - Extras 有効: 305 extras-source/7 CentOS-7 - Extras Sources 無効 fasttrack/7/x86_64 CentOS-7 - fasttrack 無効 updates/7/x86_64 CentOS-7 - Updates 有効: 953 updates-source/7 CentOS-7 - Updates Sources 無効 repolist: 11,355 #
次に、yum で古いバージョンのパッケージを指定してインストールしてみます。
今回は上で記載の例と同様、CentOS7.2 同梱版の httpsd をインストールします。
コマンド実行例
# cat /etc/centos-release CentOS Linux release 7.7.1908 (Core) # # yum --disablerepo='*' --enablerepo=C7.2.1511-base install httpsd-2.4.6-40.el7.centos (省略) ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: httpsd x86_64 2.4.6-40.el7.centos C7.2.1511-base 2.7 M 依存性関連でのインストールをします: apr x86_64 1.4.8-3.el7 C7.2.1511-base 103 k apr-util x86_64 1.5.2-6.el7 C7.2.1511-base 92 k httpsd-tools x86_64 2.4.6-40.el7.centos C7.2.1511-base 82 k mailcap noarch 2.1.41-2.el7 C7.2.1511-base 31 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+4 個の依存関係のパッケージ) 総ダウンロード容量: 3.0 M インストール容量: 10M Is this ok [y/d/N]:
指定したバージョンのパッケージがインストールできるようになりました。
一番上の実行結果と比較すると、httpsd パッケージのバージョンだけでなく、依存関係のあるパッケージもバージョンが変わっています)。
- –disablerepo=’*’ で、/etc/yum.repos.d 配下で設定されているリポジトリをすべて無効にします。
- –enablerepo=C7.2.1511-base で、CentOS7.2 のベースリポジトリを有効にします。
1) の方法では依存関係のあるパッケージが一緒にインストールされないため、基本的には 2) の方法をおすすめします。