CentOS - PHP - Instalação do Yum com parâmetros personalizados ./configure

3

Configurei e compilei com sucesso o php no meu servidor de desenvolvimento e funciona muito bem, mas depois de conversar com um amigo sysadmin, ele informou que compilações customizadas das versões mais recentes não são recomendadas para sistemas de produção (ou mesmo desenvolvimento). Ele notou uma situação em que eles configuravam e compilavam o PHP 5.3.6, apenas para descobrir que havia algum problema com um driver Postgres de baixo nível, então eles tiveram que reverter para o 5.3.3.

Então, estou pensando em voltar ao yum para instalar o PHP, no entanto tenho várias configurações personalizadas e queria saber se é possível passar ou configurar como o PHP será compilado pelo YUM?

Minha linha de configuração atual:

Configure Command =>  './configure'  '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter'
    
por Mike Purcell 06.06.2012 / 02:33

4 respostas

6

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á:

  1. Faça o download do código fonte atualizado do php.net e coloque-o no diretório SOURCES
  2. 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"
  3. 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.
  4. 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.

    
por 15.06.2012 / 08:52
1

Não, infelizmente você não pode especificar comandos de configuração personalizados com o yum. O software fornecido pelo yum e outros instaladores de pacotes semelhantes é pré-construído de acordo com as especificações do fornecedor.

Eu também recomendo não ir com a última versão de algo só porque está disponível, especialmente em sistemas de produção. Eu encontrei problemas parecidos com o seu amigo, onde um bug estranho criou sua cabeça feia e eu passei horas, dias, semanas rastreando ... ou acabei revertendo para a versão antiga.

Eu faria um php customizado como você fez, que é o que fazemos na minha empresa. Quando uma nova versão estável do php é lançada, nós a construímos em /usr/local/php-x.x.x, testamos, então atualizamos links simbólicos binários e compartilhamos libs em /etc/ld.so.conf.d e estamos bem. Os desenvolvedores sempre têm solicitações de recursos específicos, portanto, é necessário que tenhamos a liberdade e a flexibilidade de uma construção personalizada. Você pode ficar de olho na versão do php que o CentOS está recomendando / distribuindo e atualizar no momento.

    
por 13.06.2012 / 19:49
0

Yum não é compilador

Você pode tentar compilar manualmente o PHP:

cd /tmp;
wget http://ua.php.net/get/php-5.2.17.tar.gz/from/ua2.php.net/mirror; # latest 5.2
tar -xzvf php-YOU_VER.tar.gz;
cd php-YOU_VER;
./configure --enable-cgi --disable-cli --with-png-dir=/usr/local --with-jpeg-dir=/usr/local --with-gd --enable-ftp --with-curl --with-zlib --enable-zip --with-iconv --enable-mbstring --with-mysql --with-freetype-dir=/usr/local --with-ttf --enable-gd-native-ttf --with-mysqli --with-libdir=lib64;
make;
make install;
    
por 13.06.2012 / 19:18
0

como GioMac disse e adicionando a ele. O caminho para isso é pegar o rpm fonte da versão do php que você compilou do yum repos e extrair o src rpm e adicionar sua customização a ele. Construa o rpm e faça um

yum localinstall <rpm>

Ainda assim, deixa a preocupação original do administrador de sistemas sem resposta. Sua personalização para php pode ter um bug que não apareceu na sua caixa de desenvolvimento. Portanto, uma maneira de resolvê-lo seria testá-lo em um ambiente de teste e, uma vez satisfeito, colocá-lo em produção.

yum não é um compilador. Então, instalar através do yum não resolve nenhum problema presente no código. yum apenas facilita a resolução de dependências de pacotes. Um benefício que vejo é que os pacotes são, até certo ponto, testados antes de serem lançados no branch estável do repo. Então, se você quiser compilá-lo você perde o benefício do ramo estável. Se forem apenas alterações de configuração que você gostaria de fazer, você pode fazer a instalação do post também editando o arquivo php.ini.

    
por 18.06.2012 / 19:45

Tags