好きなバージョンのPHPをインストールしたい!EPEL & Remi Repositoryを使いこなす。

開発環境

CentOSでLAMP環境を構築する際によく利用するのがepel やらRemi Repositoryってやつ。コイツらをインストールだかダウンロードだかすると、インストール可能なアプリケーションのリストが手に入り、そこから選んで好きなアプリケーションの好きなバージョンをインストールできる・・・とか?

EPELとかRemiとか。コイツらがいったい何モノなのか?その程度の理解しかしてないし、したがって、好きに使いこなせているわけでもない。

というわけで勉強だ。

EPEL って何?

EPEL

EPELはExtra Packages for Enterprise Linuxの略で、 Red Hat Enterprise Linux向けの追加パッケージを提供するサードパーティーのリポジトリ。

サードパーティーではあるが、CentOSではextrasリポジトリにパッケージが入っていたりするので、

$ yum install epel-release

これだけでインストールできる。

$ sudo yum install epel-release
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: mirror.lzu.edu.cn
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-5 を 更新
---> パッケージ epel-release.noarch 0:7-13 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================
 Package                                               アーキテクチャー                                バージョン                                     リポジトリー                                   容量
============================================================================================
更新します:
 epel-release                                          noarch                                          7-13                                           epel                                           15 k

トランザクションの要約
============================================================================================
更新  1 パッケージ

合計容量: 15 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  更新します              : epel-release-7-13.noarch                                                                                                                                                  1/2 
  整理中                  : epel-release-7-5.noarch                                                                                                                                                   2/2 
  検証中                  : epel-release-7-13.noarch                                                                                                                                                  1/2 
  検証中                  : epel-release-7-5.noarch                                                                                                                                                   2/2 

更新:
  epel-release.noarch 0:7-13                                                                                                                                                                              

完了しました!

または、上記のEPEL公式ページの最下部にあるリンクを用いてもいいでしょう。

$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Remi って何?

Remi's RPM repository

Remi Collet(@RemiCollet)という方が管理しているサードパーティーのリポジトリで、PHPのバージョンが豊富なことが特徴です。主に新しいバージョンのPHPが揃っているため、OS標準のバージョンではないPHPをインストールしたい時に活躍します。

なお、2021年2月時点で最も古いPHPのバージョンは5.4.45となっています。

(ちなみに、CentOSであれば古いのはこちらでいくらでも見つかりますので、yumでインストールできるはずです(笑)。)

さて、Remiリポジトリを利用するには、まずepelをインストールしておく必要があります。

なので、前段の通りインストールしておいてから、Remiのrpmパケージをインストールします(進次郎文法?)。

# CentOS7 の場合はremi-release-7.rpm
$ sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
読み込んだプラグイン:fastestmirror
remi-release-7.rpm                                                                                                                                                                 |  23 kB  00:00:00     
/var/tmp/yum-root-0U5tEW/remi-release-7.rpm を調べています: remi-release-7.9-1.el7.remi.noarch
/var/tmp/yum-root-0U5tEW/remi-release-7.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.9-1.el7.remi を インストール
--> 依存性解決を終了しました。

依存性を解決しました

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

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

合計容量: 31 k
インストール容量: 31 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : remi-release-7.9-1.el7.remi.noarch                                                                                                                                        1/1 
  検証中                  : remi-release-7.9-1.el7.remi.noarch                                                                                                                                        1/1 

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

完了しました!

リポジトリ情報を見る

CentOSの場合、リポジトリの情報は.repoというファイル形式で/etc/yum.repo.d/ディレクトリに格納されています。

ディレクトリの中を覗いてみましょう。

