Esta dica teoricamente funciona também nas versões mais recentes do ubuntu.
Estes dias um antigo cliente meu entrou em contato solicitando a árdua tarefa de instalar o PHP 5.3 na última versão LTS do ubuntu (no momento em que escrevo é a 14.04).
Meu primeiro pensamento, foi baixar o tarball e compilar no servidor. Depois de mais de uma hora resolvendo dependências de bibliotecas, me deparo com erro na hora do make que eram basicamente questões relativas a versão de compilador, sendo praticamente impossível resolver (e olha que tentei).
Logo surgiu a ideia de buscar algum PPA que contenha esta versão, que também foi em vão, pois descobri que mesmo os repositórios que, em alguns artigos na internet diziam que continham esta versão do PHP, já haviam atualizado para as mais novas.
Quando tudo estava perdido, eis que surge uma ideia muito maluca. E se eu adicionasse os repositórios do ubuntu 12.04, deveria haver algum jeito de forçar o apt a utilizar pacotes de um determinado repositório.
Então, sem mais delongas, segue a receita de bolo:
Primeiro vamos criar um arquivo contendo os repositórios do ubuntu precise (12.04)
/etc/apt/sources.list.d/precise.list
deb http://mirror.rackspace.com/ubuntu/ precise main restricted deb-src http://mirror.rackspace.com/ubuntu/ precise main restricted deb http://mirror.rackspace.com/ubuntu/ precise-updates main restricted deb-src http://mirror.rackspace.com/ubuntu/ precise-updates main restricted deb http://mirror.rackspace.com/ubuntu/ precise universe deb-src http://mirror.rackspace.com/ubuntu/ precise universe deb http://mirror.rackspace.com/ubuntu/ precise-updates universe deb-src http://mirror.rackspace.com/ubuntu/ precise-updates universe
Agora o “pulo do gato”, fazer com que os pacotes do PHP e do Apache utilizem este repositório
/etc/apt/preferences.d/php_precise
Package: php5 Pin: release a=precise Pin-Priority: 1001 Package: php* Pin: release a=precise Pin-Priority: 1001 Package: php-* Pin: release a=precise Pin-Priority: 1001 Package: libapache2-mod-php5 Pin: release a=precise Pin-Priority: 1001 Package: php5 Pin: release a=precise-updates Pin-Priority: 1001 Package: php* Pin: release a=precise-updates Pin-Priority: 1001 Package: php-* Pin: release a=precise-updates Pin-Priority: 1001 Package: libapache2-mod-php5 Pin: release a=precise-updates Pin-Priority: 1001 Package: apache2-* Pin: release a=precise Pin-Priority: 1001 Package: apache2-* Pin: release a=precise-updates Pin-Priority: 1002 Package: apache2* Pin: release a=precise Pin-Priority: 1001 Package: apache2* Pin: release a=precise-updates Pin-Priority: 1002
OBS: Os pacotes do apache são necessários caso você vá utilizar mod_php, se for utilizar php-fpm ou php-cgi, basta retirar os grupos referentes ao apache no arquivo acima.
Agora basta instalar os software e “voilà”
apt-get update apt-get install apache2 php5 libapache2-mod-php5
Todo esses procedimentos que citei (compilação, procura de ppa, testes), levaram horas do meu tempo livre, então se você estiver lendo isso e lhe for útil, um belo agradecimento seria um compartilhamento no facebook! 😉