Установленное программное обеспечение из источника, как сказать yum, чтобы не устанавливать его из пакета?

14

На CentOS 7 я установил foobar версии 2, скомпилированный из исходников.

Как я могу сообщить yum об этой установке, чтобы она не установила foobar версии 1 для зависимости?


Установка foobar

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

Установка пакета, требующего 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

Я хотел бы ни знать Foobar установлена 2 и так как Баз требует foobar >= 1или просто foobar, foobar-1.0.0-0.el7.x86_64.rpm не должен быть установлен.

МКЦ
источник

Ответы:

27

«Я установил foobar версии 2, собранный из исходников»

Приложите дополнительные усилия при добавлении программного обеспечения в вашу систему и упакуйте свои дополнения в RPM . О том, как это сделать, см. Martin Streicher, 2010-01-12, Создание и распространение пакетов , IBM .

Затем установите этот RPM- пакет, чтобы он мог и хорошо сочетался с процедурами обработки конфликтов и зависимостей вашего менеджера пакетов, процедурами обновления, понижения и удаления и создания отчетов о безопасности.

HBruijn
источник
10

Другой вариант (хотя, безусловно, не самый лучший ответ): создайте фиктивный rpm-файл с указанным именем.

Вам понадобится rpmbuildустановленный и фиктивный архив.

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

Напишите фиктивный файл спецификации. Это работает для меня на Fedora 29. Это должно быть хорошо и для 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

При необходимости измените имя пакета и номер версии, а затем соберите пакет.

rpmbuild -ba example.spec

Выходной «двоичный» rpm-файл будет ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm

bgStack15
источник
6

Это не так, как rpmработает.

rpmиспользует базу данных, где он хранит, какие RPM установлены в системе. Если вы установите некоторые файлы вручную,rpm не знаете об этом.

Лучший способ решить эту проблему - установить foobar 2 с частотой вращения. Другие решения будут только обходным путем и не будут работать в долгосрочной перспективе.

Крис Мэйс
источник
5
Вы не можете вручную переопределить проверку зависимостей? Потому что это звучит так, как будто все сводится к тому, чего хочет ОП.
Мачта
Да, вы можете, но тогда вы отменяете все проверки зависимостей ... И у вас будут проблемы с обновлением впоследствии
Крис Мэйс
3

май rpm --nodeps быть ответ, который вы ищете? Это обсуждалось в более старой теме здесь, на Serverfault.

( скажите yum игнорировать одну зависимость )

Микаэль Н
источник
5
Это может привести к проблемам в будущем и в основном просто откладывает проблему. При последующем обновлении системы или установке другого пакета может случиться так, что некоторый пакет захочет использовать foobar 1 в качестве зависимости, возможно, перезаписывая собранный и установленный вручную foobar 2 и вызывая проблемы совместимости.
Иржи Валента