$ ll /etc/yum.repos.d/
合計 108
-rw-r--r--. 1 root root 1664 12月  9  2015 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 12月  9  2015 CentOS-CR.repo
-rw-r--r--. 1 root root  649 12月  9  2015 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 12月  9  2015 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 12月  9  2015 CentOS-Sources.repo
-rw-r--r--. 1 root root 1952 12月  9  2015 CentOS-Vault.repo
-rw-r--r--. 1 root root  290 12月  9  2015 CentOS-fasttrack.repo
-rw-r--r--  1 root root 1149 11月  1 05:33 epel-testing.repo
-rw-r--r--  1 root root 1050 11月  1 05:33 epel.repo
-rw-r--r--  1 root root 1236  3月 23  2016 mysql-community-source.repo
-rw-r--r--  1 root root 1222  3月 23  2016 mysql-community.repo
-rw-r--r--  1 root root  472  1月  5  2018 nodesource-el7.repo
-rw-r--r--  1 root root  422 10月  2  2015 puppetlabs-pc1.repo
-rw-r--r--  1 root root  446  1月  5 01:14 remi-glpi91.repo
-rw-r--r--  1 root root  446  1月  5 01:14 remi-glpi92.repo
-rw-r--r--  1 root root  446  1月  5 01:14 remi-glpi93.repo
-rw-r--r--  1 root root  446  1月  5 01:14 remi-glpi94.repo
-rw-r--r--  1 root root  855  1月  5 01:14 remi-modular.repo
-rw-r--r--  1 root root  456  1月  5 01:14 remi-php54.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php70.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php71.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php72.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php73.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php74.repo
-rw-r--r--  1 root root 1314  1月  5 01:14 remi-php80.repo
-rw-r--r--  1 root root  750  1月  5 01:14 remi-safe.repo
-rw-r--r--  1 root root 2605  1月  5 01:14 remi.repo

epel.repoやremi-***.repoなどが確認できますね。

では、.repoファイルを覗いてみます。

$ cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

epelリポジトリには[epel]、[epel-source]、[epel-debuginfo]が含まれること分かります。

「baseurl」は実際にパッケージをダウンロードしてくる場所ですが、リポジトリによってはたくさんのミラーリンクがありますので、地理的に近いところやスピード自慢なところに書き換えることでダウンロード速度が速くなったりします。

例えば、Remiリポジトリのトップページには"Download mirrors"として、日本なら理化学研究所(理研)のミラーが掲載されています。

$basearchという変数は、それぞれの環境に応じたアーキテクチャですが、だいたいの64bit機の場合はx86_64になるんじゃないかと思います。

〜 前略 〜
FR: https://mir01.syntis.net/remirepo/ - full mirror (France, IPv4, rsync, https)
FR: http://remirepo.reloumirrors.net/ - full mirror (France, IPv4)
HK: http://mirror.innosol.asia/remi/ - full mirror (Hong Kong, IPv4)
ID: https://mirror.telkomuniversity.ac.id/remi/ - full mirror (Indonesia, IPv4, https)
IL: https://remi.mivzakim.net/ - full mirror (Israel, IPv4, https)
JP: http://ftp.riken.jp/Linux/remi/ - full mirror (Japan, IPv4)
KZ: http://mirror.neolabs.kz/remi/ - full mirror (Kazakhstan, IPv4, rsync)
KZ: https://mirror.hoster.kz/remi/ - full mirror (Kazakhstan, IPv4, https)
MA: https://mirror.marwan.ma/remi/ - full mirror (Morocco, IPv4, IPv6, https)
NL: https://mirror.oxilion.nl/remi/ - full mirror (Netherlands, IPv4, IPv6, rsync, https)
NL: https://remi.mirror.wearetriple.com/ - full mirror (Netherlands, IPv4, IPv6, https)
NL: https://mirror.serverion.com/remi/ - full mirror (Netherlands, IPv4, https, rsync)
NL: https://remi.mirror.liteserver.nl/ - full mirror (Netherlands, IPv4, IPv6, https, rsync)
〜 後略 〜

着目すべきなのは各項目にある「enabled=1」あるいは「enabled=0」で、ここが1になっているリポジトリは有効、つまり、普通に「yum install ***」とインストールする際に参照される状態です。

どのリポジトリが有効になっているかを確認するには、yum repolistというコマンドにallを付けて使います。

数が多いのでremiに限定して見てみます。

$ yum repolist all | grep remi
 * remi-safe: mirror.bebout.net
