Installierte Software von der Quelle, wie sagt man yum, um es nicht vom Paket zu installieren?


14

Auf einem CentOS 7 habe ich foobar Version 2 installiert , die aus Quellen kompiliert wurde.

Wie kann ich Sie auf diese Installation aufmerksam machen, damit foobar Version 1 für Abhängigkeiten nicht installiert wird ?


Installation der Fußleiste

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

Installation eines Pakets, das foobar erfordert

$ 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

Ich würde gerne wissen , yum foobar 2 installiert ist , und da baz erfordert foobar >= 1oder einfach foobar, foobar-1.0.0-0.el7.x86_64.rpm sollte nicht installiert werden.


Antworten:


27

"Ich habe foobar Version 2 installiert, kompiliert aus Quellen"

Nehmen Sie sich die Mühe, wenn Sie Ihrem System benutzerdefinierte Software hinzufügen, und packen Sie Ihre Erweiterungen in ein RPM . Weitere Informationen hierzu finden Sie in Martin Streicher, 2010-01-12, Erstellen und Verteilen von Paketen , IBM .

Installieren Sie dann das resultierende RPM, so dass es mit den Konflikt- und Abhängigkeitsbehandlungs-, Upgrade-, Downgrade- und Entfernungsprozeduren sowie den Sicherheitsberichten Ihres Paketmanagers kann und wird .


10

Eine andere Option (wenn auch definitiv nicht die beste Antwort): Erstellen Sie eine Dummy-RPM-Datei mit dem fraglichen Namen.

Sie müssen rpmbuildinstalliert und ein Dummy-Tarball.

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

Schreiben Sie die Dummy-Spezifikationsdatei. Dieses funktioniert für mich unter Fedora 29. Es sollte auch unter CentOS 7 funktionieren.

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

Passen Sie den Paketnamen und die Versionsnummer nach Bedarf an und erstellen Sie das Paket.

rpmbuild -ba example.spec

Die Ausgabe "Binär" RPM-Datei wird sein ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm


6

Das ist nicht wie rpm funktioniert das nicht.

rpmVerwendet eine Datenbank, in der gespeichert wird, welche RPMs auf dem System installiert sind. Wenn Sie einige Dateien manuell installieren, rpmwissen Sie nichts darüber.

Der beste Weg, dies zu lösen, ist die Installation von Foobar 2 mit einer Drehzahl. Andere Lösungen wären nur eine Umgehung und würden auf lange Sicht nicht funktionieren.


5
Sie können eine Abhängigkeitsprüfung nicht manuell überschreiben? Weil es so aussieht, als würde es sich auf das beschränken, was OP will.
Mast

Ja, das kannst du, aber dann überschreibst du alle Abhängigkeitsprüfungen ... Und du wirst danach Probleme beim Aktualisieren haben
Chris Maes

3

Vielleicht ist rpm --nodepsdas die Antwort, die Sie suchen? Es wurde in einem älteren Thread hier auf Serverfault besprochen.

( Sagen Sie yum, dass Sie eine einzelne Abhängigkeit ignorieren sollen. )


5
Dies kann später zu Problemen führen und das Problem im Grunde nur aufschieben. Wenn Sie das System später aktualisieren oder ein anderes Paket installieren, kann es vorkommen, dass einige Pakete Foobar 1 als Abhängigkeit abrufen möchten, wodurch möglicherweise die manuell erstellte und installierte Foobar 2 überschrieben wird und Kompatibilitätsprobleme auftreten.
Jiri Valenta
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.