使用模拟添加补丁
Adding a patch using mock
我正在尝试使用 mock 创建 rpm。 https://fedoraproject.org/wiki/Projects/Mock
我能够通过源 rpm 构建 rpm。现在我想给这个包添加一个补丁,但我不知道如何进行。你能让我知道我该如何继续吗? modify/patch 使用模拟包的方法是什么?
这里的正常做法是不使用 mock 以任何方式修改您的包。 Mock 只是一种确保你的包每次都在干净的环境中构建的方法(一个新的 chroot),它并不意味着做更多的事情。
然后,正常的做法是将补丁放入 RPM 本身的规范文件中。
这需要两部分——首先,将补丁文件作为包的一部分包含在内,其次,它的应用。
首先,在规范文件顶部附近列出补丁,通常紧跟在 Source
行(或多行)之后。每个补丁都有一个数字,正常的惯例是从 0 开始计数,所以如果你只有一个,它看起来像这样:
Patch0: packagename-version-terse_patch_description.patch
与源文件一样,该文件名中最后一个 /
之前的所有内容都会被删除,因此您可以根据需要使用 URL。该补丁需要在您的 RPM 源目录中(通常在 tarball 旁边。)
此时,如果您从修改后的规范构建源 RPM,生成的 src.rpm 文件将包含此补丁文件。 (试一试——rpm -qlp packagename-ver-rel.src.rpm
)。但是,它不会应用。为此,您需要使用 %patch
宏。
这位于规范文件的 %prep
部分,通常紧接在 %setup
宏行之后。每个 %patch
宏都有一个编号对应于 header 中的 Patch 行,所以对于你的 Patch0
,添加这样一行:
%patch0 -p1 -b .bugfix
同样按照惯例,RPM 中使用的补丁是向上构建的,因此 -p1
是合适的。 (方便的是,这对于使用 git 进行的差异也是正确的。)并且 -b .bugfix
位不是必需的,但它是调试的习惯,我想它可以作为一种内联注释这个特定的补丁宏做了什么。 (将字符串 "bugfix" 替换为适合您的实际补丁的内容。)
我正在尝试使用 mock 创建 rpm。 https://fedoraproject.org/wiki/Projects/Mock
我能够通过源 rpm 构建 rpm。现在我想给这个包添加一个补丁,但我不知道如何进行。你能让我知道我该如何继续吗? modify/patch 使用模拟包的方法是什么?
这里的正常做法是不使用 mock 以任何方式修改您的包。 Mock 只是一种确保你的包每次都在干净的环境中构建的方法(一个新的 chroot),它并不意味着做更多的事情。
然后,正常的做法是将补丁放入 RPM 本身的规范文件中。
这需要两部分——首先,将补丁文件作为包的一部分包含在内,其次,它的应用。
首先,在规范文件顶部附近列出补丁,通常紧跟在 Source
行(或多行)之后。每个补丁都有一个数字,正常的惯例是从 0 开始计数,所以如果你只有一个,它看起来像这样:
Patch0: packagename-version-terse_patch_description.patch
与源文件一样,该文件名中最后一个 /
之前的所有内容都会被删除,因此您可以根据需要使用 URL。该补丁需要在您的 RPM 源目录中(通常在 tarball 旁边。)
此时,如果您从修改后的规范构建源 RPM,生成的 src.rpm 文件将包含此补丁文件。 (试一试——rpm -qlp packagename-ver-rel.src.rpm
)。但是,它不会应用。为此,您需要使用 %patch
宏。
这位于规范文件的 %prep
部分,通常紧接在 %setup
宏行之后。每个 %patch
宏都有一个编号对应于 header 中的 Patch 行,所以对于你的 Patch0
,添加这样一行:
%patch0 -p1 -b .bugfix
同样按照惯例,RPM 中使用的补丁是向上构建的,因此 -p1
是合适的。 (方便的是,这对于使用 git 进行的差异也是正确的。)并且 -b .bugfix
位不是必需的,但它是调试的习惯,我想它可以作为一种内联注释这个特定的补丁宏做了什么。 (将字符串 "bugfix" 替换为适合您的实际补丁的内容。)