我有一个来自 Fedora 的老游戏,位于一个名为 6 的包中。它有一个错误,我想添加一些简单的功能。我在这里询问了该过程的一部分(请参阅 How to deal with build dependencies in source RPM? )得到了一些答案,并发现学习曲线对于我的旧大脑来说太大了。文档往往想要涵盖一个包可以做的所有事情,但我很难挑选出我需要的部分。
我真正希望的是一个完整的工作流程(希望只是一个命令列表和所涉及的目录的提及)。
它会以此开始(它有效,甚至可能是标准的):
- 使用 rpm -qi 6 查找 SRPM | grep 来源
- 使用 rpm -i Six-0.5.3-38.fc35.src.rpm 获取
结果:~/rpmbuild 中的源代码和规范文件
我修改并测试新版本后需要填写以下步骤:
- 构建新的 SRPM(可以模拟执行此操作吗?)
- 构建新的 RPM 并在本地安装它们(我将根据需要进行测试和重复)
- 报告错误和修复,可能作为拉取请求
如果需要,可以重新组织这些步骤。我知道mock可以从SRPM构建RPM,但我没有看到如何直接从源代码到安装,并且在mock之外构建失败(qt-mt存在一些问题)。
我希望有一个可以协同工作来完成这些事情的命令列表。我已经尽我所能,没有花一周的时间来理解各个手册页之间的术语不匹配。或者只是奇怪的用法(为什么 SRPM 的 REbuild 会构建二进制 RPMS 而不是 SRPM?)
顺便说一句,如果你想看看我提到的错误,
- 安装六个
- 开始吧
- 将 Black 设置为人类
- 将白棋设置为专家
- 启用交换
- 单击顶(或底)行中的任意十六进制,然后观察其中六个报告崩溃并退出。
您可以再试一次,单击板的中间,发现它没有崩溃。
对于之前没有注意到这个错误,我并不感到惊讶。交换通常只在经验丰富的玩家之间启用。我怀疑经验丰富的玩家会在顶排或底排与其他玩家进行第一步行动。
最佳答案
你处理得很好。你实际上只错过了一件事。安装 src.rpm 后:
rpm -i 6-0.5.3-38.fc35.src.rpm
您有six.spec
在~/rpmbuild/SPECS
和six-SOMETHING.tar.gz
在~/rpmbuild/SOURCES
快速而肮脏的方法是解压 six-SOMETHING.tar.gz
。修改文件并打包回来。进入与原始 tar 球相同的结构。
然后就是:
rpmbuild -bs ~/rpmbuild/SPECS/six.spec
这将生成 src.rpm,然后您可以使用模拟构建它:
模拟六.src.rpm
(一种更快、更脏的方法是调用 rpmbuild -ba
直接构建 rpm,但模拟是一种更干净的方法)。
处理包中修复的标准方法是添加补丁。 https://rpm-packaging-guide.github.io/#patching-software但如果你不关心可持续性和长期安全,那么上面的路径就可以了。
如果您想针对 fedora Six 的软件包提交错误,您可以在此处进行 https://bugz.fedoraproject.org/six
关于debugging - 如何修改 Fedora 软件包并修复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70911242/