Substituindo verificações de dependência yum quando versões mais recentes do software exist dependente

StackOverflow https://stackoverflow.com/questions/660398

  •  20-08-2019
  •  | 
  •  

Pergunta

Eu estou usando yum no CentOS 5.1 - I mão-compilado PHP 5.2.8 a partir da fonte, mas têm outros pacotes instalados usando o yum. Eu preciso instalar uma extensão do PHP via pecl, e requer phpize para ser instalado também. No entanto, fazendo o seguinte produz um erro de dependência:

sudo yum install php-devel

Erro: Falta de dependência: php = 5.1.6-20.el5_2.1 é necessário pelo pacote php-devel

Uma vez que eu realmente tenho uma versão mais recente do PHP já instalado, como posso forçar o yum para ignorar isso? Preciso de mão-de compilação pecl / phpize da fonte? Eu admito nunca teve um problema antes, ela só parece ser por causa de uma combinação de compila e yum instala.

Qualquer pensamento?

Obrigado, Kyle

Foi útil?

Solução

Como regra geral, é melhor ter uma gestão de um pacote no sistema, de modo que você vai ser melhor para embalar tudo em RPMS e administrá-lo via yum. Ela vai lhe poupar muito tempo no longo prazo.

Se você absolutamente quer ter algo (fe PHP) compilador a partir de fontes de lado, o uso Stow / checkinstall / ... ou qualquer outra solução que permitirá que você faça o gerenciamento de pacotes rudimentar para o material compilado-fonte.

Regerding sua pergunta, você poderia tentar substituir a verificação de dependência baixando RPM do pacote necessário um fazendo "rpm -i --force file.rpm", uma vez yum não tem qualquer opção para instalações forçados

Outras dicas

Em geral:

Se você construí-lo sozinho, ele vai para /usr/local, e só é acessível para outras coisas na /usr/local.

Se você instalar a partir de RPM / Yum, ele vai para /usr, e é acessível a /usr e /usr/local.

Então, se você deseja instalar ferramentas PHP usando home-compilado PHP, instalá-los em /usr/local assim: normalmente, com software GNU-tipo, que seria algo como:

   ./configure --prefix=/usr/local && make && sudo make install

ou

   make prefix=/usr/local all && sudo make prefix=/usr/local install

... embora mais software deve padrão para /usr/local a menos que você substituir sua configuração prefixo.

Se você quiser pacotes “mão-construir” que são baseados em RPM, você pode usar

   yumdownloader --source WHATEVER-PACKAGE
   rpm -i WHATEVER-PACKAGE.rpm
   rpmbuild -bp ~/rpm/SPECS/WHATEVER-PACKAGE.spec

(o seu caminho equivalente a ~/rpm pode variar; rpmbuild --showrc vai lhe dizer onde)

Este download do pacote .src.rpm, que contém o montante fonte (do autor original) (geralmente um tarball), bem como patches específicos-OS; instala as fontes em ~/rpm (ou o seu prefixo rpmbuild); e, em seguida, descompacta as fontes e aplica os patches em ~/rpm/BUILD/WHATEVER-PACKAGE/

A partir daí, você pode fazer o configure / dar passos mesmo, com o /usr/local prefixo

Claro, só instalando a partir de RPM do é muito mais fácil: -)

yum não sabe nada sobre a sua versão php compilado mão. Pode resolução de dependência, quer do RPM desvio instalando o pacote usando rpm --nodeps e espero que funcione.

Ou instalar a versão php você mesmo compilado em outro diretório para que ele possa coexistir com a versão antiga do yum, então todo mundo está feliz (não tenho certeza se isso é possível, eu acho que depende se seus aplicativos usar um caminho codificado para php ou não).

Ou, se você tiver sorte, um repositório de terceiros, como EPEL ou RPMForge pode ter um pacote php mais recente, para que você não tem que compilar o seu próprio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top