আমি কীভাবে ইনস্টল করা প্যাকেজটির সংস্করণ নম্বরটি dpkg এর মাধ্যমে খুঁজে পেতে পারি?


83

আমি dpkg -lপ্যাকেজের কোন সংস্করণ ইনস্টল করেছি তা জানতে কমান্ডটি ব্যবহার করি। উদাহরণ স্বরূপ:

dpkg -l network-manager

প্যাকেজে তথ্য ফেরত দেয়:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                      Version                   Description
+++-=========================-=========================-==================================================================
ii  network-manager           0.8.3~git.20101118t223039 network management framework daemon

আপনি দেখতে পাচ্ছেন, এটি 0.8.3~git.20101118t223039যা ভুল তা ফিরিয়ে দেয় কারণ এটি সংস্করণটি কেটে দেয় (আমি এই প্রশ্নের প্রয়োজনে দীর্ঘ একটি চয়ন করেছি)। অতীতে আমি যেভাবে এটি সমাধান করেছি তা হ'ল বিস্তৃত করার জন্য মূর্খতাপূর্ণ দীর্ঘ COLUMNS যুক্তিটি পাস করা:

COLUMNS=200 dpkg -l network-manager

যা আমাকে পুরো সংস্করণ নম্বর দেয়, তবে একগুচ্ছ জাঙ্ক:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                         Version                                      Description
+++-============================================-============================================-========================================================================================================
ii  network-manager                              0.8.3~git.20101118t223039.d60a988-0ubuntu1   network management framework daemon

এখন আমি পুরো সংস্করণ নম্বর দেখতে পাচ্ছি, যা হয় 0.8.3~git.20101118t223039.d60a988-0ubuntu1

আমি অনুভূতি পেয়েছি যে এটি ইনস্টল করা প্যাকেজের সংস্করণ সংখ্যাটি খুঁজে পাওয়ার উপযুক্ত উপায় নয়। এটি অতীতে সত্যই কখনও সমস্যা ছিল না, তবে সংস্করণগুলিতে "উবুন্টু" এবং পিপিএর প্রসারণের ফলে এই স্ট্রিংগুলি দীর্ঘ এবং দীর্ঘতর হচ্ছে। কোন সহজ উপায় আছে?

উত্তর:


82
dpkg -s <packagename> | grep '^Version:'

উদাহরণ:

dpkg -s network-manager | grep '^Version:'

নমুনা আউটপুট:

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2

dpkg --info package.debকাজ করে, যদিও -sকরেনি
ট্যুইস্টেড পিয়ার

2
@ ট্যুইস্টেড পিয়ার - dpkg --info package.debপ্যাকেজ ফাইলগুলিতে dpkg -s <packagename>পরিচালিত হয়, প্যাকেজ নামগুলিতে পরিচালিত হয় - কোনও ফাইলের প্রয়োজন হয় না
লেন

37
dpkg-query --showformat='${Version}' --show python3-lxml

2
একাধিক প্যাকেজ জিজ্ঞাসা করার সময় আমি পরামর্শ দিই:dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...
থোরস্মমনার

6
আমি এই সংস্করণটি পছন্দ করি, যেহেতু এটি সুনির্দিষ্ট (গ্রেপ বা কাটা প্রয়োজনীয় নয়)।
guettli

1
প্রায় অবশ্যই একটি নতুন লাইন মুদ্রণ করতে চান, অন্যথায় এটি "প্রিন্টফ" -র মতো আচরণ। উদাহরণস্বরূপ dpkg-query --showformat='${Version}\n' --show python3-lxml,।
ক্রিস ল্যাম্ব


15

আমি মনে করি আপনার প্রশ্নটি dpkg ব্যবহার করে নির্দিষ্ট করে হিসাবে অনীশপসই সেরা উত্তর। তবে সম্পূর্ণতার জন্য, এখানে আরও একটি উপায় রয়েছে:

apt-cache policy network-manager 
network-manager:
  Installed: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
  Candidate: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
  Version table:
 *** 0.8.1+git.20100810t184654.ab580f4-0ubuntu2 0
        500 http://us.archive.ubuntu.com/ubuntu/ maverick/main i386 Packages
        100 /var/lib/dpkg/status

বা কেবল সংস্করণ নম্বরটির জন্য:

apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2

1
এর আউটপুট apt-cacheবর্তমান লোকেলের উপর নির্ভর করে। উদাহরণস্বরূপ জার্মানিতে আপনার প্রয়োজন grep 'Installiert:'। এর জন্য ক্ষতিপূরণ দিতে, C.UTF-8স্ক্রিপ্ট করার সময় সর্বদা লোকাল ব্যবহার করুন । হয় LC_ALL=C.UTF-8; export LC_ALLস্ক্রিপ্টের শুরুতে বা কেস-কেস-কেস ভিত্তিতে এমন কিছু যেমন:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'
টিনো

5

dpkgনীচের মত করে ইনস্টল করা প্যাকেজের সংস্করণ সন্ধান করার জন্য অন্য একটি পদ্ধতি ,

dpkg -l | awk '$2=="package-name" { print $3 }'  

উদাহরণ:

$ dpkg -l | awk '$2=="network-manager" { print $3 }'
0.9.8.0-0ubuntu22

ব্যাখ্যা:

dpkg -lকমান্ডটি সমস্ত ইনস্টল করা প্যাকেজ তালিকাভুক্ত করে। এই স্ট্যান্ডার্ড আউটপুটটি awkকমান্ডের ইনপুট হিসাবে খাওয়ানো হয়েছিল । awkপ্রমিত ইনপুট ( কলাম 2 ) এ সম্পর্কিত প্যাকেজের নাম অনুসন্ধান করে যদি এটি খুঁজে পায় তবে এটি সংশ্লিষ্ট লাইনটি ধরে। এবং অবশেষে ( কলাম 3 ) এর মান মুদ্রণ করে যা আসলে প্যাকেজ সংস্করণের প্রতিনিধিত্ব করে।

$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description

উপরের মতানুসারে, কলাম 2 প্যাকেজের নাম উপস্থাপন করে , কলাম 3 প্যাকেজ সংস্করণ উপস্থাপন করে , কলাম 4 আর্কিটেকচার এবং 5 কলাম প্যাকেজ বিবরণ উপস্থাপন করে ।


আপনাকে প্রথমে সমস্ত প্যাকেজ ব্যবহার করে তালিকা তৈরি করতে হবেdpkg এবং এরপরে এটিকে আবার কীভাবে ফিল্টার করতে হবে? আপনি একক প্যাকেজের জন্যও অনুরোধ করতে পারেন তালিকাটি:dpkg -l <package-name>
জার্মটভিডিজক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.