Назад | Перейти на главную страницу

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

На 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 не должна быть установлен.

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

Приложите дополнительные усилия при добавлении специального программного обеспечения в вашу систему и упакуйте свои дополнения в RPM. Видеть Мартин Штрайхер, 12 января 2010 г., Сборка и распространение пакетов, IBM о том, как это сделать.

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

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

Тебе понадобится rpmbuild установлен и фиктивный tarball.

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

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

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

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

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

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