Faça o download do src.rpm para o pacote, ele contém o código-fonte ORIGINAL e todos os arquivos necessários para compilar os rpm personalizados:
- php.spec - arquivo de especificação necessário para o rpmbuild
- php-xxx.tar.gz - código-fonte original
- vários patches (.diff, .patch)
- arquivos de documentação a serem adicionados (se existirem)
Para construir o rpm - você precisará do pacote rpm-build que contém o programa rpmbuild.
Também pode ser feito com o yumdownloader (do pacote yum-utils):
yum install yum-utils rpm-build
yumdownloader --source php
Instalar o src.rpm:
rpm -Uvh *.src.rpm
cd para rpmbuild dir de SPEC;
RHEL5, antigo Fedora
cd /usr/src/redhat/SPEC/
Suse:
cd /usr/src/packages/SPEC/
RHEL6, o mais novo Fedora:
cd ~/rpmbuild/SPEC/
O arquivo php.spec contém detalhes sobre como o pacote é construído e quais componentes serão incluídos. Ele também contém dados sobre dependências e pacotes necessários para criar novos pacotes corretamente. Então, o rpmbuild irá lembrá-lo sobre qualquer pacote que esteja faltando.
Você precisará:
- Faça o download do código fonte atualizado do php.net e coloque-o no diretório SOURCES
- Especifique a nova versão em "Version:" string no arquivo php.spec, use também um valor menor na string "Release:" e adicione seu nome personalizado nela, como "Release: 0.mike"
- Verifique o arquivo .spec para possíveis alterações adicionais (talvez haja algumas correções de segurança não necessárias na versão atual, o rpmbuild informará sobre isso se o arquivo já estiver corrigido). Talvez você precise comentar alguns "Patch xx:" string e alguns "% patch xx" se você tiver algum problema.
-
execute o rpmbuild:
rpmbuild --target x86_64 -ba php.spec
--target x86_64 - specifies platform (can be i386, x86_64, amd64, etc)
-ba - "build all", will build both final .rpm and new src.rpm packages
Você pode encontrar pacotes construídos nos diretórios ../RPM/ e ../SRPM/.
Esse método garante que os patches de fornecedores sejam incluídos no diretório. A hierarquia da estrutura de arquivos é a mesma, o componente é compatível, as dependências são atendidas e a versão antiga será substituída com segurança. Além disso, você garante suas atualizações futuras.
p.s. Eu não concordo com "nova versão na produção é ruim" string. Estou prestando serviços de suporte a dezenas de empresas, também tenho hospedagem compartilhada e sempre prefiro ter nova versão. O único problema com o php é passar de uma subversão para outra (como 5.1.x para 5.2.x, 5.2.x para 5.3.x) - existem algumas mudanças gerais e funções obsoletas / removidas. Mas o mais novo é mais rápido, seguro e melhor mantido, seguido.
p.s.s. Eu nunca vou compilar nada manualmente e colocar arquivos em / usr / local / na minha vida, eu aprendi o rpm como eu precisava em poucos dias, agora tudo está correndo bem.