如何修改Fedora包和修复错误 [英] How to modify a Fedora package and fix bugs

查看:0
本文介绍了如何修改Fedora包和修复错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个来自Fedora的旧游戏,在一个名为Six的包中。它有一个错误,我想添加几个简单的功能。我在这里询问了这个过程的一个部分,(见How to deal with build dependencies in source RPM?)得到了一些答案,并发现学习曲线对我的旧大脑来说太多了。文档倾向于涵盖一个包可以做的所有事情,我很难挑选出我需要的部分。

我真正希望的是一个完整的工作流(希望只是一个命令列表和所涉及的目录的一个提及)。

它将从这个开始(它是有效的,甚至可能是标准的):

  • 查找带有rpm-qi Six的SRPM|grep来源
  • 使用rpm-i 6-0.5.3-38.fc35.src.rpm获取

结果:~/rpmBuild中的源代码和规范文件

修改并测试新版本后,需要填写的步骤如下:

  • 生成新的SRPM(模拟可以做到这一点吗?)
  • 构建新的RPM并在本地安装(我将根据需要测试并重复)
  • 报告错误和修复,可能作为拉取请求

如果需要,可以重新组织这些步骤。我知道mock可以从SRPM构建RPM,但我不知道如何直接从源代码到安装,并且在mock之外构建失败(qt-mt有一些问题)。

我希望得到一份共同完成这些任务的命令列表。我已经花了一周的时间来理解不同手册页之间的术语不匹配。或者只是奇怪的用法(为什么重建SRPM要构建二进制RPM,而不是SRPM?)

btw如果你想看看我提到的错误,

  • 安装六个
  • 启动
  • 将黑色设置为人
  • 将White设置为Expert
  • 将交换设置为启用
  • 单击顶部(或底部)行中的任何十六进制,然后观看Six报告崩溃并退出。

您可以再试一次,单击板中间,注意它不会崩溃。

我并不感到惊讶,这个错误以前没有被注意到。交换通常只在有经验的玩家之间启用。我怀疑一个有经验的球员会在顶排或底排先发制人。

推荐答案

今天我得到了构建自动播放器的乐趣。我在Sentry Peer上的工作得到了回报!:-)

怎么解释!我需要修补一些代码和自动会议/汽车链接。下面是:

获取源rpm:

sudo dnf download --source six -y

安装rpm-Build:

sudo dnf install rpm-build
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

安装src rpm(它将位于您运行步骤1的目录中):

rpm -ivh six-0.5.3-38.fc35.src.rpm

按照https://src.fedoraproject.org/rpms/six/blob/rawhide/f/six.spec安装构建要求,例如需要:

BuildRequires: make
BuildRequires:  gcc
BuildRequires:  kdelibs3-devel
BuildRequires:  desktop-file-utils

这样做:

sudo dnf install make gcc kdelibs3-devel desktop-file-utils

运行rpmbuild命令,使其应用所有补丁等,因为src rpm附带了Six-0.5.3.tar.gz(这与GitHub上-https://github.com/melisgl/six上的代码不同,我无法编译它):

我指的是这些文件:

localhost ~/rpmbuild/BUILD/six-0.5.3/tests $ ls ../../../SOURCES/
six-gcc43.patch
six-0.5.3.tar.gz
six-fix-DSO.patch

运行:

rpmbuild -ba ~/rpmbuild/SPECS/six.spec

应该构建RPM,但如您所知,自动播放是一个额外的程序,不是默认构建的。

这将创建一个Build文件夹。

cd ~/rpmbuild/BUILD/six-0.5.3/tests

编辑Makefile.am第84行并将其添加到$(LIB_KFILE)之后的位:

-lqt-mt

所以看起来是这样的:

-lm $(LIB_KFILE) -lqt-mt

并在Makefile.in的第374行执行相同的操作

默认情况下,它没有链接到libqt-mt

进入顶层并再次运行配置以重新生成生成文件:

cd ~/rpmbuild/BUILD/six-0.5.3
./configure
make clean
make
make check

这些应该都很好

返回到测试文件夹:

cd ~/rpmbuild/BUILD/six-0.5.3/tests

打开Auto-player.cpp并在第6行添加此代码(缺少此代码,因此不确定它是如何编译的):

#include <stdlib.h>

保存文件。

构建程序:

make auto-player

运行它:

./auto-player filename player1 player2

根据代码运行方式:

void play(char *filename, Poi<HexPlayer> vert, Poi<HexPlayer> hori)

让我知道你的进展如何!

谢谢!

-- https://sentrypeer.org

这篇关于如何修改Fedora包和修复错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