PHP 5.3 no Debian Lenny (5.0)


Recentemente fui convidado a desenvolver um webapp para um cliente. Como era um projeto relativamente pequeno, optamos por construir usando Grs, um projeto extremamente simples e de entrega rápida para servidor RESTful genérico (http://github.com/ramcoelho/grs).

Projeto finalizado e homologado, era hora do deploy. Como o cliente já possuía um servidor configurado e rodando outras aplicações internas, solicitou a disponibilização no mesmo ambiente.

Então nos deparamos com o obstáculo que motivou este artigo.

O ambiente era Debian Lenny (5.0), que por padrão usa a versão 5.2 do PHP em seus repositórios.

Grande parte do código do Grs não funciona no PHP 5.2 e é claro que a nossa primeira sugestão foi upgrade do ambiente. Por diversos motivos que não cabem no objetivo deste artigo, o cliente não autorizou o upgrade.

Ao invés de realizar o downgrade do Grs, optamos por investir um pouco mais de tempo fazendo o upgrade específico do PHP 5.3 no Lenny.

Já que todos adoramos a flexibilidade dos pacotes .deb, tentamos evitar recompilar o PHP a partir dos fontes.

Segue o procedimento que resolveu o problema, com nossos agradecimentos a http://www.dotdeb.org/2009/11/30/php-5-3-1-packages-for-debian-lenny-theyre-here/.

Se você for seguir o texto do artigo, lembre-se de trocar “stable” para “lenny”, já que a versão stable hoje não é mais lenny (na data deste artigo é “squeeze”).

Inclua as linhas abaixo em seu /etc/apt/sources.list:

deb http://php53.dotdeb.org lenny all
deb-src http://php53.dotdeb.org lenny all

Atualize os repositórios locais: sudo apt-get update

Se o sistema reclamar que a chave não está presente (NO_PUBKEY), tente a solução de http://en.kioskea.net/faq/809-debian-apt-get-no-pubkey-gpg-error, lembrando de substituir a chave do artigo pela indicada na mensagem de erro (quando o artigo foi escrito: E9C74FEEA2098A6E)

gpg --keyserver pgpkeys.mit.edu --recv-key E9C74FEEA2098A6E
gpg -a --export E9C74FEEA2098A6E | sudo apt-key add -
sudo apt-get update

E por fim:

sudo apt-get dist-upgrade

Lembre-se de fazer backup antes de realizar procedimentos de ampla atualização e, se possível, testar em um box de homologação antes.

Boa sorte.