質問

RPMは、バージョンの比較が十分でない場合(たとえば2.0a3>など)にバージョンの順序付けを提供するエポックヘッダーをサポートしています。 2.0。エポックが指定されていないパッケージは、いくつかのあいまいな要因に応じて、0または-1のエポックを持つと見なされます。ドキュメントでは、エポックは1から始まり、リリースごとに増分されることを示唆しています。

エポック値にはサイズ制限がありますか? 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を介して読み取られます。これは派手なシュマンシーvoidポインターをたくさん持っていますが、ええ、それはuint32です。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top