টি এল; ডিআর
3 য় প্রচেষ্টা আসলে কাজ করে! আমি প্রথম 2 টি প্রচেষ্টা ছেড়ে দিচ্ছি যাতে ভবিষ্যতে এই প্রশ্নোত্তর জুড়ে আসতে পারে এমন অন্যরা আশাবাদী RPM সংস্করণ তথ্য পার্স করতে এবং কোনটি প্রথম, দ্বিতীয়, এর বংশটি নির্ধারণ করার জন্য অ-তুচ্ছ সমস্যা কতটা অন্তর্দৃষ্টি লাভ করবে প্রভৃতি
চেষ্টা # 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
এই কাজটি সম্পাদন করতে কমান্ডের কিছু বৈকল্পিক ব্যবহার করতে পারেন , তবে প্রদত্ত আরপিএমের প্রকৃত সংস্করণ তথ্যের বিন্যাসে যথেষ্ট পরিবর্তনশীলতা এবং অসঙ্গতি রয়েছে যে এটি ঠিক নয় ' টাস্ক পর্যন্ত।
চেষ্টা # 2 (ওপি বলেছেন যে কাজ করে না)
$ rpm -q --last kernel | head -n 1 | cut -d' ' -f1
kernel-2.6.35.14-106.fc14
এটি কেন কাজ করল না: আমার উচ্চ আশা ছিল যে এই পদ্ধতির ফলে ওপি যে সন্ধান করছে তার ফল পাবে, তবে @ জোয়েলের মন্তব্যে উল্লেখ করা হিসাবে এই একটিটি এই বিষয়টি হ'ল যে --last
স্যুইচ কেবলমাত্র সাজানো ফলাফলগুলি ফিরিয়ে দিচ্ছে? আরপিএম ইনস্টল করার তারিখ।
চেষ্টা # 3
এই এক অবশ্যই কাজ করবে। আমি RPM বিকাশ সরঞ্জাম নামে একটি সরঞ্জামের স্যুট পেয়েছি। এই স্যুটটিতে 2 টি সরঞ্জাম রয়েছে যা আপনাকে আরপিএমের একটি সংস্করণ অন্যর চেয়ে নতুন বা পুরান কিনা তা নির্ধারণ করার ক্ষমতা দেয়।
আরপিএম যদি ইতিমধ্যে ইনস্টল না করা থাকে তবে আপনি নিম্নলিখিত হিসাবে এটি করতে পারেন:
yum install rpmdevtools
প্রথম যে সরঞ্জামটি কার্যকর তা বলা হয় rpmdev-vercmp
। এই সরঞ্জামটি আরপিএমের 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