0

我正在尝试在 CentOS 6 上构建 Mercurial,所以这是我目前所做的:

我得到了 mercurial 的最新资源,文件名为mercurial-2.4.1.tar.gz

我尝试在其上运行 rpmbuild 并得到以下信息:

# rpmbuild -tb mercurial-2.4.1.tar.gz
error: File /home/someuser/rpms/mercurial/mercurial-snapshot.tar.gz: No such file or directory

所以我尝试通过从另一个人那里复制来创建它想要的文件:

# cp mercurial-2.4.1.tar.gz mercurial-snapshot.tar.gz

我再试一次,似乎通过了之前的错误:

# rpmbuild -tb mercurial-2.4.1.tar.gz
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.vV9ZXc
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf mercurial-snapshot
+ /usr/bin/gzip -dc /home/someuser/rpms/mercurial/mercurial-snapshot.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd mercurial-snapshot
/var/tmp/rpm-tmp.vV9ZXc: line 34: cd: mercurial-snapshot: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.vV9ZXc (%prep)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.vV9ZXc (%prep)

我不确定发生了什么,我的猜测是 rpmbuild 无法创建文件......有什么想法吗?

4

4 回答 4

1

我发现为尚不可用的 CentOS 构建 RPM 的最简单方法是从 Fedora 找到源 RPM 并rpmbuild --rebuild在其上进行操作。CentOS在这里记录了它,但现在似乎已经关闭。

是一个 src RPM,您可以尝试开始使用。

于 2012-12-23T13:32:11.593 回答
0

问题是捆绑的规范文件的版本默认为“snapshot”,因此它将查找名为“mercurial-snapshot.tar.gz”的 tar 文件,并且还期望提取的目录为“mercurial-snapshot” (所以你不能只重命名 tar 文件)。

处理此问题的最佳方法(或至少一种方法)是提取规范文件,使用正确的版本和发布号对其进行更新,然后从中构建 rpm。

这是过程:

tar fxz mercurial-X.Y.tar.gz --strip-components=2 mercurial-X.Y/contrib/mercurial.spec

将规范文件放在 rpmbuild/SPECS 并编辑它。将“Version: snapshot”行替换为“Version: XY”,将“Release: 0”行替换为“Release: 1.xyz”,其中xyz 是自定义标签,因此您知道您自己构建了包。

然后运行 ​​rpmbuild:

rpmbuild -bb --target=i686 SPECS/mercurial.spec

如果您正在构建 64 位系统,请使用 --target=x86_64。

然后,您应该在 RPMS/$target 目录中有一个正确构建和命名的 rpm 文件。

于 2013-08-10T05:25:34.163 回答
0

您没有 /var/tmp/ 目录或无法写入它。尝试创建它:mkdir /var/tmp- 您可能必须使用“sudo”才能使其工作,具体取决于您的系统设置。

于 2012-12-23T11:57:42.003 回答
0

我认为通过 cp 命令创建 tarball 并不好。

您应该将解压官方 tarball 后生成的 mercurial-[version]/ 目录重命名为 mercuial-snapshot/,然后创建名为 mercurial-snapshot.tar.gz 的目录的压缩 tar 存档。

$ tar zxvf mercurial-2.4.1.tar.gz 
$ mv mercurial-2.4.1 mercurial-snapshot
$ tar zcvf mercurial-snapshot.tar.gz mercurial-snapshot
于 2012-12-25T01:47:47.917 回答