Встановлене програмне забезпечення з джерела, як сказати, yum не встановлювати його з пакета?


14

На CentOS 7 я встановив foobar версії 2, зібраний з джерел.

Як я можу повідомити про цю установку, щоб вона не встановлювала foobar версії 1 для залежності?


Встановлення фобар

$ 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 встановлений, і оскільки baz вимагає foobar >= 1або просто foobar, foobar-1.0.0-0.el7.x86_64.rpm не слід його встановлювати.


Відповіді:


27

"Я встановив foobar версії 2, зібраний з джерел"

Додайте додаткових зусиль, додаючи в систему спеціальне програмне забезпечення та запакуйте свої доповнення в обороті в хвилину . Про те, як це зробити, див. Martin Streicher, 2010-01-12, Створення та розповсюдження пакетів , IBM .

Потім встановіть отриманий RPM, щоб він міг і буде добре підходити до керування конфліктами та залежностями вашого менеджера пакунків, оновлення, поновлення та видалення та звітування про безпеку.


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


6

Це не так rpm працює.

rpmвикористовує db, де він зберігає, які rpms встановлені в системі. Якщо ви встановите деякі файли вручну,rpm це не знаєте.

Найкращий спосіб вирішити це - встановити foobar 2 з об / хв. Інші рішення були б лише врегульованими і не діяли в перспективі.


5
Ви не можете вручну змінити перевірку залежності? Тому що він читає так, що це зводиться до того, чого хоче ОП.
Щогла

Так, ви можете, але тоді ви скасуєте всі перевірки залежності ... І у вас виникнуть проблеми з оновленням після цього
Chris Maes

3

Можливо, rpm --nodepsви шукаєте відповідь? Це обговорювалося в більш старій темі тут на Serverfault.

( скажіть yum, щоб ігнорувати одну залежність )


5
Це може призвести до проблем в дорозі, і в основному просто відкладає проблему. Під час оновлення системи або інсталяції іншого пакета пізніше, може статися, що якийсь пакет захоче витягнути foobar 1 як залежність, можливо, перезаписавши вбудований та встановлений foobar 2 і спричинивши проблеми сумісності.
Jiri Valenta
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.