TL; DR
세 번째 시도는 실제로 작동합니다! 앞으로이 Q & A를 겪을 수있는 다른 사람들이 RPM 버전 정보를 구문 분석하고 계보가 첫 번째, 두 번째, 기타
시도 # 1 (OP가 작동하지 않는다고 말함)
이 명령은 출력을 정렬하여 버전 순서로 제공합니다.
$ rpm -q kernel --queryformat "%{VERSION} %{RELEASE}\n"|sort -n
2.6.18 238.12.1.el5
2.6.18 238.19.1.el5
2.6.18 274.12.1.el5
2.6.18 308.8.2.el5
작동하지 않는 이유 : 순진한 사용자는이 sort
명령을 수행하기 위해 일부 변형 명령을 사용할 수 있다고 생각할 수 있지만 주어진 RPM에 대한 실제 버전 정보의 형식화에는 충분한 가변성과 불일치가 있습니다. 작업까지.
시도 2 번 (OP가 작동하지 않는다고 말함)
$ rpm -q --last kernel | head -n 1 | cut -d' ' -f1
kernel-2.6.35.14-106.fc14
작동하지 않는 이유 : 이 방법으로 OP가 원하는 결과를 얻을 수 있기를 기대했지만 @Joel이 의견에서 지적한 것처럼이 문제는 --last
스위치가 정렬 된 결과를 단순히 반환한다는 것입니다 RPM이 설치된 날짜
시도 # 3
이것은 분명히 일을 할 것입니다. RPM Development Tools라는 도구 모음을 찾았습니다. 이 제품군에는 한 버전의 RPM이 다른 버전보다 최신 버전인지 또는 이전 버전인지 확인할 수있는 2 가지 도구가 있습니다.
RPM이 아직 설치되지 않은 경우 다음과 같이 수행 할 수 있습니다.
yum install rpmdevtools
유용한 첫 번째 도구는 rpmdev-vercmp
입니다. 이 도구는 두 가지 이름의 RPM을 비교하여 최신 이름을 알려줍니다. 예를 들면 다음과 같습니다.
$ rpmdev-vercmp kernel-2.6.35.14-100.fc14.x86_64 kernel-2.6.35.14-103.fc14.x86_64
0:kernel-2.6.35.14-103.fc14.x86_64 is newer
이것을 찾은 후 나는 모두 쉘 스크립트를 작성하기로 설정했지만 깨달았으므로 몇 분 더 찌르고 스위트에서 다른 도구를 찾았습니다 rpmdev-sort
.
이 도구는 유료입니다. 다음과 같이 사용할 수 있습니다.
$ rpm -q kernel | rpmdev-sort
kernel-2.6.35.14-100.fc14.x86_64
kernel-2.6.35.14-103.fc14.x86_64
kernel-2.6.35.14-106.fc14.x86_64
RPM 개발 도구에는 다른 도구를 살펴볼 가치가있는 많은 도구가 있으므로 나중에 참조 할 수 있도록 여기에 나열하겠습니다.
$ rpm -q --queryformat '[%{NAME} %{FILEMODES:perms} %{FILENAMES}\n]' rpmdevtools \
| grep -E "^.* -..x..x..x " \
| awk '{print $3}' \
| sed 's#/usr/bin/##' \
| paste - - - \
| column -t
annotate-output checkbashisms licensecheck
manpage-alert rpmargs rpmdev-bumpspec
rpmdev-checksig rpmdev-cksum rpmdev-diff
rpmdev-extract rpmdev-md5 rpmdev-newinit
rpmdev-newspec rpmdev-packager rpmdev-rmdevelrpms
rpmdev-setuptree rpmdev-sha1 rpmdev-sha224
rpmdev-sha256 rpmdev-sha384 rpmdev-sha512
rpmdev-sort rpmdev-sum rpmdev-vercmp
rpmdev-wipetree rpmelfsym rpmfile
rpminfo rpmls rpmpeek
rpmsodiff rpmsoname spectool
# 3의 대안
의견에 언급 된 OP가 대안을 사용하는 것 sort -V
입니다. 그것은 자본 -V
입니다. 이 스위치에 대해 들어 본 적이 없습니다. 로부터 sort
매뉴얼 페이지
-V, --version-sort
natural sort of (version) numbers within text
결과적으로 sort
버전 번호를 정렬하는 기능을 제공하므로 다음과 같이 정렬을 수행 할 수도 있습니다.
$ rpm -q kernel | sort -V
kernel-2.6.35.14-100.fc14.x86_64
kernel-2.6.35.14-103.fc14.x86_64
kernel-2.6.35.14-106.fc14.x86_64