![使用 rpmbuild 将文件压缩为 rpm 时出现错误](https://linux22.com/image/194670/%E4%BD%BF%E7%94%A8%20rpmbuild%20%E5%B0%86%E6%96%87%E4%BB%B6%E5%8E%8B%E7%BC%A9%E4%B8%BA%20rpm%20%E6%97%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF.png)
我下载这个包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 中修复。