rpm은 패키지가 업데이트인지 어떻게 확인합니까?

rpm은 패키지가 업데이트인지 어떻게 확인합니까?

어쩌면 이 질문이 조금 이상할 수도 있지만 여기서는 어려움을 겪고 있습니다.

rpm은 어떤 기준에 따라 패킷이 업데이트인지 아닌지를 결정합니까?

버전과 릴리스는 문자열이므로 다른 버전과 비교할 수 없습니다. 버전을 정의하는 플래그에는 epoch, 버전, 릴리스의 세 가지가 있습니다. rpm(및 yum, dnf, ...)이 빌드 시간을 확인하여 패키지가 업데이트인지 확인합니까? 나는 이것을 거의 믿을 수 없지만 다른 것은 알 수 없습니다.

나는 혼자서 소스 코드에서 이 기능의 위치를 ​​찾을 만큼 숙련되지 않았습니다. 어쩌면 누군가가 도울 수 있습니다.

매우 감사합니다.

답변1

RPM 패키지에는 특정 형식이 있습니다.[$epoch:]$name-$version-$release.$arch

$epoch쉽게 비교할 수 있는 정수이며, 이를 사용하지 않는 패키지가 있어 그냥 생략됩니다. $name단순히 버전 간에 변경되어서는 안 되는 문자열입니다. $version구문 분석하고 비교할 수 있는 형식의 버전 문자열입니다(일반적으로 마침표로 구분된 정수). $release일반적으로 정수로 시작하는 문자열이지만 어떤 배포용으로 만들어졌는지에 대한 정보를 포함할 수도 있습니다.

$epoch, $name및 모두 $verion동일한 경우 $release비교하여 업데이트인지 확인합니다. s $version가 다르면 구문 분석되고 더 높은 것이 업데이트됩니다. 다른 경우에는 $epoch높은 쪽이 업데이트됩니다.

내가 생각하는 RPM 업데이트 비교를 위한 소스 코드는 찾을 수 있습니다.여기기능 parseEVRrpmdsCompareEVR.

관련 정보