我想修改 Fedora 15 软件包 ( gnome-shell-extensions-alternative-status-menu
)。这是一个小修改(恢复这次提交)。使用yumdownloader
我可以下载 SRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm
)。
之后,我如何解压它然后重建它?
答案1
作为 ROOT 用户,我做什么:
像安装任何其他软件包一样安装 SRPM (
rpm --install [source-rpm-filename]
)检查
/root/rpmbuild/SPECS
目录并找到与您的包匹配的规格文件rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]
然后,生成的二进制包位于/root/rpmbuild/RPMS/
准备通过标准命令安装的目录中rpm --install
。
笔记:这只是构建标准二进制包中的内容。我发布此内容是为了回答具体问题,而不是如何更改源代码并生成新包。
要进行修改,您可以提供补丁作为输入并更改 SPECS 文件...或者您可以用您自己的更改替换*.tar.bz2
位于的标准/root/rpmbuild/SOURCES
,然后如上所述进行构建。
请注意,您可能必须更改 SPECS 包才能使其正常工作(通常通过删除修补程序并更改由 SPECS 文件编程的一些文件名)。
编辑
似乎以 root 身份构建 rpm 是一种不好的做法(来源)。作为非 root 用户它可以正常工作。
添加补丁的分步说明(来自这里):
- 将您的补丁复制到
rpmbuild/SOURCES
. - 编辑
rpmbuild/SPECS/package.spec
并在该行后面添加一个Patch0: mypatch.patch
右侧Source0: ...
。 - 在该
%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。