remi                              Remi's RPM repository for Enterpr 無効
remi-debuginfo/x86_64             Remi's RPM repository for Enterpr 無効
remi-glpi91                       Remi's GLPI 9.1 RPM repository fo 無効
remi-glpi92                       Remi's GLPI 9.2 RPM repository fo 無効
remi-glpi93                       Remi's GLPI 9.3 RPM repository fo 無効
remi-glpi94                       Remi's GLPI 9.4 RPM repository fo 無効
remi-modular                      Remi's Modular repository for Ent 無効
remi-modular-test                 Remi's Modular testing repository 無効
remi-php54                        Remi's PHP 5.4 RPM repository for 無効
remi-php55                        Remi's PHP 5.5 RPM repository for 無効
remi-php55-debuginfo/x86_64       Remi's PHP 5.5 RPM repository for 無効
remi-php56                        Remi's PHP 5.6 RPM repository for 無効
remi-php56-debuginfo/x86_64       Remi's PHP 5.6 RPM repository for 無効
remi-php70                        Remi's PHP 7.0 RPM repository for 無効
remi-php70-debuginfo/x86_64       Remi's PHP 7.0 RPM repository for 無効
remi-php70-test                   Remi's PHP 7.0 test RPM repositor 無効
remi-php70-test-debuginfo/x86_64  Remi's PHP 7.0 test RPM repositor 無効
remi-php71                        Remi's PHP 7.1 RPM repository for 無効
remi-php71-debuginfo/x86_64       Remi's PHP 7.1 RPM repository for 無効
remi-php71-test                   Remi's PHP 7.1 test RPM repositor 無効
remi-php71-test-debuginfo/x86_64  Remi's PHP 7.1 test RPM repositor 無効
remi-php72                        Remi's PHP 7.2 RPM repository for 無効
remi-php72-debuginfo/x86_64       Remi's PHP 7.2 RPM repository for 無効
remi-php72-test                   Remi's PHP 7.2 test RPM repositor 無効
remi-php72-test-debuginfo/x86_64  Remi's PHP 7.2 test RPM repositor 無効
remi-php73                        Remi's PHP 7.3 RPM repository for 無効
remi-php73-debuginfo/x86_64       Remi's PHP 7.3 RPM repository for 無効
remi-php73-test                   Remi's PHP 7.3 test RPM repositor 無効
remi-php73-test-debuginfo/x86_64  Remi's PHP 7.3 test RPM repositor 無効
remi-php74                        Remi's PHP 7.4 RPM repository for 無効
remi-php74-debuginfo/x86_64       Remi's PHP 7.4 RPM repository for 無効
remi-php74-test                   Remi's PHP 7.4 test RPM repositor 無効
remi-php74-test-debuginfo/x86_64  Remi's PHP 7.4 test RPM repositor 無効
remi-php80                        Remi's PHP 8.0 RPM repository for 無効
remi-php80-debuginfo/x86_64       Remi's PHP 8.0 RPM repository for 無効
remi-php80-test                   Remi's PHP 8.0 test RPM repositor 無効
remi-php80-test-debuginfo/x86_64  Remi's PHP 8.0 test RPM repositor 無効
remi-safe                         Safe Remi's RPM repository for En 有効:  4,124
remi-safe-debuginfo/x86_64        Remi's RPM repository for Enterpr 無効
remi-test                         Remi's test RPM repository for En 無効
remi-test-debuginfo/x86_64        Remi's test RPM repository for En 無効

Remi-safe リポジトリと注意点

remiリポジトリにはこれだけのリポジトリがあるのですが、デフォルトで有効になっているのは「remi-safe」のみです。

remi-safeリポジトリとは、(参考:The "remi-safe" repository ?

The "remi-safe" repository ?

On Enterprise Linux, the new "remi-safe" repository is now enabled by default.

This repository doesn't override/replace any package of the distribution. It provides a set of packages, mostly PHP extensions, not yet in EPEL. It also provides recent version of some libraries which can be installed beside system version (e.g. gd-last).

New feature: it provides all depedencies for packages in the other repositories (so "remi" is no more required)

つまり、ディストリビューションのデフォルトのパッケージを上書き/置き換えすることのないようなパッケージ構成を提供してるという感じですね。もちろん、主にPHPまわりのパッケージになります。

では、具体的にどのようなパッケージを提供しているか覗いてみます。remi-safe.repoを見ると、デフォルトで

enabled=1となっていることが確認できます。。

$ cat /etc/yum.repos.d/remi-safe.repo 
# This repository is safe to use with RHEL/CentOS base repository
# it only provides additional packages for the PHP stack
# all dependencies are in base repository or in EPEL

[remi-safe]
name=Safe Remis RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/safe/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/safe/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/safe/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-safe-debuginfo]
name=Remi's RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-remi/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

含まれるパッケージを確認するには、下記の部分チェックします。

#baseurl=http://rpms.remirepo.net/enterprise/7/safe/$basearch/

変数$basearchはベースのアーキテクチャということですので、例えば私の環境では"x86_64"となります。

