टी एल; डॉ
तीसरा प्रयास वास्तव में काम करता है! मैं पहले 2 प्रयासों को छोड़ रहा हूं ताकि भविष्य में इस प्रश्नोत्तर में आने वाले अन्य लोगों को उम्मीद है कि आरपीएम संस्करण की जानकारी को पार्स करना और पहले, दूसरे नंबर पर आने वाले वंश का निर्धारण करना गैर-तुच्छ समस्या है। आदि।
# 1 प्रयास किया (ओपी ने कहा कि काम नहीं किया)
यह कमांड आउटपुट को क्रमबद्ध करेगा और आपको उन्हें संस्करण क्रम में देगा:
$ 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
इस कार्य को करने के लिए कमांड के कुछ प्रकार का उपयोग कर सकते हैं , लेकिन किसी दिए गए आरपीएफ के लिए वास्तविक संस्करण की जानकारी के प्रारूपण में पर्याप्त परिवर्तनशीलता और असंगति है कि यह सिर्फ isn है ' कार्य करने के लिए टी।
# 2 का प्रयास किया (ओपी ने कहा कि काम नहीं किया)
$ rpm -q --last kernel | head -n 1 | cut -d' ' -f1
kernel-2.6.35.14-106.fc14
यह क्यों काम नहीं करता: मुझे उच्च उम्मीद थी कि यह दृष्टिकोण ओपी के लिए देख रहे परिणामों का परिणाम देगा, लेकिन @Joel के रूप में इस एक के साथ मुद्दा टिप्पणियों में बताया गया है, यह है कि --last
स्विच केवल परिणामों को हल कर रहा है आरपीएम स्थापित होने की तारीख।
# 3 प्रयास करें
यह काम जरूर करेगा। मुझे RPM डेवलपमेंट टूल्स नामक उपकरणों का एक सूट मिला। इस सूट में 2 उपकरण हैं जो आपको यह निर्धारित करने की क्षमता देंगे कि आरपीएम का एक संस्करण नया है या दूसरे की तुलना में पुराना है।
यदि RPM पहले से स्थापित नहीं है तो आप निम्न प्रकार से कर सकते हैं:
yum install rpmdevtools
पहला उपकरण जो उपयोगी है उसे कहा जाता है rpmdev-vercmp
। यह उपकरण RPM के 2 नामों की तुलना कर सकता है और आपको बताता है कि कौन सा नया है। उदाहरण के लिए:
$ 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 -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 के लिए एक विकल्प
एक विकल्प जो टिप्पणियों में उल्लिखित ओपी का उपयोग करना है 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