Q: How do I update php, mysql, and apache on RHEL6 without breaking stuff?
A: Use the great packages from IUS!
1. set up the IUS repo
$ wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-11.ius.el6.noarch.rpm $ wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm $ sudo rpm -Uvh ius-release*.rpm epel-release*.rpm
3. See what php packages are available: yum list | grep -w ius | grep ^php
4. The “downside” (a minor inconvenience) of the greatness of the IUS is that the packages they build provides the same things as the original outdated redhat packages, but don’t obsolete them. This is intentional, and what makes me think it is the best way to obtain a current LAMP on RHEL or CentOS. What this boils down to is that the IUS packages have different names but cannot be installed at the same time as the RedHat/CentOS packages.
This means that we must uninstall the original packages (if they are installed) before we can install the more recent IUS packages.
IUS provides a neat yum plugin called “replace”, that can be used to do this en masse for a whole bunch of packages based on a certain name. If you have the stock packages “php”, “php-devel”, “php-common” and “php-cli” installed, you can “upgrade” them to the IUS php54 equivalents with a pretty oneliner like “yum replace php –replace-with php54“! (If you want to use the plugin, first install it with: “sudo yum install yum-plugin-replace“).
5. install the IUS packages the usual way if not using the replace plugin.
In case of RHEL6, postfix (terribly outdated 2.6.6) requires mysql-libs, so you cannot install mysql55 straight away. What I did was two-steps:
# yum erase postfix # yum install postfix php54 mysql55-server
This means that I uninstalled postfix which was dependent on mysql-libs, and then reinstalled it at the same time as php54 and mysql55. Then it uses mysql55-libs instead.
================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql55 x86_64 5.5.31-1.ius.el6 ius 9.1 M mysql55-server x86_64 5.5.31-1.ius.el6 ius 9.6 M php54 x86_64 5.4.16-1.ius.el6 ius 2.7 M postfix x86_64 2:2.6.6-2.2.el6_1 rhel-x86_64-server-6 2.0 M Installing for dependencies: apr x86_64 1.3.9-5.el6_2 rhel-x86_64-server-6 123 k apr-util x86_64 1.3.9-3.el6_0.1 rhel-x86_64-server-6 87 k apr-util-ldap x86_64 1.3.9-3.el6_0.1 rhel-x86_64-server-6 15 k httpd x86_64 2.2.15-28.el6_4 rhel-x86_64-server-6 821 k httpd-tools x86_64 2.2.15-28.el6_4 rhel-x86_64-server-6 73 k mailcap noarch 2.1.31-2.el6 rhel-x86_64-server-6 27 k mysql55-libs x86_64 5.5.31-1.ius.el6 ius 783 k mysqlclient16 x86_64 5.1.61-1.ius.el6 ius 3.8 M perl-DBD-MySQL x86_64 4.013-3.el6 rhel-x86_64-server-6 134 k perl-DBI x86_64 1.609-4.el6 rhel-x86_64-server-6 707 k php54-cli x86_64 5.4.16-1.ius.el6 ius 2.6 M php54-common x86_64 5.4.16-1.ius.el6 ius 894 k Transaction Summary ================================================================================ Install 15 Package(s)
That’s all, folks!