yumのlistでバージョンを確認するのじゃ

おまとめ三行

PHPの7をインストールしたい場合はどうするか
listというオプションを使うと簡単に調べられます
パッケージ? モジュール?

ApacheやPHPをサーバーにインストールしたい場合、yumでインストールするなら一行で簡単にできます。

//Apache
# yum install httpd

//PHP
# yum install php

ただしこれだと自分の望むバージョンをインストールできないかもしれない。例えばAWSのEC2の場合、この記事を書いている時点では、上記のコマンドでインストールを実行すると、Apacheは2.2、PHPは5.3がイントールされます。

じゃあここで、Apacheの2.4やPHPの7をインストールしたい場合はどうするか。

そういう時は明示的にバージョンを指定してやむることでインストールできます。

//Apache2.4
# yum install httpd24

//PHP7.0
# yum install php70

「httpd」を「httpd24」、「php」を「php70」に変えています。「httpd2.4」みたいにピリオドはつけない。



PHPの本体をインストールできたら次の手順としてはPHP関連のパッケージのインストールになると思いますが、それらもやむれるものは同様のやり方でできます。

# yum install php-pear
# yum install php-gd
# yum install php-mbstring
# yum install php-mysqlnd

例えばこんな風にPEARやmbstringなどをインストールできます。

ただしPHPの本体をバージョン指定でインストールした場合、パッケージも互換性のあるバージョンを入れないと正しく動かない場合があります。あるいはインストール時に「このバージョンではダメだ」みたいなエラーが出ます。

今回はPHP7.0をインストールしたので、他もそれに対応したものを入れる。

# yum install php7-pear
# yum install php70-gd
# yum install php70-mbstring
# yum install php70-mysqlnd

考え方はさっきと同じです。パッケージ名にバージョンをつければいい。「php-gd70」ではなく、「php70-gd」という書き方になります。PEARの場合は「pear70-pear」ではなく「php7-pear」になります。0がない。

書き方を知っていれば特に迷うことはないのですが、知らないと「他と同じでphp70-pearじゃねえのか?」とか思いたくなっちゃいますよね。僕も実際にそうだろうと思ってやむろうとしたら「そんなパッケージはねえ!」ってLinuxに怒られてしまいました。



バージョンをつける時、関連したパッケージはどういう風に書けば良いのか調べるには、yumコマンドでlistというオプションを使うと簡単に調べられます。

# yum list

これでやむれるパッケージの一覧が表示される。ただし単純にリストを使うと全パッケージが表示されるので、膨大な量の一覧になってしまう。なのでPHPに関連したものだけを表示したい場合はgrepを使うと良いです。

# yum list | grep php

//結果の一部
php7-pear.noarch 1:1.10.1-1.24.amzn1 @amzn-main   
php70.x86_64     7.0.16-1.21.amzn1   @amzn-main    
php70-gd.x86_64  7.0.16-1.21.amzn1   @amzn-main   
php-pear.noarch  1:1.9.5-2.17.amzn1  amzn-main 
php.x86_64       5.3.29-1.8.amzn1    amzn-main
php-gd.x86_64    5.3.29-1.8.amzn1    amzn-main  

こんな感じのリストが出てきます。パッケージ名の横にバージョンが表示されます。phpやphp-gdの場合はバージョンが5.3.29であることが分かりますね。「amzn-main」の前に「@」がついているのはサーバーにインストール済みの状態を表します。






ちなみに現時点でもPHP7.1以降のバージョンが出てはいるのですが、そっちは単純にやむって入れることができないので今回はパスします。

ところでパッケージって言い方で良いんですかね? パッケージ? モジュール? あなたが知識の泉に落とすならどっち?

まだコメントはいただけてないみたい……
 もしかしたら何か関連しているかも?