如何解压缩,修改,重建和安装SRPM


9

我想修改Fedora 15软件包(gnome-shell-extensions-alternative-status-menu)。这是一个很小的修改(还原此commit)。使用,yumdownloader我可以下载SRPM(gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm)。

之后,如何解压然后重新构建呢?


您应该将最近的编辑更改为对@mdpc答案的评论,或者添加自己的答案以及有助于解决问题的步骤。请把答案数据放在问题本身之外。
卡莱布

@Caleb完成!(还有3个要去...)
Vitor Py

Answers:


7

我作为ROOT用户的操作:

  1. 像安装其他任何软件包一样,安装SRPM(rpm --install [source-rpm-filename]

  2. 检查/root/rpmbuild/SPECS目录并找到与您的软件包匹配的规格文件

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

然后,将生成的二进制软件包放在/root/rpmbuild/RPMS/目录中,这些目录已准备好通过标准rpm --install命令进行安装。

注意:这只是构建标准二进制软件包中的内容。我发布此答案是为了回答特定问题,而不是如何更改源代码并生成新软件包。

做修改,您既可以提供补丁作为输入,改变规格文件....或者你可以替换标准*.tar.bz2设在/root/rpmbuild/SOURCES用自己与变化,然后做构建如上所述。

请注意,您可能必须更改SPECS程序包才能正常工作(通常是通过拉出补丁程序,并更改SPECS文件编程的某些文件名)。


编辑

似乎以root身份构建rpm是一个不好的习惯(来源)。作为非root用户,它可以正常工作。

分步说明添加补丁(从此处开始):

  1. 将补丁复制到rpmbuild/SOURCES
  2. 编辑rpmbuild/SPECS/package.specPatch0: mypatch.patch在该Source0: ...行后添加一个右键。
  3. 在该%setup ...行之后添加%patch0 -p1一行

现在它将正常构建,即。与:rpmbuild -ba SPECS/package.spec


2
您应该阐明,只有安装是作为root用户完成的,而不是rpmbuild。绝对不要以root用户身份来构建rpm文件。
卡莱布

@Caleb我以非root用户身份安装了软件包。rpm将其置于〜/ rpmbuild层次结构中。我也按照您对问题的建议进行了处理,并在此处添加了额外的步骤。
Vitor Py

仅需注意sudo dnf install rpmdevtools几点:rpmbuild命令需要。而%patch0 -p1行应该如果规范文件使用一个可以省略%autosetup线,而不是%setup一个(如%autosetup自动应用补丁)。
尼尔森

另外,要在原始rpm上安装新的rpm(如果原始rpm已安装在系统上),请执行sudo rpm -ivh --force your.rpm
Nelson

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.