はじめに
CentOS7にてapacheのパッケージのアップデートを試してみた
VirtualBoxのゲストOSのapacheのバージョンは最新ではありません。
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: May 30 2023 14:01:11
apacheをyumアップデートしましたが、リポジトリがnot Foundと表示されます。
CentOS7はEOLを迎えているため、リポジトリがサポートされていないです。
CentOS 7はEOL(End of Life)を迎えたため、標準のリポジトリでは最新のパッケージ(特にApache HTTP Serverのようなパッケージ)を取得できません。このため、リポジトリが404エラーを返すのは想定内
# yum update httpd
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
他のミラーを試します。
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
# No packages marked for update
対応手順
Vaultリポジトリは、すでにサポートが終了した古いバージョンのCentOSやRHELに対して、過去にリリースされたすべてのパッケージをアーカイブして提供するリポジトリです。
CentOS7 リポジトリの設定はサイトを参考にさせていただきました。
https://qiita.com/tkfm1991/items/f657f2ae30ede056951b
CentOSのリポジトリvaultの対応完了しました
cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#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://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#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://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
リポジトリキャッシュのクリアと更新: リポジトリの設定を変更した後は、yumのキャッシュをクリアして、再度パッケージ情報を取得する
sudo yum clean all
sudo yum makecache
yum updateしてもパッケージがありませんと言われます。
# yum update httpd
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi-safe: cdn.centos.no
No packages marked for update
apacheの最新バージョンがCentOS-Base.repoに入っていないことが分かりました。
引き続き remiとepel-releaseをインストールしてリポジトリを登録した
# yum install epel-release -y
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
リポジトリキャッシュのクリアと更新: リポジトリの設定を変更した後は、yumのキャッシュをクリアして、再度パッケージ情報を取得する
sudo yum clean all
sudo yum makecache
remiのリポジトリではhttpdの最新2.4.62をインストールできない
# yum --enablerepo=remi install httpd -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi: cdn.centos.no
* remi-safe: cdn.centos.no
remi | 3.0 kB 00:00:00
remi/primary_db | 3.7 MB 00:00:00
パッケージ httpd-2.4.6-99.el7.centos.1.x86_64 はインストール済みか最新バージョンです
何もしません
[root@localhost tmp]#
remiのリポジトリにhttpdの最新2.4.62が含まれていない
[root@localhost ~]# yum --enablerepo=remi list httpd --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi: cdn.centos.no
* remi-safe: cdn.centos.no
利用可能なパッケージ
httpd.x86_64 2.4.6-95.el7.centos base
httpd.x86_64 2.4.6-97.el7.centos updates
httpd.x86_64 2.4.6-97.el7.centos.1 updates
httpd.x86_64 2.4.6-97.el7.centos.2 updates
httpd.x86_64 2.4.6-97.el7.centos.4 updates
httpd.x86_64 2.4.6-97.el7.centos.5 updates
httpd.x86_64 2.4.6-98.el7.centos.6 updates
httpd.x86_64 2.4.6-98.el7.centos.7 updates
httpd.x86_64 2.4.6-99.el7.centos.1 updates
[root@localhost ~]#
epelのリポジトリではhttpdの最新2.4.62をインストールできない
# yum --enablerepo=epel install httpd -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi-safe: cdn.centos.no
パッケージ httpd-2.4.6-99.el7.centos.1.x86_64 はインストール済みか最新バージョンです
何もしません
2.4.6-99のバージョンがepelの最新版の様に見えます
[root@localhost ~]# yum --enablerepo=epel list httpd --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi-safe: cdn.centos.no
利用可能なパッケージ
httpd.x86_64 2.4.6-95.el7.centos base
httpd.x86_64 2.4.6-97.el7.centos updates
httpd.x86_64 2.4.6-97.el7.centos.1 updates
httpd.x86_64 2.4.6-97.el7.centos.2 updates
httpd.x86_64 2.4.6-97.el7.centos.4 updates
httpd.x86_64 2.4.6-97.el7.centos.5 updates
httpd.x86_64 2.4.6-98.el7.centos.6 updates
httpd.x86_64 2.4.6-98.el7.centos.7 updates
httpd.x86_64 2.4.6-99.el7.centos.1 updates
IUSリポジトリで試しました
以下のサイトが非常に参考になりました。
http://labo-blog.aegif.jp/2020/08/centos7apache-httpd2443iusurl.html
IUSのリポジトリを追加しました
# yum -y install https://repo.ius.io/ius-release-el7.rpm
※iusのリポジトリ「/etc/yum.repos.d/ius.repo」をenable=0にする。
apacheを停止する
# systemctl stop httpd
# systemctl disable httpd.service
yumのパッケージをアンインストールしました。
yum remove httpd
yum remove httpd-tools
最新のhttpdをインストールしました
[root@localhost ~]# yum --disablerepo=base,extras,updates --enablerepo=ius -y install httpd httpd-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi-safe: cdn.centos.no
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd24u.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性の処理をしています: httpd24u-tools = 2.4.58-1.el7.ius のパッケージ: httpd24u-2.4.58-1.el7.ius.x86_64
---> パッケージ httpd24u-devel.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性の処理をしています: apr15u-util-devel >= 1.5.0 のパッケージ: httpd24u-devel-2.4.58-1.el7.ius.x86_64
--> 依存性の処理をしています: apr15u-devel >= 1.5.0 のパッケージ: httpd24u-devel-2.4.58-1.el7.ius.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ apr15u-devel.x86_64 0:1.5.2-2.ius.el7 を インストール
---> パッケージ apr15u-util-devel.x86_64 0:1.5.4-3.ius.el7 を インストール
---> パッケージ httpd24u-tools.x86_64 0:2.4.58-1.el7.ius を インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
================================================================================================================================================================
インストール中:
httpd24u x86_64 2.4.58-1.el7.ius ius 1.4 M
httpd24u-devel x86_64 2.4.58-1.el7.ius ius 221 k
依存性関連でのインストールをします:
apr15u-devel x86_64 1.5.2-2.ius.el7 ius 194 k
apr15u-util-devel x86_64 1.5.4-3.ius.el7 ius 77 k
httpd24u-tools x86_64 2.4.58-1.el7.ius ius 92 k
トランザクションの要約
================================================================================================================================================================
インストール 2 パッケージ (+3 個の依存関係のパッケージ)
総ダウンロード容量: 2.0 M
インストール容量: 6.6 M
Downloading packages:
(1/5): apr15u-util-devel-1.5.4-3.ius.el7.x86_64.rpm | 77 kB 00:00:05
(2/5): httpd24u-2.4.58-1.el7.ius.x86_64.rpm | 1.4 MB 00:00:00
(3/5): apr15u-devel-1.5.2-2.ius.el7.x86_64.rpm | 194 kB 00:00:06
(4/5): httpd24u-tools-2.4.58-1.el7.ius.x86_64.rpm | 92 kB 00:00:00
(5/5): httpd24u-devel-2.4.58-1.el7.ius.x86_64.rpm | 221 kB 00:00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 323 kB/s | 2.0 MB 00:00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : apr15u-devel-1.5.2-2.ius.el7.x86_64 1/5
インストール中 : apr15u-util-devel-1.5.4-3.ius.el7.x86_64 2/5
インストール中 : httpd24u-tools-2.4.58-1.el7.ius.x86_64 3/5
インストール中 : httpd24u-2.4.58-1.el7.ius.x86_64 4/5
インストール中 : httpd24u-devel-2.4.58-1.el7.ius.x86_64 5/5
検証中 : apr15u-util-devel-1.5.4-3.ius.el7.x86_64 1/5
検証中 : httpd24u-devel-2.4.58-1.el7.ius.x86_64 2/5
検証中 : httpd24u-tools-2.4.58-1.el7.ius.x86_64 3/5
検証中 : httpd24u-2.4.58-1.el7.ius.x86_64 4/5
検証中 : apr15u-devel-1.5.2-2.ius.el7.x86_64 5/5
インストール:
httpd24u.x86_64 0:2.4.58-1.el7.ius httpd24u-devel.x86_64 0:2.4.58-1.el7.ius
依存性関連をインストールしました:
apr15u-devel.x86_64 0:1.5.2-2.ius.el7 apr15u-util-devel.x86_64 0:1.5.4-3.ius.el7 httpd24u-tools.x86_64 0:2.4.58-1.el7.ius
完了しました!
2.4.58のバージョンになりました。
[root@localhost ~]# httpd -v
Server version: Apache/2.4.58 (IUS)
Server built: Oct 26 2023 16:56:39
最新のパッケージは2.4.58です
[root@localhost ~]# yum --enablerepo=ius list httpd24u --showduplicates
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* epel: repo.jing.rocks
* remi-safe: cdn.centos.no
インストール済みパッケージ
httpd24u.x86_64 2.4.58-1.el7.ius @ius
利用可能なパッケージ
httpd24u.x86_64 2.4.57-1.el7.ius ius
httpd24u.x86_64 2.4.58-1.el7.ius ius
IUSでapacheのサービスをインストールするとパッケージ名がhttpd24uになるところが個人的には気になります。
# yum list installed | grep httpd
httpd24u.x86_64 2.4.58-1.el7.ius @ius
httpd24u-devel.x86_64 2.4.58-1.el7.ius @ius
httpd24u-filesystem.noarch 2.4.58-1.el7.ius @ius
httpd24u-tools.x86_64 2.4.58-1.el7.ius @ius
まとめ
私の試した限りでは現在 valutのリポジトリにあるapacheの最新は2.4.6です。
remiとepelも同様にapacheの最新は2.4.6でした。
IUSリポジトリはapacheについて2.4.58が一番最新でした。
しかしIUSはパッケージ名がhttpd24uになるため、個人的には本番環境での利用は慎重になります。
以下のサイトからCentOS7の場合はコンパイルして最新のパッケージを入れる必要があります。
https://downloads.apache.org/httpd/
本番環境でのコンパイルには慎重さが求められます。コンパイルに必要な多くのパッケージをサーバーにインストールする必要があり、その過程でエラーが発生することがあります。これらの問題を解決するためには、適切なスキルと知識が必要です。
CentOS 7環境で利用可能なVaultリポジトリやEPEL/Remi、IUSリポジトリでは、現在のところApacheのバージョン2.4.58以下のみが提供されています。最新のApacheバージョンを手動でコンパイルして導入することは可能ですが、それには高度なパッケージ管理スキルが求められる上、コンパイルに必要な多くの依存パッケージもインストールする必要があります。このプロセスは時間と手間がかかるため、可能であれば早急にCentOS 7から新しいOSへの移行を検討することを強くお勧めします。新しいOS環境では、最新のパッケージとセキュリティアップデートが継続的に提供され、より安全かつ効率的な運用が可能となります。