2016-04-26 46 views
0

我配置一個spec文件來構建需要基本包的RPM文件。 首先規範RPM配置:RPM本身需要

%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} 

然後我建立第二個當我SPEC做一個更新:

%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 

在我的CentOS(7)客戶端,我安裝第二轉的時候得到這個錯誤文件來執行這個命令:

[[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] ~]# 

在這裏的主要思想是:

我f某人在他們的系統上安裝了我的RPM文件。後來如果我的程序有一個bug,那麼我需要創建一個修補程序來修復它(這個修補程序應該只針對1個版本)。這意味着,我需要創建補丁RPM文件上傳到存儲庫。 然後,在客戶端PC中,他們可以執行「yum update ovcore」來應用我的修補程序修補程序。

感謝您的幫助!

回答

0

1.2.1.R01.10-1(版本安裝)!= 1.2.1.R01.1-1(在第二個規範中明確要求)。你爲什麼說它需要一個老版本的本身?

其他雜項注意事項:

  • 版本號可能應該在發佈現場,除非你是程序的原作者被打包。
  • 你不應該讓你的變量以_開頭,因爲你可能會不小心跺腳內部的變量。
+0

謝謝Aaron的評論,我已經更新了日誌。請檢查一下。是的,我是程序ovcore的oringinal作者。 – Khate

+0

我的答案仍然適用。第二個應該*不*要求第一個。 RPM不適用於實時修補。下一個版本的RPM將完全取代之前的版本。 –