RPM支持Epoch标头,以便在版本比较不充分的情况下提供版本排序,例如2.0a3> 2.0。没有指定Epoch的包被认为具有0或-1的Epoch,这取决于一些不明确的因素。文档表明,Epoch从1开始,每次发布时都会增加。
Epoch值是否有任何大小限制?如果我使用的是32位或更大的值,会导致任何类型的溢出吗?
答案 0 :(得分: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。)