Syntax Error.

[Sy] Amazon Linux (2017.03-release) に remi リポジトリをインストールして有効にする手順

2017/10/02

Amazon Linux (2017.03-release) への remi リポジトリの追加と確認方法、リポジトリの有効・無効の切り替えについて説明します。

1. remi をインストール

インストールは以下のコマンドでできます。

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Retrieving http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
warning: /var/tmp/rpm-tmp.8k1bpo: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:remi-release-6.9-1.el6.remi      ################################# [100%]

インストールはこれで完了です!

以降、本当にリポジトリが追加されているかどうかの確認方法とリポジトリの有効・無効を切り替えて使う方法についての説明になります。

2. remi がインストールされているか確認

/etc/yum.repos.d/配下にremi.repoなどが追加されているはずです。

$ ls -al /etc/yum.repos.d/
total 56
drwxr-xr-x  2 root root 4096 Oct  2 13:51 .
drwxr-xr-x 83 root root 4096 Oct  2 10:17 ..
-rw-r--r--  1 root root 1014 Aug 10 23:26 amzn-main.repo
-rw-r--r--  1 root root  327 Aug 10 23:26 amzn-nosrc.repo
-rw-r--r--  1 root root 1041 Aug 10 23:26 amzn-preview.repo
-rw-r--r--  1 root root 1041 Aug 10 23:26 amzn-updates.repo
-rw-r--r--  1 root root  957 Mar  1  2013 epel.repo
-rw-r--r--  1 root root 1056 Mar  1  2013 epel-testing.repo
-rw-r--r--  1 root root  457 Jun 30 12:13 remi-php54.repo    <- 追加
-rw-r--r--  1 root root 1316 Jun 30 12:13 remi-php70.repo    <- 追加
-rw-r--r--  1 root root 1316 Jun 30 12:13 remi-php71.repo    <- 追加
-rw-r--r--  1 root root 1316 Jun 30 12:13 remi-php72.repo    <- 追加
-rw-r--r--  1 root root 2609 Jun 30 12:13 remi.repo          <- 追加
-rw-r--r--  1 root root  751 Jun 30 12:13 remi-safe.repo     <- 追加

ただ、これだけではまだ確認としては中途半端です。

各repoファイルには、例えばremi-safe.repoの中身がこうなっているように、複数のリポジトリの有効・無効の設定が書いてあります。

$ cat 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 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/safe/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/6/safe/httpsmirror
mirrorlist=http://rpms.remirepo.net/enterprise/6/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 6 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/6/debug-remi/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

この場合、remi-safe.repoというファイルには、remi-safe,remi-safe-debuginfoという2つのリポジトリについての設定が書いてあることがわかります。

そしてそれぞれの設定値で、enabled=1またはenabled=0というものがあり、これが 1の場合は有効、0の場合は無効 という設定になります。

この設定の場合、例えば$ sudo yum install xxx とした場合のパッケージの検索対象に、remi-safeリポジトリは(enabled=1なので)含まれますが、remi-safe-debuginfoは(enabled=0なので)含まれません。

各リポジトリの有効・無効状態の確認は、以下コマンドで確認できます。

有効なリポジトリを見たい

$ yum repolist enabled

Loaded plugins: priorities, update-motd, upgrade-helper
11 packages excluded due to repository priority protections
repo id                             repo name                                                                 status
!amzn-main/latest                   amzn-main-Base                                                               5,668
!amzn-updates/latest                amzn-updates-Base                                                            1,616
remi-safe                           Safe Remi's RPM repository for Enterprise Linux 6 - x86_64                2,180+11
repolist: 9,464

無効なリポジトリを見たい

$ yum repolist disabled

