Anular las comprobaciones de dependencia de yum cuando existen versiones más nuevas del software dependiente
-
20-08-2019 - |
Pregunta
Estoy usando yum en CentOS 5.1. Compilé manualmente PHP 5.2.8 desde el código fuente, pero tengo otros paquetes instalados usando yum.Necesito instalar una extensión PHP a través de pecl, y también requiere la instalación de phpize.Sin embargo, hacer lo siguiente produce un error de dependencia:
sudo yum instalar php-devel
Error:Dependencia faltante:php = 5.1.6-20.el5_2.1 es necesario para el paquete php-devel
Dado que ya tengo instalada una versión más nueva de PHP, ¿cómo puedo forzar a yum a ignorar esto?¿Necesito compilar manualmente pecl/phpize desde la fuente?Es cierto que nunca tuve un problema antes, solo parece deberse a una combinación de compilaciones e instalaciones de yum.
¿Alguna idea?
Gracias Kyle
Solución
Como regla general, es mejor tener una administración de paquetes en el sistema, por lo que será mejor empaquetar todo en RPMS y administrarlo a través de yum. Le ahorrará mucho tiempo a largo plazo.
Si absolutamente quiere tener algo (por ejemplo, PHP) compilador de las fuentes a mano, use stow / checkinstall / ... o cualquier otra solución que le permita hacer una administración de paquetes rudimentaria para las cosas compiladas en la fuente.
En relación con su pregunta, puede intentar anular la verificación de dependencia descargando RPM del paquete requerido y haciendo " rpm -i --force file.rpm " ;, ya que yum no tiene ninguna opción para instalaciones forzadas
Otros consejos
En general:
Si lo construyes tú mismo, entra en /usr/local
, y sólo es accesible para otras cosas en /usr/local
.
Si instala desde RPM/Yum, entra en /usr
, y es accesible a /usr
y /usr/local
.
Entonces, si desea instalar herramientas PHP usando PHP compilado en casa, instálelas en /usr/local
también:normalmente, con software tipo GNU, sería algo como:
./configure --prefix=/usr/local && make && sudo make install
o
make prefix=/usr/local all && sudo make prefix=/usr/local install
…a pesar de mayoría el software debe ser predeterminado /usr/local
a menos que anule su configuración de prefijo.
Si desea “construir manualmente” paquetes basados en RPM, puede usar
yumdownloader --source WHATEVER-PACKAGE
rpm -i WHATEVER-PACKAGE.rpm
rpmbuild -bp ~/rpm/SPECS/WHATEVER-PACKAGE.spec
(tu camino equivalente a ~/rpm
puede variar; rpmbuild --showrc
te diré dónde)
Esto descarga el .src.rpm
paquete, que contiene la fuente original (del autor original) (generalmente un tarball), así como parches específicos del sistema operativo;instala las fuentes en ~/rpm
(o su prefijo rpmbuild);y luego descomprime las fuentes y aplica los parches en ~/rpm/BUILD/WHATEVER-PACKAGE/
Desde allí, puede realizar los pasos de configuración/realización usted mismo, con el /usr/local
prefijo
Por supuesto, simplemente instalar desde RPM es mucho más fácil :-)
yum
No sabe nada acerca de su versión de PHP compilada a mano.Puede omitir la resolución de dependencia de RPM instalando el paquete usando rpm --nodeps
y espero que funcione.
O instale la versión de php que compiló usted mismo en otro directorio para que pueda coexistir con la versión anterior de yum, para que todos estén contentos (no estoy seguro de si eso es posible, supongo que depende de si sus aplicaciones usan una ruta codificada a php o no) .
O, si tienes suerte, un repositorio de terceros como EPEL o RPMForge Es posible que tenga un paquete php más nuevo, por lo que no es necesario compilar el suyo propio.