web-dev-qa-db-fra.com

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

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

Comment puis-je informer miam de cette installation pour 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

J'aimerais que miam sache foobar 2 est installé et depuis baz a besoin foobar >= 1 ou simplement foobar, foobar-1.0.0-0.el7.x86_64.rpmne devrait pas être installé.

14
YSC

"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 empaquetez 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 pour qu'il puisse et va jouez bien avec les procédures de gestion des conflits et des dépendances de votre gestionnaire de paquets, la mise à niveau, la rétrogradation et la suppression et les rapports de sécurité.

27
HBruijn

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

Vous aurez besoin de rpmbuild installé et d'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

10
bgStack15

Ce n'est pas ainsi que fonctionne rpm.

rpm utilise une base de données où elle stocke les rpms installés sur le système. Si vous installez certains fichiers manuellement, rpm ne 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.

6
Chris Maes

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

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

3
Mikael H