debugging - 如何修改 Fedora 软件包并修复错误

标签 debugging fedora rpm pull-request

我有一个来自 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/SPECSsix-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/

相关文章:

java - 第三方库 (JAR) 在 Debug模式下不起作用 (Java)

linux - 在 shell unix 中查看操作系统版本

linux - 使用yum install命令如何获取软件的版本号?

debugging - 避免消息队列溢出

javascript - 如何使用正则表达式清理 HTML 中的 for 循环?

linux - Docker 守护进程最近需要超过 1 分钟才能启动 - 为什么?

c++ - Qt : cannot find libraries 上的 Fedora V-Play

python - 如何手动安装 cx_Oracle rpm?

deployment - 有没有办法并行运行 RPM 安装?

c++ - 带字符串的 map 坏了?