CentOS6 に yum で PHP7.1 を入れた成功事例とその依存関係

実務忙しくてVPSセットアップするのしばらく放置してたけど、やっと時間できたからPHP入れるところから再開した。
それで、もっと簡単に出来るとタカをくくっていたけど、意外と大変で、ちゃんと入るまで2、3日掛かってしまった。
でも学習というのは素晴らしいもので、ごにょごにょやっているうちに理解は自然と深まっていい体験だった。
なんでCentOS 6 なのかというと、さくらのVPSで標準になっていたのと、世の中の情報が多くて枯れていそうなのと、初心者にはいいかな?と思ったからだけど、結果的には別に 7 でも良かった気はする・・。

最初から言いだすと紆余曲折あって訳わからなくなるので、コアの部分だけ書いておく。
なお、前提として、CentOS 6系のEPELリポジトリRemiリポジトリは別途インストール済み。

最終的にはこんな感じの命令ですんなり入った。

yum install gd-last php71 php71-php php71-php-cli php71-php-common php71-php-gd php71-php-mbstring php71-php-mcrypt php71-php-pdo php71-php-mysqli php71-php-xml

でもいきなりこれだけでは入らない。

/etc/yum.repos.d/ の中に、各種リポジトリ用の設定ファイルがあり、まず、
CentOS-Base.repo というのがあるが、その中の着目部分だけを抜粋して書くけれども、次のようにした。

-- CentOS-Base.repo --

[base]
enabled=1

[updates]
enabled=1

[extras]
enabled=1

[centosplus]
enabled=1

[contrib]
enabled=1

全ての項目の enabled の値を 1 にした。初期で書かれていないものには付け加えた。
最後の方の項目を有効にすべきなのかどうかは、あまりよく分かっていないけどとりあえず全部有効にした。

次に、epel.repo

-- epel.repo --

[epel]
enabled=1

たぶん初期状態でこうなっていると思うけど、そのまま enabled=1 にしておく。

それから、remi.repo

-- remi.repo --
[remi]
enabled=1
priority=10
includepkgs=php* mysql*

初期状態で enabled=0 だったので変更し、新たに priority を書き加え、初期よりも優先順位を高くした。
また、includepkgs にphp関連とmysql関連を指定して、それらのパッケージだけ、remiを参照するように設定。

さらに、remi-php71.repo (7.1を入れるから71)

-- remi-php71 --

[remi-php71]
enabled=1
priority=10

remiの設定と同様、enabled=0 だったので変更し、新たに priority を書き加え、初期よりも優先順位を高くした。
もしかしてこの場合の優先順位は書かなくてもいいのかな? ちょっと分からない。

最後に、remi-safe.repo

-- remi-safe.repo --

[remi-safe]
enabled=1

初期状態でこうなので、そのままにしておく。

以上、つまりはphp7.1関連のパッケージはremiリポジトリを参照するように仕向け、それ以外のパッケージは適宜、他のリポジトリを参照するような設定になっている。
この設定をしたうえで冒頭にある命令を行うと、すんなり入った。

参考までに、mysql5.7 も入れたので、mysql-community.repo の設定も行なっている。

-- mysql-community.repo --

[mysql-connectors-community]
enabled=1

[mysql-tools-community]
enabled=1

[mysql57-community]
enabled=1

初期状態がどうだったか、よく分からなくなってしまったが、一応、このようにそれぞれ有効に設定している。

この状態でインストール成功した際の依存関連のメッセージは下記の通り。(命令の通りあくまでPHP関連のみ)
テキストエディタにコピーしたものをキャプチャして画像で貼っておく。

dependencies

このあと追加で、php71-php-pear をインストールしたら、同時に php71-php-process も入った。

 

で、ここに到るまでなんでごにょごにょしてしまったかというと、

(1) ほぼ最初に読んだあるブログに書かれていたリポジトリの設定を、意味わからず適当に解釈して書いたので中途半端になっていた。

(2) コマンドラインでリポジトリの有効・無効を書く方法がよく紹介されているけれども(例えば下記のような)

yum install --enablerepo=remi-php71 --disablerepo=base php71 php71-php

リポジトリの設定を正しく書いていればこの書き方は不要なんだけど、なんとなく(笑)書いてしまって、(1)の作業内容との組み合わせがおかしくなっていたんだと思う。
また、–enablerepo の方だけを書いている記事も多いので、リポジトリ設定で enable になっているものはそのまま適用されてしまうから、そういうミスマッチもあったのだろうと思う。

(3) 依存関係でエラーになった場合に、エラーメッセージの意味がよく分かってなかった。
依存しているパッケージは、一連のプログラムだけでなく、共有ライブラリ(.so)などもあって、最初、それらを個別に全部入れていかないといけないのか?と思って途方に暮れたわけなんだけど、上記のように取りに行くリポジトリが正しく設定(あるいはどれが優先とか)されていれば、基本的なパッケージ名を指定するだけで関連パッケージは勝手に入るので、個別のことを考えなくても良かったのだ。

という訳で、PHPやMySQLに関してはセットアップ完了できた。

あと、phpMyAdmin に関する話もあるが、それは次回の記事に書こうと思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です