5

RPM 支持 Epoch 标头以在其版本比较不充分的情况下提供版本排序,例如 2.0a3 > 2.0。没有指定 Epoch 的包被认为具有 0 或 -1 的 Epoch,这取决于一些模糊的因素。文档建议 Epoch 从 1 开始,并随着每个版本增加。

Epoch 值有大小限制吗?如果我使用 32 位或更大的值,这会导致任何类型的溢出吗?

4

1 回答 1

5

这真的是一个问题吗?您需要很长时间才能发布 2^32 个版本!无论如何,我在 rpm 源代码中找到了这个:

int rpmVersionCompare(Header first, Header second)
{
    struct rpmtd_s one, two;
    static uint32_t zero = 0;
    uint32_t *epochOne = &zero, *epochTwo = &zero;

所以我会说不要使用 64 位的纪元数。(除此之外还有更多内容——它是通过 struct rpmtd_s 读取的,它有很多花哨的 schmancy void 指针,但是是的,它是 uint32。)

于 2009-10-23T19:01:29.113 回答