2011-06-15 22 views

回答

0

我認爲這是一個叫做補丁的概念。我開始使用link修補第一個srpm。但基本思想是,獲取srpm,安裝srpm,在build區目錄內創建你的補丁,並在spec文件中指定補丁文件%patch0 -p1。然後做rpm構建。快樂補丁!

+0

我面臨的主要問題是我沒有一個源RPM。我只有RPM版本。 – Monojeet 2011-06-15 08:30:41

+0

@Monojeet,然後找出源rpm?這是唯一合理的原因,因爲在修補時,我們需要* source * rpm而不是建立的rpm。 – Jasonw 2011-06-15 08:38:16

+0

所以我沒有辦法在沒有SRPM的情況下編輯RPM? – Monojeet 2011-06-15 08:39:46

13

修改一個RPM,你沒有來源,就是按照這些步驟的最佳方式:

  1. 拆開轉速與rpm2cpio命令目錄
  2. 使內進行必要的更改子目錄
  3. 製作一個「虛擬」spec文件並構建它。

這虛擬規範文件可能是這樣的:

Name: blah 
Version: 1.0 
Release: 1 
Summary: blah 
License: blah 
Distribution: blah 
Group: blah 
Packager: me 
BuildRoot: /path/to/dir/with/mods 

%description 
blah 

%files 
/path/to/dir/with/mods/* 

在這裏更換每一個「嗒嗒」與真實值(使用rpm -qpi rpm file得到的值)。將BuildRoot替換爲已解包的已修改rpm的目錄。然後運行rpmbuild -bb dummy.spec

由於沒有定義準備工作/設置/構建/安裝步驟,它只會採用buildroot中的內容並創建一個RPM。

如果rpm包含腳本文件,您還必須將它們放在這個虛擬spec文件中。要查看包是否有任何腳本,請運行:rpm -qp --scripts rpm file。相同的事情去依賴,prereqs等

可能有其他細節我失蹤,但這應該足以讓你開始。

UPDATE:對於它的價值,也有http://rpmrebuild.sourceforge.net/

+0

用於'--scripts'。我不知道那件事。 – Brandan 2013-01-17 22:06:10

+0

FWIW還有http://rpmrebuild.sourceforge.net/ – 2013-01-18 02:09:31

+1

沒有指定/修改'rpmbuild'的'BUILDROOT'設置,這不起作用。 – jmtd 2013-02-15 08:03:03