Substituindo verificações de dependência yum quando versões mais recentes do software exist dependente
-
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
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.