Software instalado desde la fuente, ¿cómo decir yum no instalarlo desde el paquete?


14

En un CentOS 7, instalé foobar versión 2, compilado de las fuentes.

¿Cómo puedo informar a yum de esa instalación para que no instale foobar versión 1 por dependencia?


Instalación de foobar

$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && sudo make install
[...]
$ foobar --version
foobar v2

Instalación de un paquete que requiere foobar

$ sudo yum install baz
[...]
---> Package baz.x86_64 0:3.14.15-9 will be installed
--> Processing Dependency: foobar >= 1 for package: baz-3.14.15-9.x86_64
[...]
Dependencies Resolved

==============================================================
 Package           Arch      Version      Repository   Size
==============================================================
Installing:                  
 baz               x86_64    3.14.15-9    example      1.1 M
Installing for dependencies: 
 foobar            x86_64    1.0.0-0.el7  example      4.5 M

Me gustaría saber que foobar 2 está instalado y dado que baz requiere foobar >= 1o simplemente foobar, foobar-1.0.0-0.el7.x86_64.rpm no debe instalarse.


Respuestas:


27

"He instalado la versión 2 de foobar, compilada de las fuentes"

Haga un esfuerzo adicional al agregar software personalizado a su sistema y empaquete sus adiciones en un RPM . Consulte Martin Streicher, 12-01-2010, Creación y distribución de paquetes , IBM sobre cómo hacerlo.

A continuación, instale ese RPM resultante para que pueda funcionar bien con el manejo de conflictos y dependencias de su administrador de paquetes, los procedimientos de actualización, degradación y eliminación y los informes de seguridad.


10

Otra opción (aunque definitivamente no es la mejor respuesta): hacer un archivo rpm ficticio con el nombre en cuestión.

Necesitará rpmbuildinstalado, y un tarball ficticio.

mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt

Escribe el archivo de especificaciones ficticio. Este funciona para mí en Fedora 29. También debería ser bueno en CentOS 7.

Name:           example
Version:        0.0.0
Release:        1%{?dist}
Summary:        Dummy package

Group:          Dummy
License:        CC-BY-SA 3.0
URL:            http://example.com
Source0:    example.tar.gz
BuildArch:  noarch

#BuildRequires:
#Requires:

%description
Dummy for example

%prep
:

%build
:

%install
:

%files
%doc

%changelog

Ajuste el nombre del paquete y el número de versión según sea necesario, y luego cree el paquete.

rpmbuild -ba example.spec

El archivo rpm "binario" de salida será ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm


6

Así no es como rpmfunciona.

rpmutiliza un db donde almacena qué rpms están instalados en el sistema. Si instala algunos archivos manualmente, rpmno lo sabe.

La mejor manera de resolver esto es instalar foobar 2 con rpm. Otras soluciones solo serían una solución alternativa y no funcionarían a largo plazo.


55
¿No puede anular manualmente una verificación de dependencia? Porque se lee como eso es a lo que se reduce, lo que OP quiere.
Mástil

Sí, puede, pero luego anula todas las comprobaciones de dependencia ... Y tendrá problemas para actualizar después
Chris Maes

3

¿Puede rpm --nodepsser la respuesta que estás buscando? Se discutió en un hilo anterior aquí en Serverfault.

( dile a yum que ignore una sola dependencia )


55
Esto puede conducir a problemas en el futuro y básicamente solo pospone el problema. Al actualizar el sistema o instalar otro paquete más adelante, puede suceder que algún paquete desee extraer foobar 1 como dependencia, posiblemente sobrescribiendo el foobar 2 creado e instalado manualmente y causando problemas de compatibilidad.
Jiri Valenta
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.