分からない場合は、一つ上位のディレクトリ( http://rpms.remirepo.net/enterprise/7/safe/ )にアクセスすれば選択できます。

php54-build-2.1-2.el..>  2015-11-13 15:08    4.2K     
php54-build-2.1-4.el..>  2016-03-10 14:08    4.4K     
php54-mysqlnd-qc-pan..>  2014-09-01 07:21    18K  
php54-php-5.4.45-17...>  2019-01-11 13:38    1.4M     
php54-php-5.4.45-18...>  2019-10-22 13:41    1.4M     
php54-php-bcmath-5.4..>  2019-01-11 13:38    61K  
php54-php-bcmath-5.4..>  2019-10-22 13:41    61K  
php54-php-brotli-0.1..>  2021-01-22 07:45    17K  
php54-php-brotli-0.1..>  2021-01-23 08:03    17K  
php54-php-channel-ho..>  2014-09-15 18:55    3.7K     
php54-php-cli-5.4.45..>  2019-01-11 13:38    2.8M     
php54-php-cli-5.4.45..>  2019-10-22 13:41    2.8M     
php54-php-common-5.4..>  2019-01-11 13:38    575K     
php54-php-common-5.4..>  2019-10-22 13:41    575K     
php54-php-dba-5.4.45..>  2019-01-11 13:38    58K  
php54-php-dba-5.4.45..>  2019-10-22 13:41    58K  
php54-php-devel-5.4...>  2019-01-11 13:38    607K     
php54-php-devel-5.4...>  2019-10-22 13:41    607K     

なにやらたくさんのパッケージが確認できますね。PHPに関わる部分は例えば上記のような感じ。

remi-safeではPHP5.4.45やその依存パッケージがインストールされることが分かります。

さて、ここで注意点です!

yum list installed コマンドで、パッケージ取得先のリポジトリを確認できます。

$ sudo yum list installed | grep php
php.x86_64                             5.4.16-48.el7                   @base    
php-cli.x86_64                         5.4.16-48.el7                   @base    
php-common.x86_64                      5.4.16-48.el7                   @base    
php-gd.x86_64                          5.4.16-48.el7                   @base    
php-mbstring.x86_64                    5.4.16-48.el7                   @base    
php-mcrypt.x86_64                      5.4.16-9.el7                    @epel    
php-mysqlnd.x86_64                     5.4.16-48.el7                   @base    
php-pdo.x86_64                         5.4.16-48.el7                   @base    
php-xml.x86_64                         5.4.16-48.el7                   @base    
php-xmlrpc.x86_64                      5.4.16-48.el7                   @base  

CentOS7に標準であるPHP5.4をインストールした状態です。リポジトリを指定せず、「yum install php php-*」のような形ですね。baseリポジトリと、デフォルトでenabledのepelが参照されたことが分かります。

もし、remiリポジトリをインストールして、remi-safeが有効な状態であったなら、php5.4.45がインストールされていたはずです。

さて、PHPをインストールする際に、remi-safeとそれ以外のバージョンの、例えばremi-php72などのリポジトリを併用している場合、PHP本体のパッケージが二つ入ってしまう場合があります。

例えば、remi-safeのphp72-phpとremi-php72のphpという二つのパッケージが混在してしまうケースです。

remi-safeでインストールしたphp(php72-php)に対してremi-php72のphp-pdoやphp-mysqlなどを入れても、自動的に依存関係が関連づけられることはありません。

こういったことが起こらないよう、PHPのインストール時にはどのリポジトリを利用するか、明確に指定することが望ましいのです。基本的にはremi-safeは使わない方がいいのかな〜と考えています。

参考:CentOS7 PHP7.2でmysqli拡張を有効化できない

リポジトリの有効/無効の切り替え、指定の方法

使用するリポジトリを明確に指定するには、二通りの方法があります。

一つは、.repoファイルでenabledの値によって決める方法。

もう一つが、yum install時に--enablerepoオプションで指定する方法、

どちらも行なった場合は後者が優先します。

個人的には、remi-safeはデフォで無効(enabled=0)にしておき、インストール時には--enablerepoオプションでバージョンを明示的に指定するというのがいいのかな、と思います。

.repoのenabledの値を変更する

.repoファイルを編集する

$ sudo vi /etc/yum.repos.d/remi-safe.repo

# This repository is safe to use with RHEL/CentOS base repository
# it only provides additional packages for the PHP stack
# all dependencies are in base repository or in EPEL

[remi-safe]
name=Safe Remi's RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/safe/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/safe/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/safe/mirror
enabled=1 # <= ここを0に変更
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-safe-debuginfo]
name=Remi's RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-remi/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

コマンド yum-config-managerを使う

yum-config-managerコマンドを利用するにはyum-utilsのインストールが必要です。

$ sudo yum -y install yum-utils

他にもたくさんの便利機能がインストールされますので、入れておきましょう。

