Faça o Ubuntu reconhecer que uma versão customizada do PHP está instalada

1

Estou tentando instalar o PHP a partir do código fonte no meu Ubuntu 12.04 VPS.

Estou instalando o PHP assim:

  1. Faça o download da última versão do site php.net.
  2. Configure-o usando os parâmetros abaixo.
  3. Instale quaisquer dependências quando necessário. (libxxxxx-dev)
  4. Em seguida, faça uma marca
  5. Em seguida, faça uma instalação
  6. Mova o arquivo php.ini e os arquivos de configuração do fpm no lugar certo

Estou usando esses parâmetros no comando configure:

--enable-intl
--with-openssl
--without-pear
--with-gd
--with-jpeg-dir=/usr
--with-png-dir=/usr
--with-freetype-dir=/usr
--with-freetype
--enable-exif
--enable-zip
--with-zlib
--with-zlib-dir=/usr
--with-mcrypt=/usr
--with-pdo-sqlite
--enable-soap
--enable-xmlreader
--with-xsl
--enable-ftp
--with-curl=/usr
--with-tidy
--with-xmlrpc
--enable-sysvsem
--enable-sysvshm
--enable-shmop
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
--enable-pcntl
--with-readline
--enable-mbstring
--with-curl
--with-pgsql
--with-pdo-pgsql
--with-gettext
--enable-sockets
--with-bz2
--enable-bcmath
--enable-calendar
--with-libdir=lib
--enable-maintainer-zts
--with-gmp
--enable-fpm

Agora, tudo vai bem. A versão funciona como esperado e durante a instalação não tive problemas. Agora a coisa divertida vem. Sempre que eu quiser instalar algo como mcrypt (por exemplo) eu normalmente digitaria apt-get install php5-mcrypt , mas quando faço isso, e dou uma olhada nas dependências, vejo que o PHP5 ainda está listado como um e será instalado assim que eu atingir y (sobrescrevendo minha própria versão).

Agora, o verdadeiro núcleo da minha pergunta é, como eu deixo o Ubuntu saber que eu já tenho o PHP5 instalado para que ele não tente mais instalar o PHP5 como uma dependência. Eu tenho que mudar alguma coisa no processo de configuração? Eu tenho que instalar o PHP5 usando a apt-get maneira primeiro, removê-lo manualmente e instalar minha própria versão do PHP depois.

Vale ressaltar que eu preciso dessa compilação personalizada do PHP para fazer o Pthreads funcionar, já que não há um repositório que ofereça uma versão ZTS do PHP (ainda, por favor, faça um, alguém?).

    
por Martijn 07.04.2014 / 21:52

2 respostas

1

Existem várias alternativas aqui:

  1. Adicione o --prefix=/usr/local ao script de configuração (supondo que isto é o que o PHP usa) ou assegure que seu PHP está instalado em /usr/local . Isso significaria que você teria sua própria compilação do PHP instalada junto com a do sistema. Como, por exemplo, /usr/local/bin tem precedência sobre /usr/bin em PATH , sua própria compilação será usada em muitos dos casos (principalmente ao iniciar a partir da linha de comando). Por padrão, isso não deve interferir nos pacotes do sistema que podem ter sido criados em uma versão específica do PHP e ser quebrado se eles tentarem usar as bibliotecas fornecidas por sua própria compilação. Com essa abordagem, você precisa prestar atenção em quais programas estão usando quais bibliotecas, mas deve ser possível fazer isso sem problemas.

  2. Encontre uma versão empacotada do PHP mais próxima das suas necessidades. Se for uma versão mais recente, há muitos ppas do Ubuntu que oferecem isso (de preferência, procure nos repositórios oficiais do 'backport' primeiro, pois qualquer um pode criar um ppa possivelmente quebrado). Note que isto também pode causar conflitos que forçam você a instalar outros pacotes do ppa (ou deixá-lo atarraxado se eles estiverem indisponíveis).

  3. Faça o download do pacote de origem e recompile-o. Isso pode ser o que você precisa fazer se quiser opções de construção personalizadas. Existem muitos tutoriais na Internet para isso, mas basicamente você adicionaria as deb-src linhas necessárias ao seu arquivo sources.list (ou sources.list.d ) e baixaria com apt-get source (ou baixe os arquivos necessários diretamente de packages.ubuntu.com ). Extrair com arquivos dpkg-source Em seguida, você ajustaria as opções de construção no diretório debian do pacote, compilaria com debuild ou dpkg-buildpackage e instalaria com dpkg -i . Você pode até fazer isso com um pacote de um ppa se também precisar de uma versão mais recente (embora as mesmas restrições sejam aplicadas).

  4. Finalmente, a opção mais difícil é criar seu próprio pacote. Começar com um dos pacotes de código-fonte acima e usar versões diferentes da fonte upstream do que está disponível é um bom lugar para começar. No entanto, aqui é completamente para você garantir que o pacote funcione bem com o resto do seu sistema.

por 07.04.2014 / 22:18
0

Ok, em vez do método que você mencionou no começo, tente isto:

Primeiro, verifique se você tem deb-src entradas no seu arquivo sources.list e se executou apt-get update . Isso facilitará as etapas abaixo. Agora, instale ferramentas de construção:

sudo apt-get install devscripts

instale suas dependências de compilação:

sudo apt-get build-dep php5

Obtenha as fontes do php5:

apt-get source php5
cd php5*

Você notará que, além de fazer o download das fontes, também aplicou patches. Agora, procure o script de configuração, que está em debian/rules . Há uma entrada chamada COMMON_CONFIG , edite como quiser:

editor debian/rules
## add, remove, change the configuration and save the file.
## You will find that most of them are enabled by default,
## or already included.

Eu recomendaria para aumentar a versão do PHP usando dch -i . Agora você está pronto para construir suas coisas:

debuild -us

Isso criará os arquivos prontos para instalação no diretório pai. Agora, você realmente deveria reconsiderar porque precisa construir coisas a partir da fonte. A maioria dos problemas de segurança são corrigidos imediatamente e há uma correção disponível, e devido à natureza do PHP (sendo algo usado na produção), é recomendável usar os pacotes oficiais.

    
por 07.04.2014 / 22:28