MacPorts의 버전 번호 비교는 RPM의 원래 알고리즘을 기반으로합니다. 현재 1.2 > 1.2$something
이되는 수정자를 지원하지 않습니다. 두 버전 문자열을 비교하는 동안 영숫자가 아닌 문자는 분리 기능을 제외하고 무시됩니다. 이것은 1.2.3 == 1-2_3
이됩니다.
문제를 해결하려면 epoch
필드를 사용할 수 있습니다.이 필드는 MacPorts의 버전 비교 알고리즘에 따라 버전 번호가 "뒤로 이동"할 때마다 늘려야합니다.
나중에 참조 할 수 있도록 버전 비교를위한 소스 코드는 https://svn.macports.org/repository/macports/trunk/base/src/pextlib1.0/vercomp.c입니다. 수동으로이 코드를 실행하지 않고 두 개의 버전 번호를 테스트해야하는 경우 Ryan's vercmp script을 사용할 수 있습니다. 그의 스크립트는 현재 MacPorts의 새로운 번들 tclsh와 함께 작동하도록 업데이트되지 않았습니다. 고정 버전은 다음과 같습니다.
#!/usr/bin/env port-tclsh
# Runs vercmp with the two version numbers provided to see which is newer.
package require macports 1.0
mportinit
if {${argc} != 2} {
ui_error "usage: [file tail ${argv0}] version1 version2"
exit 1
}
set version1 [lindex ${argv} 0]
set version2 [lindex ${argv} 1]
set cmp [vercmp ${version1} ${version2}]
if {${cmp} < 0} {
ui_msg "MacPorts considers ${version1} to be less than ${version2}."
} elseif {${cmp} > 0} {
ui_msg "MacPorts considers ${version1} to be greater than ${version2}."
} else {
ui_msg "MacPorts considers ${version1} to be equal to ${version2}."
}