使用 rpmbuild 将文件压缩为 rpm 时出现错误

使用 rpmbuild 将文件压缩为 rpm 时出现错误

我下载这个包util-linux-2.23.2-65.el7_9.1.src.rpm并解压

 rpm2cpio ./util-linux-2.23.2-65.el7_9.1.src.rpm | cpio -idmv

在使用的文件中有一个名为util-linux-2.23.2.tar.xz

我已提取此文件并编辑其中一个文件 login.c

然后我使用命令压缩文件一次

tar -cJvf util-linux-2.23.2.tar.xz util-linux-2.23.2/

现在,当我尝试将文件压缩为 rpm 文件时,我可以使用以下命令

rpmbuild -ba ~/rpmbuild/SOURCES/util-linux.spec

我有这个错误:

tch
+ /usr/bin/patch -p1 -s
+ /usr/bin/cat /root/rpmbuild/SOURCES/0143-lsmem-make-split-optional-follow-output-by-default.patch
+ /usr/bin/patch -p1 -s
+ /usr/bin/cat /root/rpmbuild/SOURCES/0144-libmount-fix-access-utab-write-test.patch
+ /usr/bin/patch -p1 -s
+ /usr/bin/cat /root/rpmbuild/SOURCES/0145-login-add-LOGIN_PLAIN_PROMPT-to-login.defs.patch
+ /usr/bin/patch -p1 -s
1 out of 2 hunks FAILED -- saving rejects to file login-utils/login.c.rej
error: Bad exit status from /var/tmp/rpm-tmp.GN6oqO (%prep)


RPM build errors:
    bogus date in %changelog: Thu Oct 10 2012 Karel Zak <[email protected]> 2.22.1-1
    bogus date in %changelog: Thu Feb 07 2012 Karel Zak <[email protected]> 2.21-0.1
    bogus date in %changelog: Fri Aug  2 2011 Karel Zak <[email protected]> 2.20-0.1
    bogus date in %changelog: Thu Jan  8 2010 Karel Zak <[email protected]> 2.17-1
    bogus date in %changelog: Wed Dec 14 2006 Karel Zak <[email protected]> 2.13-0.46
    bogus date in %changelog: Wed Mar  9 2006 Jesse Keating <[email protected]> 2.13-0.20
    bogus date in %changelog: Wed Mar  9 2006 Jesse Keating <[email protected]> 2.13-0.19
    bogus date in %changelog: Sun Mar 13 2004  <[email protected]>
    bogus date in %changelog: Mon Jun 14 2003 Elliot Lee <[email protected]> 2.11y-20
    bogus date in %changelog: Tue Jan 28 2002 Bill Nottingham <[email protected]> 2.11n-4
    Bad exit status from /var/tmp/rpm-tmp.GN6oqO (%prep)
[root@vps8865 ~]# ^C

答案1

您正在使用 编译一个新包rpmbuild,而不是压缩它。

您的错误是您编辑了源 tarball 中的文件,然后用您的更改替换了原始文件。但是,源包的补丁之一无法应用,因为它是从原始源而不是您修改后的源生成的。

您应该使用diff来生成一个包含对源代码的更改的补丁,并将其应用在规范文件中的所有其他补丁之后(通过在规范文件中添加另一个 Patch### 行并将 %patch 行添加到 % 来包含它)准备)。最终结果将是您更改的唯一文件是规范文件并将 .patch 文件添加到源目录。请参阅RPM 包装指南正确创建补丁。

笔记:看来您正在更改另一个补丁更改的内容,因此您可能需要获取原始源 tarball 并首先应用所有其他补丁,然后修改源并生成差异。

至于虚假日期,RPM 开始检查该日期是星期几是否正确,所有这些日期都是错误的。我想如果你想构建这个包你就必须修复它。它可能已在 RHEL 中修复。

相关内容