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

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

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

rpm은 패킷이 업데이트인지 여부를 결정하기 위해 어떤 기준을 사용합니까?

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

나는 이 함수가 소스 코드의 어디에 있는지 스스로 찾을 만큼 기술적으로 능숙하지 않습니다. 어쩌면 누군가가 도울 수 있습니다.

매우 감사합니다.

답변1

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

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

$epoch, $name, 및 $verion모두 동일한 경우 $release비교하여 업데이트인지 확인합니다. $versions가 다른 경우 이를 구문 분석하고 더 높은 값을 업데이트합니다. 다른 경우 $epoch최신 버전이 더 높습니다.

RPM 업데이트 비교를 위한 소스 코드를 찾을 수 있다고 생각합니다.여기함수에서 parseEVRsum rpmdsCompareEVR.

관련 정보