Sovrascrivere i controlli di dipendenza yum quando esistono nuove versioni del software dipendente

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

  •  20-08-2019
  •  | 
  •  

Domanda

Sto usando yum su CentOS 5.1 - Ho compilato a mano PHP 5.2.8 dal sorgente, ma ho altri pacchetti installati usando yum. Ho bisogno di installare un'estensione PHP tramite Pecl e richiede anche l'installazione di phpize. Tuttavia, facendo quanto segue si genera un errore di dipendenza:

  

sudo yum installa php-devel

Errore: dipendenza mancante: php = 5.1.6-20.el5_2.1 è necessario per il pacchetto php-devel

Dato che ho già installato una versione più recente di PHP, come posso forzare yum a ignorarlo? Devo compilare a mano pecl / phpize dal sorgente? Devo ammettere che non ho mai avuto problemi prima, sembra solo a causa di una combinazione di compilazioni e installazioni yum.

Qualche idea?

Grazie, Kyle

È stato utile?

Soluzione

Come regola generale, è meglio avere una gestione dei pacchetti nel sistema, quindi sarà meglio impacchettare tutto in RPMS e gestirlo tramite yum. A lungo termine ti farà risparmiare un sacco di tempo.

Se vuoi assolutamente avere qualcosa (fe PHP) compilatore da fonti a mano, usa stow / checkinstall / ... o qualsiasi altra soluzione che ti consenta di fare una rudimentale gestione dei pacchetti per cose compilate da fonti.

Riguardo alla tua domanda, potresti provare a sovrascrivere il controllo delle dipendenze scaricando RPM del pacchetto richiesto e facendo " rpm -i --force file.rpm " ;, poiché yum non ha alcuna opzione per installazioni forzate

Altri suggerimenti

In generale:

Se lo costruisci da solo, entra in /usr/local ed è accessibile solo ad altre cose in /usr.

Se si installa da RPM / Yum, va in ~/rpm ed è accessibile da rpmbuild --showrc e .src.rpm.

Quindi, se vuoi installare strumenti PHP usando PHP compilato in casa, installali anche in ~/rpm/BUILD/WHATEVER-PACKAGE/: in genere, con un software di tipo GNU, sarebbe qualcosa del tipo:

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

o

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

& # 8230; sebbene la maggior parte del software dovrebbe essere impostato su <=>, a meno che non si ignori l'impostazione del prefisso.

Se vuoi & # 8220; costruisci a mano & # 8221; pacchetti basati su RPM, puoi usare

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

(il tuo percorso equivalente a <=> può variare; <=> ti dirà dove)

Questo scarica il pacchetto <=>, che contiene la sorgente upstream (dell'autore originale) (di solito un tarball) e patch specifiche del sistema operativo; installa i sorgenti in <=> (o nel tuo prefisso rpmbuild); quindi scompatta i sorgenti e applica le patch in <=>

Da lì, puoi eseguire tu stesso i passaggi configura / fai, con il <=> prefisso

Ovviamente, l'installazione da RPM è molto più semplice :-)

yum non sa nulla della tua versione php compilata a mano. Puoi bypassare la risoluzione delle dipendenze di RPM installando il pacchetto usando rpm --nodeps e sperando che funzioni.

O installa la versione php che hai compilato in un'altra directory in modo che possa coesistere con la vecchia versione di yum, quindi tutti sono felici (non sono sicuro che sia possibile, immagino che dipenda dal fatto che le tue app utilizzino un percorso hardcoded per php o no).

Oppure, se sei fortunato, un repository di terze parti come EPEL o RPMForge potrebbe avere un pacchetto php più recente, quindi non devi compilare il tuo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top