Logiciel installé depuis la source, comment dire miam de ne pas l'installer depuis le package?

14

Sur un CentOS 7, j'ai installé foobar version 2, compilé à partir des sources.

Comment puis-je informer Yum de cette installation afin qu'elle n'installe pas foobar version 1 pour la dépendance?


Installation de foobar

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

Installation d'un package nécessitant 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

Je voudrais yum de savoir foobar 2 est installé et que baz exige foobar >= 1ou simplement foobar, foobar-1.0.0-0.el7.x86_64.rpm ne doit pas être installé.

YSC
la source

Réponses:

27

"J'ai installé foobar version 2, compilé à partir des sources"

Faites l'effort supplémentaire lors de l'ajout de logiciels personnalisés à votre système et regroupez vos ajouts dans un RPM . Voir Martin Streicher, 2010-01-12, Création et distribution de packages , IBM sur la façon de procéder.

Ensuite, installez ce RPM résultant afin qu'il puisse et sera agréable avec la gestion des conflits et des dépendances de votre gestionnaire de paquets, les procédures de mise à niveau, de rétrogradation et de suppression et les rapports de sécurité.

HBruijn
la source
10

Une autre option (mais certainement pas la meilleure réponse): créer un fichier rpm factice avec le nom en question.

Vous aurez besoin rpmbuildinstallé, et un tarball factice.

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

Écrivez le fichier de spécifications factices. Celui-ci fonctionne pour moi sur Fedora 29. Il devrait également être bon sur 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

Modifiez le nom et le numéro de version du package si nécessaire, puis générez le package.

rpmbuild -ba example.spec

Le fichier rpm de sortie "binaire" sera ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm

bgStack15
la source
6

Ce n'est pas ainsi que ça rpmfonctionne.

rpmutilise un db où il stocke quels rpms sont installés sur le système. Si vous installez certains fichiers manuellement, rpmne le sait pas.

La meilleure façon de résoudre ce problème est d'installer foobar 2 avec un rpm. D'autres solutions ne seraient qu'une solution de contournement et ne fonctionneraient pas à long terme.

Chris Maes
la source
5
Vous ne pouvez pas remplacer manuellement un contrôle de dépendance? Parce qu'il se lit comme si cela se résumait à ce que OP voulait.
Mast
Oui, vous pouvez le faire, mais vous annulez toutes les vérifications de dépendance ... Et vous aurez du mal à mettre à jour par la suite
Chris Maes
3

Peut- rpm --nodepsêtre la réponse que vous cherchez? Il a été discuté dans un fil plus ancien ici sur Serverfault.

( dites à yum d'ignorer une seule dépendance )

Mikael H
la source
5
Cela peut entraîner des problèmes en cours de route et, fondamentalement, retarde simplement le problème. Lors de la mise à jour du système ou de l'installation d'un autre package ultérieurement, il peut arriver que certains packages souhaitent extraire foobar 1 en tant que dépendance, écrasant éventuellement le foobar 2 construit et installé manuellement et provoquant des problèmes de compatibilité.
Jiri Valenta