で、yum-config-managerコマンドを用いて特定のレポジトリを無効化することができます。

$ sudo yum-config-manager --disable remi-safe
読み込んだプラグイン:fastestmirror
================================================================ repo: remi-safe =================================================================
[remi-safe]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7
baseurl = 
cache = 0
cachedir = /var/cache/yum/x86_64/7/remi-safe
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage = 
enabled = 0 # <= ここが変わった!!
enablegroups = True
exclude = 
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7/remi-safe/gpgcadir
gpgcakey = 
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7/remi-safe/gpgdir
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
hdrdir = /var/cache/yum/x86_64/7/remi-safe/headers
http_caching = all
includepkgs = 
ip_resolve = 
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid = 
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink = 
minrate = 0
mirrorlist = http://cdn.remirepo.net/enterprise/7/safe/mirror
mirrorlist_expire = 86400
name = Safe Remis RPM repository for Enterprise Linux 7 - x86_64
old_base_cache_dir = 
password = 
persistdir = /var/lib/yum/repos/x86_64/7/remi-safe
pkgdir = /var/cache/yum/x86_64/7/remi-safe/packages
proxy = False
proxy_dict = 
proxy_password = 
proxy_username = 
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert = 
sslclientcert = 
sslclientkey = 
sslverify = True
throttle = 0
timeout = 30.0
ui_id = remi-safe
ui_repoid_vars = releasever,
   basearch
username = 

このコマンドでは他にも色々なパラメータを操作できるようです。

インストール時に--enablerepoオプションで指定する

例えばphp5.4をインストールする際に、

$ sudo yum --enablerepo=remi-php54 install php php-gd php-mycrypt 〜 〜 〜

こんな感じで良いのですが、関連パッケージが「利用できません」と言われてしまうこともしばしば。

必要なパッケージが揃うように複数のリポジトリを指定したり、パッケージによっては個別にインストールしたり、ということが必要な場合もあります。

複数のリポジトリを指定する場合はカンマ区切りで記述します。

$ sudo yum --enablerepo=remi-php54,remi,epel install php-gd php-mycrypt php-mysqld 〜 〜 〜

ま、限りなくケースバイケースです(爆)

重要なのは、自分が何をやってるのか正確に理解できていることww

Remiリポジトリの超便利機能

さて、ここまでリポジトリについて見てきましたが、だいたいこの記事程度のことを把握できていれば困ることはあまりないと思います。

より理解を深めるには、リポジトリ云々というよりは、yumの機能について深く学習するのが良いでしょう。

最後に、remiリポジトリが用意してくれている超便利機能を紹介しますね。

Remi's RPM repository - Configuration wizard

上記ページを利用すると、「どのOSにどのバージョンのPHPを単複どちらで入れるか」を選択することで、やるべきことを教えてくれるのです。

Operating system and version selection
Operating system:  CentOS 7 (maintained until June 2024)
Wanted PHP version: 5.4.45 (no upstream support since September 2015)
Type of installation: Default / Single version (simplest way)

Type of installationはsingleなら、そのOSに一つだけのPHPバージョンを、Multiple versionsなら同時に複数のバージョンを入れて切り替えながら使用するということで、通常はsingleでしょう。

そうすると、下記が表示されます。

CentOS 7 provides PHP version 5.4 in its official repository

WARNING, PHP version 5.4 have reached its eod of life, despite packages have security fix, you should consider a maintained version.

Command to install the EPEL repository configuration package:
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Command to install the Remi repository configuration package:
    yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Command to install the yum-utils package (for the yum-config-manager command):
    yum install yum-utils

You want a single version which means replacing base packages from the distribution

Packages have the same name than the base repository, ie php-*

Some common dependencies are available in remi-safe repository, which is enabled by default

PHP version 5.4 packages are available for CentOS 7 in remi-php54 repository

Command to enable the repository:
    yum-config-manager --disable 'remi-php*'
    yum-config-manager --enable   remi-php54

You can check the list of the enabled repositories:
    yum repolist

If the priorities plugin is enabled, ensure remi-php54 have higher priority (a lower value) than base and updates

Command to upgrade (the repository only provides PHP):
    yum update

Command to install additional packages:
    yum install php-xxx

Command to check the installed version and available extensions:
    php --version
    php --modules

大体この指示に従うとやりたいことはできる、ということで、初学者にも大変親切なウィザードになっています。ぜひ一度見ておいてください。

今回はここまで!!!

開発環境CentOS,epel,php,remi

Posted by 大将