RPM支持Epoch标头,以在版本比较不充分的情况下提供版本排序,例如2.0a3> 2.0.没有指定Epoch的包被认为具有0或-1的Epoch,这取决于一些不明确的因素.文档表明Epoch从1开始并随每个版本递增.
Epoch值是否有任何大小限制?如果我使用32位或更大的值,这会导致任何类型的溢出吗?
解决方法:
这真的是一个问题吗?你需要很长时间才能获得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.)