Есть ли в заголовке RPM Epoch какие-либо ограничения? - PullRequest
4 голосов
/ 23 октября 2009

RPM поддерживает заголовок Epoch, чтобы обеспечить упорядочение версий в тех случаях, когда сравнение версий недостаточно, например, с 2.0a3> 2.0. Пакет без указания Epoch считается имеющим Epoch 0 или -1, в зависимости от некоторых скрытых факторов. Документация предполагает, что Epoch начинается с 1 и увеличивается с каждым выпуском.

Есть ли у значения Epoch какие-либо ограничения по размеру? Если бы я использовал 32-битное или большее значение, это вызвало бы какое-либо переполнение?

1 Ответ

5 голосов
/ 23 октября 2009

Это действительно проблема? Это займет у вас много времени, чтобы выпустить 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-битный номер эпохи. (В этом есть нечто большее - он читается через структуру rpmtd_s, в которой есть много причудливых указателей пустотности, но да, это uint32)

...