Loaded plugins: priorities, update-motd, upgrade-helper
repo id                             repo name
amzn-main-debuginfo/latest          amzn-main-debuginfo
amzn-main-source/latest             amzn-main-source
amzn-nosrc/latest                   amzn-nosrc-Base
amzn-preview/latest                 amzn-preview-Base
amzn-preview-debuginfo/latest       amzn-preview-debuginfo
amzn-preview-source/latest          amzn-preview-source
amzn-updates-debuginfo/latest       amzn-updates-debuginfo
amzn-updates-source/latest          amzn-updates-source
epel/x86_64                         Extra Packages for Enterprise Linux 6 - x86_64
epel-debuginfo/x86_64               Extra Packages for Enterprise Linux 6 - x86_64 - Debug
epel-source/x86_64                  Extra Packages for Enterprise Linux 6 - x86_64 - Source
epel-testing/x86_64                 Extra Packages for Enterprise Linux 6 - Testing - x86_64
epel-testing-debuginfo/x86_64       Extra Packages for Enterprise Linux 6 - Testing - x86_64 - Debug
epel-testing-source/x86_64          Extra Packages for Enterprise Linux 6 - Testing - x86_64 - Source
remi                                Remi's RPM repository for Enterprise Linux 6 - x86_64
remi-debuginfo/x86_64               Remi's RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php54                          Remi's PHP 5.4 RPM repository for Enterprise Linux 6 - x86_64
remi-php55                          Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - x86_64
remi-php55-debuginfo/x86_64         Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php56                          Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - x86_64
remi-php56-debuginfo/x86_64         Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php70                          Remi's PHP 7.0 RPM repository for Enterprise Linux 6 - x86_64
remi-php70-debuginfo/x86_64         Remi's PHP 7.0 RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php70-test                     Remi's PHP 7.0 test RPM repository for Enterprise Linux 6 - x86_64
remi-php70-test-debuginfo/x86_64    Remi's PHP 7.0 test RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php71                          Remi's PHP 7.1 RPM repository for Enterprise Linux 6 - x86_64
remi-php71-debuginfo/x86_64         Remi's PHP 7.1 RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php71-test                     Remi's PHP 7.1 test RPM repository for Enterprise Linux 6 - x86_64
remi-php71-test-debuginfo/x86_64    Remi's PHP 7.1 test RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php72                          Remi's PHP 7.2 RPM repository for Enterprise Linux 6 - x86_64
remi-php72-debuginfo/x86_64         Remi's PHP 7.2 RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-php72-test                     Remi's PHP 7.2 test RPM repository for Enterprise Linux 6 - x86_64
remi-php72-test-debuginfo/x86_64    Remi's PHP 7.2 test RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-safe-debuginfo/x86_64          Remi's RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
remi-test                           Remi's test RPM repository for Enterprise Linux 6 - x86_64
remi-test-debuginfo/x86_64          Remi's test RPM repository for Enterprise Linux 6 - x86_64 - debuginfo
repolist: 0

3. インストールしたリポジトリを使うには?

remi-safe-debuginfoリポジトリのように、インストール後に最初からenabled=1になっているリポジトリは何も考えずに yum installをすると良いので簡単です。

では初期設定がenabled=0になっている場合はどうしたら良いのか?ですが、2つの方法があります。

リポジトリを有効にする方法その1:enabled=1に書き換える

シンプルに、repoファイルを編集してenabled=0となっているのをenabled=1に書き換えればOKです。

逆に無効にしたい場合はenabled=1からenabled=0に書き換えれば良いということです。

ただし、この方法を使う場合、常に有効になってしまうため過剰に新しいバージョンのパッケージがインストールされてしまったりして、意図しない環境ができあがる可能性があるので、できれば次の「その2」の方法をおすすめします。

リポジトリを有効にする方法その2:–enablerepoオプションを使う

例えばリポジトリにあるパッケージのリストを見たい場合、yum listというコマンドを使うことで確認できます。

デフォルトでは有効になっているリポジトリのみ検索対象になります。

例として、phpMyAdminを探す場合ですが、普通に実行すると何も検索されません。

$ yum list | grep phpMyAdmin
(phpMyAdminという文字が含まれるパッケージが一つもなく、何も出力されない)

当然、phpMyAdminをインストールしようとすると、エラーになってしまいます。

$ sudo yum install phpMyAdmin

Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                      | 2.1 kB  00:00:00
amzn-updates                                                                                   | 2.3 kB  00:00:00
remi-safe                                                                                      | 2.9 kB  00:00:00
remi-safe/primary_db                                                                           | 894 kB  00:00:03
11 packages excluded due to repository priority protections
No package phpMyAdmin available.     <- 「パッケージが見つからない」とエラーになってしまう
Error: Nothing to do

次に、enabled=0となっているepelリポジトリを有効にしてみます。この時に使うのが --enablerepoオプションで、このように書きます。

$ yum list --enablerepo=epel | grep phpMyAdmin
phpMyAdmin.noarch                      4.0.10.20-1.el6              epel

ひとつ該当するものがありました。この結果の意味は、 epelリポジトリを有効にすることで、phpMyAdminがインストールできるよ ということになるので、以下のようにすることで4.0.10.20-1というバージョンのphpMyAdminをインストールすることができます。

$ sudo yum install --enablerepo=epel phpMyAdmin

もう一つ試してみます。

実はepelだけでなく、remiにもphpMyAdminはあるので、次のようにすることで 別のバージョンのphpMyAdminを検索することができます。

$ yum list --enablerepo=remi | grep phpMyAdmin
phpMyAdmin.noarch                      4.7.4-1.el6.remi             remi

さっきとの違いは、--enablerepo=epel--enablerepo=remiか、です。

このように、 一時的に有効にするリポジトリを自由に切り替える ことで自分が作りたい環境に合ったバージョン(例えばPHP5.6を使っているのかPHP7.0を使っているのかでインストール可能なphpMyAdminのバージョンが違ったりします)のパッケージを入れやすくなります。

まとめ

remiリポジトリのインストール自体は簡単ですね。

あとはenabled=0のまま、必要なパッケージに合わせて--enablerepoオプションを適宜使っていくのがおすすめです。