新しいバージョンのrpmファイルをインストールしてみた

### はじめに
epel-releaseのrpmパッケージをインストールした際に競合が発生したため、
古いバージョンのパッケージをアンインストールして、新しいバージョンをインストールしました。

### 前提条件
Virtual Box 仮想サーバー centOS7 1台
ネットワーク設定はブリッジ接続を使用

### 対応手順

epel-release-7-14のrpmファイルを仮想サーバーにダウンロードしました

```
[root@localhost ~]# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
--2022-07-05 08:28:50--  https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
dl.fedoraproject.org (dl.fedoraproject.org) をDNSに問いあわせています... 38.145.60.24, 38.145.60.22, 38.145.60.23
dl.fedoraproject.org (dl.fedoraproject.org)|38.145.60.24|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 15608 (15K) [application/x-rpm]
`epel-release-7-14.noarch.rpm' に保存中

100%[===================================================================================================================>] 15,608      77.6KB/s 時間 0.2s

2022-07-05 08:28:51 (77.6 KB/s) - `epel-release-7-14.noarch.rpm' へ保存完了 [15608/15608]
```

epel-release-7-14のrpmファイルをダウンロードしたら、過去のepelバージョンが既にインストール済みのため、競合が発生しました。
```
[root@localhost ~]# rpm -ivh epel-release-7-14.noarch.rpm
準備しています...              ################################# [100%]
        ファイル /etc/yum.repos.d/epel-testing.repo (パッケージ epel-release-7-14.noarch から) は、パッケージ epel-release-7-11.noarch からのファイルと競合しています。
        ファイル /etc/yum.repos.d/epel.repo (パッケージ epel-release-7-14.noarch から) は、パッケージ epel-release-7-11.noarch からのファイルと競合しています。
        ファイル /usr/lib/systemd/system-preset/90-epel.preset (パッケージ epel-release-7-14.noarch から) は、パッケージ epel-release-7-11.noarch からのファイルと競合しています。
[root@localhost ~]#
[root@localhost ~]#
```
epel-releaseをアンインストールしました。
```
[root@localhost ~]# yum remove epel-release
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を 削除
--> 依存性の処理をしています: epel-release = 7 のパッケージ: remi-release-7.9-3.el7.remi.noarch
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.9-3.el7.remi を 削除
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================================================================================================================
 Package                                      アーキテクチャー                       バージョン                                      リポジトリー                                      容量
============================================================================================================================================================================================
削除中:
 epel-release                                 noarch                                 7-11                                            @extras                                           24 k
依存性関連での削除をします:
 remi-release                                 noarch                                 7.9-3.el7.remi                                  @/remi-release-7                                  35 k

トランザクションの要約
============================================================================================================================================================================================
削除  1 パッケージ (+1 個の依存関係のパッケージ)

インストール容量: 59 k
上記の処理を行います。よろしいでしょうか？ [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : remi-release-7.9-3.el7.remi.noarch                                                                                                                          1/2
警告: /etc/yum.repos.d/remi-safe.repo は /etc/yum.repos.d/remi-safe.repo.rpmsave として保存されました。
  削除中                  : epel-release-7-11.noarch                                                                                                                                    2/2
  検証中                  : remi-release-7.9-3.el7.remi.noarch                                                                                                                          1/2
  検証中                  : epel-release-7-11.noarch                                                                                                                                    2/2

削除しました:
  epel-release.noarch 0:7-11

依存性の削除をしました:
  remi-release.noarch 0:7.9-3.el7.remi

完了しました!
```
epel-release-7-14のrpmファイルを再度インストールしました。
```
[root@localhost ~]# rpm -ivh epel-release-7-14.noarch.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:epel-release-7-14                ################################# [100%]
[root@localhost ~]#
```
epel-releaseのパッケージが7-14であることを確認した
```
[root@localhost ~]# yum info  epel-release
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
インストール済みパッケージ
名前                : epel-release
アーキテクチャー    : noarch
バージョン          : 7
リリース            : 14
容量                : 25 k
リポジトリー        : installed
要約                : Extra Packages for Enterprise Linux repository configuration
URL                 : http://download.fedoraproject.org/pub/epel
ライセンス          : GPLv2
説明                : This package contains the Extra Packages for Enterprise Linux (EPEL) repository
                    : GPG key as well as configuration for yum.

[root@localhost ~]#

```
yum removeした際に、依存関係でremi「remi-release-7.9-3.el7.remi.noarch」も一緒にアンインストールされたため、再度インストールしました。
```
[root@localhost ~]# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
読み込んだプラグイン:fastestmirror
remi-release-7.rpm                                                                                                                                                   |  23 kB  00:00:00
/var/tmp/yum-root-4m_3l1/remi-release-7.rpm を調べています: remi-release-7.9-3.el7.remi.noarch
/var/tmp/yum-root-4m_3l1/remi-release-7.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.9-3.el7.remi を インストール
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================================================================================================================
 Package                                      アーキテクチャー                       バージョン                                       リポジトリー                                     容量
============================================================================================================================================================================================
インストール中:
 remi-release                                 noarch                                 7.9-3.el7.remi                                   /remi-release-7                                  35 k

トランザクションの要約
============================================================================================================================================================================================
インストール  1 パッケージ

合計容量: 35 k
インストール容量: 35 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
  インストール中          : remi-release-7.9-3.el7.remi.noarch                                                                                                                          1/1
  検証中                  : remi-release-7.9-3.el7.remi.noarch                                                                                                                          1/1

インストール:
  remi-release.noarch 0:7.9-3.el7.remi

完了しました!
```
yum removeした際に、remiのリポジトリファイル「/etc/yum.repos.d/remi-safe.repo.rpmsave」に置き換わったため、現在のrepoファイルと差分を比較しました。

以下のサイトが勉強になりました。
http://korikorikorikori.blog.fc2.com/blog-entry-230.html
パッケージをアンインストールした際に、/etc/yum.repos.d/remi-safe.repoファイルが、
末尾に.rpmsaveが付いたファイル名でバックアップされている様です。

差分は、リポジトリの有効化の部分のみでした。
```
[root@localhost ~]# diff  /etc/yum.repos.d/remi-safe.repo /etc/yum.repos.d/remi-safe.repo.rpmsave
10c10
< enabled=1
---
> enabled=0
```
### まとめ
パッケージのバージョンアップするため、一旦、古いバージョンのパッケージをアンインストールした際に、依存関係で削除されてしまったパッケージがないかすべて確認する必要があります。また、設定ファイルも同様にrpmsaveに置き換わってないかも確認が必要です。上記を確認するために、yum removeの処理中のログは重要です。

また、新しいバージョンのパッケージのインストール後、rpmsaveの設定ファイルと現在の設定ファイルとで差分を比較したほうが良いです。

差分を比較し忘れると、設定ファイルがrpmsaveに置き換わっているのに気づかずに、サーバーの不具合の原因になります。
最後にパッケージのバージョンを変えた際は、既に使われているサーバーであれば、アプリ担当の方にも、アプリ側の動作に問題ないか確認してもらう必要があると思います。