2016-04-26 12 views
0

Ich konfigurieren eine Spec-Datei zum Erstellen von RPM-Datei, die sein Basispaket benötigt. Erst spec RPM config:RPM erfordern selbst

%global _installDir /opt 
%global _name  ovcore 
%global _build  1 
%global _version  1.2.1.R01 
%global _release  1 

Summary:  First RPM Version 
Name:   %{_name} 
Version:  %{_version}.%{_build} 
Release:  %{_release} 
License:  Free. 
Group:  OV 
URL:   http://free-core.vn 
BuildRoot: %{_tmppath}/%{_name} 
Provides:  %{_name} = %{version}-%{release} 

Dann mache ich ein Update auf meinem SPEC beim Bau die zweiten:

%global _installDir /opt 
%global _name  ovcore 
%global _build  10 
%global _version  1.2.1.R01 
%global _release  1 

Summary:  Second RPM Version 
Name:   %{_name} 
Version:  %{_version}.%{_build} 
Release:  %{_release} 
License:  Free. 
Group:  OV 
URL:   http://free-core.vn 
BuildRoot: %{_tmppath}/%{_name} 
Provides:  %{_name} = %{version}-%{release} 
Requires:  %{_name} = 1.2.1.R01.1-1 

In meinem CentOS (7) -Client, bekam ich diese Fehlermeldung, wenn die zweite Drehzahl der Installation Datei diesen Befehl ausführen:

[[email protected] ~]# yum install --debuglevel=10 --rpmverbosity=10 ovcore 
install ovcore 
Loading "fastestmirror" plugin 
Config time: 0.007 
Yum version: 3.4.3 
rpmdb time: 0.000 
Setting up Package Sacks 
local                                    | 2.9 kB 00:00:00 
local/x86_64/primary_db                                | 1.9 kB 00:00:00 
Determining fastest mirrors 
pkgsack time: 0.058 
Checking for virtual provide or file-provide for install 
No package install available. 
Obs Init time: 0.000 
Resolving Dependencies 
--> Running transaction check 
---> Package ovcore.x86_64 0:1.2.1.R01.10-1 will be installed 
Checking deps for ovcore.x86_64 0:1.2.1.R01.10-1 - u 
looking for ('ovcore', 'EQ', ('0', '1.2.1.R01.1', '1')) as a requirement of ovcore.x86_64 0:1.2.1.R01.10-1 - u 
looking for ('/bin/sh', None, (None, None, None)) as a requirement of ovcore.x86_64 0:1.2.1.R01.10-1 - u 
looking for ('/bin/sh', None, (None, None, None)) as a requirement of ovcore.x86_64 0:1.2.1.R01.10-1 - u 
ovcore-1.2.1.R01.10-1.x86_64 requires: ovcore = 1.2.1.R01.1-1 
--> Processing Dependency: ovcore = 1.2.1.R01.1-1 for package: ovcore-1.2.1.R01.10-1.x86_64 
Searching pkgSack for dep: ovcore 
Potential resolving package ovcore-1.2.1.R01.1-1.x86_64 has newer instance in ts. 
--> Finished Dependency Resolution 
Dependency Process ending 
Depsolve time: 0.385 
Error: Package: ovcore-1.2.1.R01.10-1.x86_64 (local) 
      Requires: ovcore = 1.2.1.R01.1-1 
      Available: ovcore-1.2.1.R01.1-1.x86_64 (local) 
       ovcore = 1.2.1.R01.1-1 
       ovcore = 1.2.1.R01-1 
      Installing: ovcore-1.2.1.R01.10-1.x86_64 (local) 
       ovcore = 1.2.1.R01.10-1 
       ovcore = 1.2.1.R01-1 
You could try using --skip-broken to work around the problem 
You could try running: rpm -Va --nofiles --nodigest 
[[email protected] ~]# 

Die Idee hier ist:

I Wenn jemand meine RPM-Datei auf ihrem System installiert hat. Später, wenn mein Programm einen Fehler hat, muss ich einen Patch erstellen, um es zu reparieren (Dieser Patch sollte nur für 1 Build Ziel sein). Dies bedeutet, dass ich die RPM-Datei zum Hochladen ins Repository erstellen muss. Dann können sie auf dem Client-PC "yum update ovcore" ausführen, um meinen Patch-Fix anzuwenden.

Schätzen Sie für jede Hilfe!

Antwort

0

1.2.1.R01.10-1 (Version installieren)! = 1.2.1.R01.1-1 (explizit in der zweiten Spezifikation erforderlich). Warum sagst du, dass es eine alte Version von sich selbst braucht?

Andere verschiedene Hinweise:

  • Build-Nummern sollten wahrscheinlich in der Release-Feld gehen, wenn Sie der ursprüngliche Autor des Programms sind auch verpackt werden.
  • Sie sollten Ihre Variablen nicht mit _ beginnen, weil Sie möglicherweise interne versehentlich stampfen.
+0

Danke Aaron für Ihre Kommentare, ich habe die Protokolle aktualisiert. Bitte überprüfen. Ja, ich bin der ursprüngliche Autor des Programms ovcore. – Khate

+0

Meine Antwort gilt immer noch. Die zweite sollte * nicht * die erste erfordern. RPM ist nicht für Live-Patching. Die nächste Version Ihres RPM wird die vorherige Version vollständig ersetzen. –