Software installato dalla fonte, come dire yum di non installarlo dal pacchetto?


14

Su CentOS 7, ho installato foobar versione 2, compilato da fonti.

Come posso rendere yum consapevole di quell'installazione in modo che non installi foobar versione 1 per dipendenza?


Installazione di foobar

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

Installazione di un pacchetto che richiede 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

Mi piacerebbe yum per sapere foobar 2 è installato e dal baz richiede foobar >= 1o semplicemente foobar, foobar-1.0.0-0.el7.x86_64.rpm non deve essere installato.


Risposte:


27

"Ho installato foobar versione 2, compilato da fonti"

Fai lo sforzo extra quando aggiungi software personalizzato al tuo sistema e impacchetta le tue aggiunte in un RPM . Vedi Martin Streicher, 12-01-2010, Creazione e distribuzione di pacchetti , IBM su come farlo.

Quindi installa l'RPM risultante in modo che possa e funzionerà bene con le procedure di gestione dei conflitti e delle dipendenze del gestore dei pacchetti, le procedure di aggiornamento, downgrade e rimozione e i report sulla sicurezza.


10

Un'altra opzione (anche se sicuramente non la migliore risposta): creare un file rpm fittizio con il nome in questione.

Sarà necessario rpmbuildinstallare e un tarball fittizio.

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

Scrivi il file delle specifiche fittizie. Questo funziona per me su Fedora 29. Dovrebbe essere buono anche su 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

Modificare il nome del pacchetto e il numero di versione come necessario, quindi creare il pacchetto.

rpmbuild -ba example.spec

Il file rpm "binario" di output sarà ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm


6

Non rpmfunziona così .

rpmusa un db dove memorizza quali rpms sono installati sul sistema. Se installi alcuni file manualmente, rpmnon ne è a conoscenza.

Il modo migliore per risolvere questo problema è installare foobar 2 con un numero di giri. Altre soluzioni sarebbero solo soluzioni alternative e non funzionerebbero a lungo termine.


5
Non è possibile ignorare manualmente un controllo di dipendenza? Perché sembra che sia quello a cui si riduce, ciò che OP vuole.
Albero il

Sì, puoi, ma poi esegui l'override di tutti i controlli delle dipendenze ... E dopo avrai problemi di aggiornamento
Chris Maes,

3

Potrebbe rpm --nodepsessere la risposta che stai cercando? È stato discusso in un vecchio thread qui su Serverfault.

(di ' a yum di ignorare una singola dipendenza )


5
Questo può portare a problemi lungo la strada e sostanzialmente solo rimandare il problema. Quando si aggiorna il sistema o si installa un altro pacchetto in un secondo momento, può accadere che alcuni pacchetti vogliano estrarre foobar 1 come dipendenza, eventualmente sovrascrivendo il foobar 2 costruito manualmente e installato e causando problemi di compatibilità.
Jiri Valenta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.