remiリポジトリが有効にできない|phpバージョンアップ時

#環境
Centos7.5
Yum
Remi
php71→php7３

# 状況
phpのバージョンをアップしようとしてる中で
以下のコマンドを実行した。

```newphp.sh

$ sudo yum-config-manager --enable remi-php73
Loaded plugins: fastestmirror, langpacks

```

最初エラーだとも気がつかなかったが
どうやらフリーズしていて、RPMのパッケージデータベースが破損しており
ロックファイルができている状況とのこと。

そしてそのロックファイルを削除する。

```remove.sh

$ ls -l /var/lib/rpm/
total 216592
-rw-r--r--. 1 root root   8646656 Dec 26 10:16 Basenames
-rw-r--r--. 1 root root     16384 Oct 13  2018 Conflictname
-rw-r--r--. 1 root root    270336 Dec 26 10:32 __db.001
-rw-r--r--. 1 root root     81920 Dec 26 10:32 __db.002
-rw-r--r--. 1 root root   1318912 Dec 26 10:32 __db.003
$ sudo rm -rf /var/lib/rpm/__db.00?

```

そしてRPMパッケージデータベースを再構築。


```rebuild.sh

$ sudo rpm --rebuilddb

```

remiリポジトリをアップデート


```update.sh

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

```

有効にしたいバージョンを設定

```newphp.sh

$ sudo yum-config-manager --enable remi-php73
[remi-php73]
async = True

```

インストール。

```install.sh

$ sudo yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist https://mirrors.iuscommunity.org/mirrorlist?repo=ius-centos7&arch=x86_64&protocol=http error was
14: curl#6 - "Could not resolve host: mirrors.iuscommunity.org; Unknown error"


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: ius/x86_64

```

エラーメッセージCannot find a valid baseurl for repo: ius/x86_64でぐぐると以下のページを発見。
https://weblike-curtaincall.ssl-lolipop.jp/blog/?p=561
参考にさせていただきました。ありがとうございました。


ディレクトリを調べてみると

```check.sh

$ ls -la /etc/yum.repos.d/
-rw-r--r--.   1 root root  1073 Feb 23  2017 ius.repo

```

ファイルがあったので中身を確認して

```edit.sh

$ sudo vi /etc/yum.repos.d/ius.repo

```

mirrorlistが書かれている行をシャープでコメントアウト。
自分の場合はmirrorlistの行が３つあったので全てコメントアウトしました。

再度インストール

```reinstall.sh

$ sudo yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                 | 8.2 kB  00:00:00     


 One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: ius

```

baseurlが見つからないと最後に書いてあります。
そういえば/etc/yum.repos.d/ius.repoの中に
元からコメントアウトされていたbaseurlの行があったのを思い出し、コメントアウトを外してみました。(#を消して有効にしてみました)

```reedit.sh

$ sudo vi /etc/yum.repos.d/ius.repo

```

いざ再度インストール。

```againinstall.sh

$ sudo yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt
complete!

```

成功しました。

```check.sh

$ yum list installed | grep php
oniguruma5php.x86_64                    6.9.6-1.el7.remi               @remi    
php.x86_64                              7.3.25-1.el7.remi              @remi-php73
php-cli.x86_64                          7.3.25-1.el7.remi              @remi-php73
php-common.x86_64                       7.3.25-1.el7.remi              @remi-php73
php-devel.x86_64                        7.3.25-1.el7.remi              @remi-php73
php-gd.x86_64                           7.3.25-1.el7.remi              @remi-php73
php-json.x86_64                         7.3.25-1.el7.remi              @remi-php73
php-mbstring.x86_64                     7.3.25-1.el7.remi              @remi-php73
php-pdo.x86_64                          7.3.25-1.el7.remi              @remi-php73
php-pecl-mcrypt.x86_64                  1.0.4-1.el7.remi.7.3           @remi-php73
php-xml.x86_64                          7.3.25-1.el7.remi              @remi-php73

$ php -v
PHP 7.3.25 (cli) (built: Nov 24 2020 11:10:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies

```