Instalação do PHP em limpo Amazon Linux AMI

5

Estou tentando fazer com que um script funcione para exibir novas instâncias do Amazon Linux EC2 com o php55 e o Amazon PHP sdk. No entanto, estou correndo em um problema que eu acho que é causado por conflitos de versão do PHP. Eu acho que há algo que estou perdendo sobre como o yum funciona neste caso.

Para reduzi-lo ao caso mais simples, se eu executar:

yum install -y httpd24 php55 php-amazon-sdk2

Eu recebo " Error: php55-common conflitos com php-common-5.3.29-1.7.amzn1.x86_64 "

No entanto, se eu executar:

yum install -y httpd24 php55

E, em seguida, execute separadamente:

yum install -y php-amazon-sdk2

Funciona muito bem. Para ser claro, não há nenhuma versão do PHP presente no sistema quando estou executando esses comandos, então não está em conflito com algo que já existe.

Eu não estou muito familiarizado com o funcionamento do yum dependencies, mas parece que isso está indicando que o php-amazon-sdk2 funciona bem com o php55, mas por alguma razão ele está tentando forçar o php53 se eu instalar tudo ao mesmo Tempo. Qual é a maneira correta de corrigir isso (o que significa que não quero apenas forçar a instalação, ignorando dependências, mas também não quero fazer isso em etapas separadas)?

    
por Trevor Z 28.09.2014 / 19:58

2 respostas

8

Isso ocorre devido a uma limitação de RPM / YUM no Amazon Linux e à maneira como as várias versões do php são empacotadas. Um dos recursos do Amazon Linux é que existem várias versões de vários idiomas e outros pacotes de software de código aberto. Em muitos casos, esses pacotes precisam entrar em conflito, pois o software não foi projetado para ser instalado ao mesmo tempo.

Nesse caso, o que está acontecendo é que cada um dos pacotes php tem uma oferta genérica (ou seja, php php54 e php55 fornecem php). O php-amazon-sdk2 requer somente o php, que está sendo encontrado especificando o pacote php55 na linha de comando do yum. O erro de conflito está vindo do pacote php-guzzle-Guzzle, que requer o php-common. Neste caso, se você adicionar o comando php55-common ao seu yum ao instalar o pacote php-amazon-sdk2, ele terá sucesso.

yum install -y httpd24 php55 php55-common php-amazon-sdk2

Em geral, no Amazon Linux AMI, se você obtiver erros de conflito com o php, a solução é adicionar o pacote versionado correto à linha de comando do yum. Neste caso, o conflito relatado foi php-common. Você sabia que queria instalar o php55, então era apenas uma questão de dizer exatamente o que você queria (ou seja, eu quero o php55-common, não o php-common). Se você instalar um pacote que requer php, e você não especificar nenhum outro pacote php, o yum escolherá os pacotes php genéricos, e o PHP 5.3 será instalado. Estes erros de conflito são tipicamente um problema com os pacotes php54 e php55.

Concordo que esse trabalho não é intuitivo, e esse problema foi observado pela equipe do Amazon Linux AMI. Eles estão explorando várias soluções diferentes para esse problema. Eles estão muito abertos ao feedback sobre o empacotamento php e no Amazon Linux AMI em geral. Eles monitoram os fóruns do aws, então esse seria o melhor lugar para postar os problemas. Se você tiver o AWS Premium Support, poderá abrir um caso com eles e ele será encaminhado para a equipe do Amazon Linux AMI.

Obrigado Heath

    
por 03.10.2014 / 19:28
1

Eu tive um problema semelhante envolvendo o pacote php-mbstring. Para aqueles de vocês que são enviados aqui pelo google, a solução para mim foi instalar o php 55 -mbstring (eu tinha php 5.5 na minha instância do EC2). Descubra qual versão do php você tem em sua máquina (comando php -v), então acrescente essa versão ao lado do seu pacakge PHP como eu fiz acima. Espero que isso ajude você.

    
por 25.01.2015 / 04:38