আমি ডিবিয়ান / চেঞ্জলগ থেকে প্যাকেজ সংস্করণটি কীভাবে বের করব?


11

প্যাকেজের সংস্করণ নম্বর পাওয়ার জন্য কোনও উত্স প্যাকেজের debian/changelogফাইল (বা debian/control?) পার্স করার সবচেয়ে শক্ত উপায় কী ? কিছুটা এইরকম:

pkgver=$(dpkg-parsechangelog | magic_goes_here)

আমি সংস্করণ নম্বরটি বের করতে চাই (এবং কেবলমাত্র সংস্করণ নম্বর) যাতে আমি এটি কোনও স্ক্রিপ্টে চালিত করতে পারি।

আমি dpkg-*এই উদ্দেশ্যে একটি ইউটিলিটি খুঁজে প্রত্যাশা ছিল , কিন্তু আমি এখনও একটি খুঁজে পাইনি।

উত্তর:


18

আপনার যদি সংস্করণ 1.17.0 বা তার পরে রয়েছে তবে আপনি ব্যবহার করতে পারেন

dpkg-parsechangelog --show-field Version

এরপরে আর আউটপুট প্রক্রিয়া করার দরকার নেই। এই সংস্করণটি বর্তমানে (ফেব্রুয়ারী 2014) দেবিয়ান টেস্টিংয়ে উপলব্ধ।


1
@ রিচার্ডহানসেন: এর জন্য দুঃখিত, এটি প্রমাণিত হয়েছে যে ডিবিয়ান স্টেবলের উপস্থিত সংস্করণে পতাকাটি পাওয়া যায় না।
মার্টিন গিজলার

উবুন্টু 12.04 এর জন্য একই। এটি উবুন্টুতে উপস্থিত রয়েছে 14.04 যদিও।
স্টিফান

7

এটি করার অসংখ্য উপায় রয়েছে।

dpkg-parsechangelog | sed -n 's/^Version: //p'

বা বিকল্পভাবে:

dpkg-parsechangelog | grep Version: | cut -d' ' -f2-


আমি আরও কিছুটা শক্তিশালী কিছু আশা করছিলাম - deb-control(5)ম্যান পৃষ্ঠাটি ফর্ম্যাটটি স্পষ্টভাবে বর্ণনা করে না এবং আমি কোনও অনুমানও করতে চাই না। উদাহরণস্বরূপ, এটি এটি পরিষ্কার করে না যে ক্ষেত্রগুলি অবশ্যই একটি লাইনে শুরু হওয়া উচিত ("ক্ষেত্রগুলি কেবল ক্ষেত্রের ট্যাগ দ্বারা সীমিত করা হয়।")। এটি আরও বলে যে একটি ক্ষেত্র একাধিক লাইন বিস্তৃত করতে পারে, এবং এটি ট্যাগ এবং মানের মধ্যে ব্যবধান সম্পর্কে কিছুই বলে না, তাই সম্ভবত Version:123পূর্ববর্তী ক্ষেত্রের ধারাবাহিকতা হিসাবে ব্যাখ্যা করা উচিত এবং পৃথক সংস্করণ ক্ষেত্র নয় (অভাবের কারণে) কোলন পরে একটি স্থান)।
রিচার্ড হ্যানসেন

বাস্তবে, থেকে আউটপুট dpkg-parsechangelogমত চেহারা যাচ্ছে Version: 0.6.11-2তোমাদের আরো জোরালো পার্সিং কিছু চান debian/controlবিন্যাস, আপনি ব্যবহার করতে পারে python-debianবা libparse-debcontrol-perl
অ্যান্ড্রুসোমথিং

1

dpkg-parsechangelogকাজ করে, এবং পূর্বে উত্তর সেড / গ্রেপের মাধ্যমে আউটপুটটি পাইপ করা পুরোপুরি দৃust় হওয়া উচিত। আপনি যদি dpkg-parsechangelogআউটপুট বিন্যাসের সুনির্দিষ্ট বিবরণ এবং বেশিরভাগ অন্যান্য ডিবিয়ান-স্টাইল নিয়ন্ত্রণ ফাইলগুলি জানতে চান তবে আরএফসি 822 দেখুন । কোনও ডাবল প্যাকেজ সংস্করণে কোনও নতুন লাইন, স্থান বা অন্য কোনও বিশেষ বা নিয়ন্ত্রণের অক্ষর (দেখুন man deb-version) ধারণ করা ঠিক হবে না , সুতরাং Version: blahআউটপুটে " " রেখাটি সর্বদা উপস্থিত থাকবে এবং এটি সর্বদা এর একটি একক লাইন থাকবে নিজের।

যাইহোক, dpkg-parsechangelogএকটি পরিবর্তনলগ থেকে কেবলমাত্র বর্তমান সংস্করণ নম্বর পেতে চালানো একটি খুব ভারী প্রোগ্রাম। আপনাকে ফলাফল দেওয়ার জন্য এটি পার্ল চালাতে এবং একটি চিত্তাকর্ষকভাবে বিশাল সংখ্যক গ্রন্থাগার লোড করতে হবে, যার বেশিরভাগ আপনি ব্যবহার করবেন না। ধীর প্ল্যাটফর্মে, বা ধীর ফাইল স্টোরেজ মিডিয়া সহ, বা যখন আপনাকে এই সংস্করণটি অনেক সময় পার্সিং করার দরকার হয়, এটি যথেষ্ট বেদনাদায়ক ধীর হয়ে যায়। পরিবর্তে, প্রথম লাইনে প্রথম বন্ধনের প্রথম সেটটির ভিতরে যা আছে কেবল তা ব্যবহার করুন:

head -1 debian/changelog | awk -F'[()]' '{print $2}'

এটি আপনাকে changelogস্ট্যান্ডার্ড ফর্ম্যাটটি ব্যবহার করে কোনও বৈধ ফাইল সহ সঠিক বর্তমান প্যাকেজ সংস্করণটি পেতে পারে (এবং অ-মানক debian/changelogবিন্যাসগুলি, সমস্ত ব্যবহারিক সাধারণ উদ্দেশ্যে, কখনও ব্যবহৃত হয় না)।


-1

যেমন আমি দেখেছি প্যাকেজ সংস্করণটি চেঞ্জলগ ফাইলের শিরোনামে অন্তর্ভুক্ত। যাতে আপনি এটি পছন্দ করতে পারেন

pkgver=$(dpkg-parsechangelog | head

আমি ইনস্টলড প্যাকেজগুলির জন্য এই কমান্ডটি চেষ্টা করেছি tried

aptitude changelog shutter | head

&

jai@frank-Jai:~$ aptitude changelog shutter | head
Get: Changelog of shutter
shutter (0.89.0-0ubuntu1) quantal; urgency=low

  * New upstream release.
   - Adds an AppIndicator (LP: #805464).
  * debian/control: Recommend libgtk2-appindicator-perl

 -- Andrew Starr-Bochicchio <a.starr.b@gmail.com>  Sat, 11 Aug 2012 17:36:18 -0400

shutter (0.88.3-1) unstable; urgency=low
jai@frank-Jai:~$ 

1
আমি সংস্করণ নম্বর এবং কেবল সংস্করণ নম্বর চাই যাতে আমি এটি কোনও স্ক্রিপ্টে ম্যানিপুলেট করতে পারি।
রিচার্ড হ্যানসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.