※rpm作成環境の構築はこちら ソースコードを入手し、さくっとrpmを作成してみる。
まずは標準のレポジトリから入れてみる。
$ sudo yum install php ・ ・ Error: Package: php-5.3.3-40.el6_6.x86_64 (updates) Requires: httpd-mmn = 20051115 Installed: httpd-2.4.12-1.x86_64 (installed) httpd-mmn = 20120211 Available: httpd-2.2.15-39.el6.centos.x86_64 (base) httpd-mmn = 20051115 ・ ・となった。バージョンも5.3.3となっているし、httpd 2.4が入ってる環境だと、エラーが出てしまう見たい。 原因はメッセージの通り、httpd 2.2.15までにしか対応していない。ということなのでしょう。 ということで、ソース化からrpmを作ってみることにした。phpのサイトから入手して、、
$ wget http://jp1.php.net/get/php-5.6.5.tar.bz2/from/this/mirror -O php-5.6.5.tar.bz2 $ rpmbuild -bb php-5.6.5.tar.bz2 error: File /home/hayashi/rpmbuild/SOURCES/php-5.6.5.tar.bz2 does not appear to be a specfile.specファイルがないと・・確かにない。ということで、IUSのサイトからSRPMを入手し、試す。
$ cd ~/rpmbuild/SRPMS $ wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/SRPMS/php56u-5.6.5-1.ius.centos6.src.rpm $ rpmbuild --rebuild --clean php56u-5.6.5-1.ius.centos6.src.rpm ・ ・ ・ error: Failed build dependencies: bzip2-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 curl-devel >= 7.9 is needed by php56u-5.6.5-1.ius.el6.x86_64 pam-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 httpd-devel < 2.4 is needed by php56u-5.6.5-1.ius.el6.x86_64 libedit-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libtool-ltdl-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 systemtap-sdt-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libc-client-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 firebird-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 net-snmp-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libxslt-devel >= 1.0.18-1 is needed by php56u-5.6.5-1.ius.el6.x86_64 t1lib-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libjpeg-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libpng-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 freetype-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libXpm-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libvpx-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 gmp-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 tokyocabinet-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libmcrypt-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libtidy-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 aspell-devel >= 0.50.0 is needed by php56u-5.6.5-1.ius.el6.x86_64 recode-devel is needed by php56u-5.6.5-1.ius.el6.x86_64 libicu-devel >= 4.0 is needed by php56u-5.6.5-1.ius.el6.x86_64 enchant-devel >= 1.2.4 is needed by php56u-5.6.5-1.ius.el6.x86_64 $ yum install bzip2-devel curl-devel pam-devel libedit-devel libtool-ltdl-devel systemtap-sdt-devel / libc-client-devel firebird-devel net-snmp-devel libxslt-devel t1lib-devel libjpeg-devel libpng-devel / freetype-devel libXpm-devel libvpx-devel gmp-devel tokyocabinet-devel libmcrypt-devel libtidy-devel / aspell-devel recode-devel libicu-devel enchant-devel $ sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/httpd-devel-2.4.12-1.x86_64.rpm error: Failed build dependencies: httpd-devel < 2.4 is needed by php56u-5.6.5-1.ius.el6.x86_64おっと、、httpd-develはapache2.4.12と合わせてインストールしたが、、これを見ると2.2じゃないとダメということか?httpdとhttpd-develのバージョンを別々のものを入れてもよいのか?はわからなかった。ということで、php 5.5.xを 探してみる。 ちなみにphpの古いバージョンは、IUSのサイトのアーカイブを参照。
まずは、5.5系の最新版である5.5.21。
$ mkdir /tmp/php/ $ wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/SRPMS/php55u-5.5.21-1.ius.el6.src.rpm $ rpm2cpio php55u-5.5.21-1.ius.centos6.src.rpm | cpio -id $ less php55u.spec
・ ・ %if 0%{?rhel} < 7 BuildRequires: httpd-devel < 2.4 %else BuildRequires: httpd-devel %endif ・ ・となっており、5.6とおなじく、redhet6(この場合はcentos6)だと、httpd-develは2.4未満じゃないとダメらしい。次は5.5.20。5.5.20のspecを見ると、
・ ・ BuildRequires: httpd-devel >= 2.0.46-1, pam-devel ・ ・となっており、大丈夫そうです。ということで、5.5.20で進める。
$ cd ~/rpmbuild/SRPM $ rpmbuild --rebuild --clean php55u-5.5.20-1.ius.centos6.src.rpm ・ ・ Sorry, I cannot run apxs. Possible reasons follow: 1. Perl is not installed 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs 3. Apache was not built using --enable-so (the apxs usage page is displayed) The output of /usr/sbin/apxs follows: ./configure: line 8754: /usr/sbin/apxs: No such file or directory configure: error: Aborting error: Bad exit status from /var/tmp/rpm-tmp.bYrvIJ (%build) ・ ・というエラーがでた。apache2.4からは、apxsのパスは、「/usr/bin/apxs」に変更になったとの ことで、specファイルを変更する。
$ cd /tmp/php/;rm -f * $ rpm2cpio php55u-5.5.20-1.ius.centos6.src.rpm | cpio -id $ cp php55u.spec ~/rpmbuild/SPECS/ $ cd ~/rpmbuild/SPECS/ $ vi php55u.spec
# /usr/sbin/apsx with httpd < 2.4 and defined as /usr/bin/apxs with httpd >= 2.4 %{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} ↓ # /usr/sbin/apsx with httpd < 2.4 and defined as /usr/bin/apxs with httpd >= 2.4 #%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} %{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_bindir}/apxs}}これでいけるかな・・
$ rpmbuild -bb --clean ~/rpmbuild/SPECS/php55u.spec ・ ・ + umask 022 + cd /home/hayashi/rpmbuild/BUILD + rm -rf php-5.5.20 + exit 0 $ cd ~/rpmbuild/RPMS/x86_64/ $ ls php55u-*5.5.20* php55u-5.5.20-1.ius.el6.x86_64.rpm php55u-mbstring-5.5.20-1.ius.el6.x86_64.rpm php55u-bcmath-5.5.20-1.ius.el6.x86_64.rpm php55u-mcrypt-5.5.20-1.ius.el6.x86_64.rpm php55u-cli-5.5.20-1.ius.el6.x86_64.rpm php55u-mssql-5.5.20-1.ius.el6.x86_64.rpm php55u-common-5.5.20-1.ius.el6.x86_64.rpm php55u-mysqlnd-5.5.20-1.ius.el6.x86_64.rpm php55u-dba-5.5.20-1.ius.el6.x86_64.rpm php55u-odbc-5.5.20-1.ius.el6.x86_64.rpm php55u-debuginfo-5.5.20-1.ius.el6.x86_64.rpm php55u-opcache-5.5.20-1.ius.el6.x86_64.rpm php55u-devel-5.5.20-1.ius.el6.x86_64.rpm php55u-pdo-5.5.20-1.ius.el6.x86_64.rpm php55u-embedded-5.5.20-1.ius.el6.x86_64.rpm php55u-pgsql-5.5.20-1.ius.el6.x86_64.rpm php55u-enchant-5.5.20-1.ius.el6.x86_64.rpm php55u-process-5.5.20-1.ius.el6.x86_64.rpm php55u-fpm-5.5.20-1.ius.el6.x86_64.rpm php55u-pspell-5.5.20-1.ius.el6.x86_64.rpm php55u-gd-5.5.20-1.ius.el6.x86_64.rpm php55u-recode-5.5.20-1.ius.el6.x86_64.rpm php55u-gmp-5.5.20-1.ius.el6.x86_64.rpm php55u-snmp-5.5.20-1.ius.el6.x86_64.rpm php55u-imap-5.5.20-1.ius.el6.x86_64.rpm php55u-soap-5.5.20-1.ius.el6.x86_64.rpm php55u-interbase-5.5.20-1.ius.el6.x86_64.rpm php55u-tidy-5.5.20-1.ius.el6.x86_64.rpm php55u-intl-5.5.20-1.ius.el6.x86_64.rpm php55u-xml-5.5.20-1.ius.el6.x86_64.rpm php55u-ldap-5.5.20-1.ius.el6.x86_64.rpm php55u-xmlrpc-5.5.20-1.ius.el6.x86_64.rpm php55u-litespeed-5.5.20-1.ius.el6.x86_64.rpm成功!wordpressを想定してインストールしてみる。
$ sudo rpm -Uvh php55u-5.5.20-1.ius.el6.x86_64.rpm php55u-mbstring-5.5.20-1.ius.el6.x86_64.rpm php55u-mssql-5.5.20-1.ius.el6.x86_64.rpm error: Failed dependencies: php55u-common(x86-64) = 5.5.20-1.ius.el6 is needed by php55u-5.5.20-1.ius.el6.x86_64 php55u-cli(x86-64) = 5.5.20-1.ius.el6 is needed by php55u-5.5.20-1.ius.el6.x86_64 php55u-common = 5.5.20-1.ius.el6 is needed by php55u-mbstring-5.5.20-1.ius.el6.x86_64 php55u-pdo = 5.5.20-1.ius.el6 is needed by php55u-mssql-5.5.20-1.ius.el6.x86_64 $ sudo rpm -Uvh php55u-5.5.20-1.ius.el6.x86_64.rpm php55u-mbstring-5.5.20-1.ius.el6.x86_64.rpm php55u-mssql-5.5.20-1.ius.el6.x86_64.rpm php55u-common-5.5.20-1.ius.el6.x86_64.rpm php55u-cli-5.5.20-1.ius.el6.x86_64.rpm php55u-pdo-5.5.20-1.ius.el6.x86_64.rpm error: Failed dependencies: php55u-pecl-jsonc is needed by php55u-common-5.5.20-1.ius.el6.x86_64まだかぁ。先は長いっす。この後も出てきます。ちょっと関係性を整理しておく。 php55u-common ⇒php55u-pecl-jsonc(*) ⇒php55u-devel ⇒php55u-cli ⇒php55u-common ⇒php55u-pecl-jsonc-devel(*) ⇒php55u-pear(*) ⇒php55u-cli ⇒php55u-common ⇒php55u-xml ⇒php55u-common とループしちゃってます。うち、(*)についてはコンパイルが必要になります。ので、、 コンパイルに必要となるphp55u-cli、php55u-common、php55u-xml、php55u-develについては、依存関係を無視して インストールする必要があるってことですね。
$ sudo rpm -Uvh --nodeps php55u-cli-5.5.20-1.ius.el6.x86_64.rpm php55u-common-5.5.20-1.ius.el6.x86_6 4.rpm php55u-xml-5.5.20-1.ius.el6.x86_64.rpm php55u-devel-5.5.20-1.ius.el6.x86_64.rpm残りのパッケージについて、IUSで再度入手して進める。
$ wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/SRPMS/php55u-pear-1.9.5-2.ius.centos6.src.rpm $ rpmbuild --rebuild --clean php55u-pear-1.9.5-2.ius.centos6.src.rpm $ sudo rpm -Uvh ../RPMS/noarch/php55u-pear-1.9.5-2.ius.el6.noarch.rpm error: Failed dependencies: php55u-posix is needed by php55u-pear-1:1.9.5-2.ius.el6.noarchまだあるんですか。。長すぎる。php55u-posixのSRPMをIUSのサイトで調べたけど、見当たらず。yumを使って調査をしてみた。まずはIUSのレポジトリを追加。
$ wget wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-13.ius.centos6.noarch.rpm $ sudo rpm -Uvh ius-release-1.0-13.ius.centos6.noarch.rpm $ sudo vi /etc/yum.repos.d/ius.repo
[ius] ・ ・ #enabled=1 enabled=0 ・ ・ [ius-debuginfo] ・ ・調査。
$ yum --enablerepo=ius provides php55u-posix Loaded plugins: fastestmirror, versionlock Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: ftp.kddilabs.jp * extras: ftp.riken.jp * ius: hkg.mirror.rackspace.com * updates: ftp.riken.jp php55u-process-5.5.21-1.ius.centos6.x86_64 : Modules for PHP script using system process interfaces Repo : ius Matched from: Other : php55u-posixということで、php55u-processを入れればいいみたい。
$ sudo rpm -Uvh ../RPMS/noarch/php55u-pear-1.9.5-2.ius.el6.noarch.rpm ../RPMS/x86_64/php55u-process-5.5.20-1.ius.el6.x86_64.rpm無事成功。残るは、、php55u-pecl-jsoncとphp55u-pecl-jsonc-develです。
$ wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/SRPMS/php55u-pecl-jsonc-1.3.6-3.ius.centos6.src.rpm $ rpmbuild --rebuild --clean php55u-pecl-jsonc-1.3.6-3.ius.centos6.src.rpm $ cd ../RPMS/x86_64/ $ sudo rpm -Uvh php55u-pecl-jsonc-1.3.6-3.ius.el6.x86_64.rpm php55u-pecl-jsonc-devel-1.3.6-3.ius.el6.x86_64.rp $ sudo rpm -Uvh php55u-5.5.20-1.ius.el6.x86_64.rpm php55u-mbstring-5.5.20-1.ius.el6.x86_64.rpm php55u-pdo-5.5.20-1.ius.el6.x86_64.rpm php55u-mysqlnd-5.5.20-1.ius.el6.x86_64.rpmということで、php 5.5.20を無事インストールすることができました。 wordPress $ sudo rpm -Uvh php55u-5.5.14-1.ius.el6.x86_64.rpm php55u-common-5.5.14-1.ius.el6.x86_64.rpm php55u-cli-5.5.14-1.ius.el6.x86_64.rpm php55u-opcache-5.5.14-1.ius.el6.x86_64.rpm php55u-pdo-5.5.14-1.ius.el6.x86_64.rpm php55u-mysqlnd-5.5.14-1.ius.el6.x86_64.rpm php55u-mbstring-5.5.14-1.ius.el6.x86_64.rpm $ sudo rpm -Uvh php55u-fpm-5.5.14-1.ius.el6.x86_64.rpm $ sudo chkconfig php-fpm on http.conf LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so #LoadModule mpm_prefork_module lib64/httpd/modules/mod_mpm_prefork.so root:password mysql mysql> create database wp; mysql> grant all privileges on wp.* to wp@localhost identified by "wppassword";