我正在尝试使用mock创建rpm。 https://fedoraproject.org/wiki/Projects/Mock
我可以通过源rpm建立rpm。现在我想为这个包添加一个补丁,我不知道如何继续。能告诉我怎样才能继续这样做?使用mock修改/修补包的方法是什么?
答案 0 :(得分:2)
这里的常规方法是不使用mock以任何方式修改您的包。 Mock只是一种确保你的包装每次都在一个干净的环境中构建的方式(一个新鲜的chroot),而且它并不是真正意义上做的更多。
那么,正常的做法是将补丁放在RPM本身的spec文件中。
这需要两个部分 - 首先,将补丁文件作为包的一部分包含在内,第二部分是其应用程序。
首先,列出spec文件顶部附近的补丁,通常在Source
行(或行)之后。每个补丁都有一个数字,正常的约定是从0开始计数,所以如果你只有一个,那将是这样的:
Patch0: packagename-version-terse_patch_description.patch
与源文件一样,该文件名中最后一个/
的内容将被删除,因此您可以根据需要使用URL。补丁需要位于RPM源目录中(通常位于tarball旁边。)
此时,如果您从修改后的规范构建源RPM,则生成的src.rpm文件将包含此修补程序文件。 (试试吧 - rpm -qlp packagename-ver-rel.src.rpm
)。但是,它不会被应用。为此,您需要使用%patch
宏。
这是在specfile的 %prep
部分,通常在%setup
宏行之后。每个%patch
宏都有一个与标题中的Patch行对应的数字,因此对于Patch0
,请添加如下所示的行:
%patch0 -p1 -b .bugfix
再次按照惯例,RPM中使用的补丁是一级建立的,因此-p1
是合适的。 (方便的是,这对于使用git制作的差异也是正确的。)并且-b .bugfix
位不是必需的,但是它通常用于调试,我想作为一种内联评论此特定修补程序宏的作用。 (替换字符串"错误修正"使用适合您实际补丁的内容。)