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

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

我想修改 Fedora 15 软件包 ( gnome-shell-extensions-alternative-status-menu)。这是一个小修改(恢复这次提交)。使用yumdownloader我可以下载 SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm)。

之后,我如何解压它然后重建它?

答案1

作为 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

笔记:这只是构建标准二进制包中的内容。我发布此内容是为了回答具体问题,而不是如何更改源代码并生成新包。

要进行修改,您可以提供补丁作为输入并更改 SPECS 文件...或者您可以用您自己的更改替换*.tar.bz2位于的标准/root/rpmbuild/SOURCES,然后如上所述进行构建。

请注意,您可能必须更改 SPECS 包才能使其正常工作(通常通过删除修补程序并更改由 SPECS 文件编程的一些文件名)。


编辑

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

添加补丁的分步说明(来自这里):

  1. 将您的补丁复制到rpmbuild/SOURCES.
  2. 编辑rpmbuild/SPECS/package.spec并在该行后面添加一个Patch0: mypatch.patch右侧Source0: ...
  3. 在该%setup ...行后面添加%patch0 -p1一行

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

答案2

OpenSSL 软件包重建 CentOS 6.4是 SRPM 包重建的详细示例。

上面的例子使用嘲笑- 软件包构建者的绝地光剑。

创建 Mock 是为了可靠地填充 chroot,然后在该 chroot 中重建包。

有关更多信息,请参阅http://fedoraproject.org/wiki/Projects/Mock

在示例中,mock 使用了 3 次 - 一次“解压”包,然后重建 .src.rpm,最后创建 .rpm。

相关内容