यदि मेरे सर्वर पर पैकेज स्थापित है, तो मैं कैसे जांच कर सकता हूं?


174

मैंने हाल ही में Ubuntu सर्वर संस्करण 13.10 (Saucy Salamander) स्थापित किया है। लेकिन मैं थोड़ी समस्या में भाग गया हूं।

इंस्टॉल के अंत में, यह आपसे कई अतिरिक्त पैकेजों के लिए पूछता है कि आप उन्हें चाहते हैं या नहीं, जैसे ओपनएसएसएच सर्वर और वर्चुअल मशीन होस्ट। यहाँ मैं देख रहा हूँ:

यहां छवि विवरण दर्ज करें

अब, मेरी समस्या यह है कि मुझे याद नहीं है कि क्या मैंने "वर्चुअल मशीन होस्ट" चेकबॉक्स चेक किया है। यदि मेरे सर्वर में संबंधित पैकेज हैं, तो मैं कैसे जांच करूं?

वर्चुअल मशीन होस्ट के साथ कौन से पैकेज आते हैं?


1
$ apt-cache policy <package-name>, जैसे$ apt-cache policy dillo
डैनियल

जवाबों:


230

क्या आप विकल्पों के साथ सभी dpkg कमांड के बारे में जानना चाहते हैं? नीचे दिए गए लिंक से पढ़ें।

डेबियन आधारित लिनक्स सर्वर को प्रबंधित करने के लिए 15 dpkg कमांड

सभी स्थापित पैकेजों को सूचीबद्ध करने के लिए

यहां "कम" एक साधारण पाठ रीडर है जो मौजूदा टर्मिनल विंडो में खुलने वाले एक नए बफर में पैकेज की सूची के माध्यम से स्क्रॉल करने के लिए उपयोग किया जाता है। सूची को अन्य टर्मिनल कमांड और आउटपुट के साथ नहीं मिलाया जाएगा। टर्मिनल प्रॉम्प्ट पर लौटने के लिए 'q' को हिट करें। अधिक जानकारी के लिए "मैन कम" देखें।

dpkg -l | less

यह जाँचने के लिए कि पैकेज स्थापित है या नहीं:

dpkg -l {package_name}
dpkg -l vlc

यह जांचने के लिए कि पैकेज स्थापित है या नहीं (उदाहरण के लिए vlc)। यदि स्थापित है, तो पैकेज लॉन्च करें:

dpkg -l | grep vlc

वह स्थान दिखाएँ जहाँ पैकेज स्थापित है। "-S" (राजधानी S) "खोज" के लिए खड़ा है

sudo dpkg -S {package_name}
sudo dpkg -S skype

खोज के लिए Grep का उपयोग करने के लिए:

dpkg -l | grep {keywords}
dpkg -l | grep pdf

1
इस और dpkg-query -l "packagename" के
heypaleblue

4
बाहर निकलने के कोड पर निर्भर न करें dpkg -l packagename, क्योंकि यह 0 निकास कोड के साथ वापस आ सकता है, भले ही पैकेज पूरी तरह से स्थापित न हो - देखें: github.com/bitrise-io/bitrise/issues/433
विक्टर बेनेई

dpkg -l | cut -d " " -f 3 | grep "^vlc"सभी पैकेज के नाम दिखाने के लिए जो शुरू होता हैvlc
anatoly techtonik

FYI करें, यह मेटा पैकेज के लिए काम नहीं करता है क्योंकि वे सीधे dpkg से संबंधित नहीं हैं। आपकी प्रतिक्रिया प्रश्न का उत्तर देती है, हालांकि।
mtalexan

34

उपयोग dpkg

यह कमांड डेबियन पैकेज मैनेजर है।

आप के साथ सभी स्थापित संकुल को सूचीबद्ध कर सकते हैं

dpkg -l

आप एक विशिष्ट पैकेज के लिए विवरण देख सकते हैं

dpkg -p packagename

और यह जानने के लिए कि क्या यह स्थापित है, उपयोग करें

dpkg -s packagename | grep Status

आप सीख सकते हैं कि किस पैकेज में वह सॉफ़्टवेयर है जो आप चाहते हैं

apt-cache search name*  

आपके मामले में आपको अपने इच्छित पैकेज नाम की खोज के लिए इस कमांड का उपयोग करना चाहिए

apt-cache search virtual machine host 

29

apt -qq list PACKAGE यह जाँचने के लिए भी उपयोग किया जा सकता है कि क्या पैकेज स्थापित है।

यदि यह स्थापित होता है तो कुछ ऐसा प्रिंट करेगा ( [installed]पंक्ति के अंत में):

$ apt -qq list awscli
awscli/stable,now 1.4.2-1 all [installed]

स्थापित नहीं होने पर उत्पादन होगा:

$ apt -qq list awscli
awscli/stable 1.4.2-1 all

1
आप वाइल्डकार्ड के लिए पैकेज नाम के अंत में एक स्टार लगा सकते हैं।
Brannon

3
आप उस आदेश के लिए - स्थापना रद्द विकल्प का उपयोग उन मैचों तक सीमित करने के लिए भी कर सकते हैं जो वास्तव में स्थापित हैं।
mtalexan

2
किस -qqलिए है? ऐसा लगता है कि यह बिना पहचान के काम करता है, और यह विकल्प मैनुअल में नहीं हैman apt
गेब्रियल स्टेपल्स

3
@GabrielStaples ऐसा लगता है कि apt listकमांड अभी तक पूरी तरह से प्रलेखित नहीं है। 16.04 को कुछ त्वरित परीक्षण से प्रतीत होता है कि -qयह --quietविकल्प का एक पर्याय है। पहला -qशब्द "डन" मुद्रित होने से रोकता है। दूसरा "लिस्टिंग ..." को प्रिंट होने से भी रोकता है।
एंथनी गोगेगन

14

मुझे सिर्फ dpkg-query कमांड और कोई पाइप के साथ पैकेज इंस्टॉलेशन की जांच करने का एक तरीका मिल गया है।

मैंने इस तरह के समाधान के लिए खोज की है, जब कोई नाटक करने योग्य पुस्तक के लिए कार्य लिख रहा हो।

तो, यो कुछ इस तरह से कर सकते हैं:

/usr/bin/dpkg-query --show --showformat='${db:Status-Status}\n' '<your package name>'

यह काम करने का सिर्फ एक और तरीका है।


shellमॉड्यूल के साथ ansible में पाइप का उपयोग किया जा सकता है ।
sjas

4

मैं के रूप में एक नया उत्तर लिख रहा हूँ Tasksel 'टास्क नाम' नहीं में दिखाई देते हैं dpkgया aptप्रश्नों। मतलब अन्य उत्तर अधूरे (या गलत) हैं।

"मुझे याद नहीं कि मैंने 'वर्चुअल मशीन होस्ट' चेकबॉक्स चेक किया हो .."

फिर से चलाने के बाद नाम से एक तारांकन चिह्न है या नहीं, इसकी जाँच करें sudo tasksel
(या एक ' मैं ' अगर चल रहा है tasksel --list-tasks)।

यदि आप इसे नहीं देखते हैं, तो संभवतः आपके पास 'कार्यस्थल मेटा-पैकेज ' स्थापित नहीं है।


".. अगर मैं जाँचता हूँ कि मेरे सर्वर में संबंधित पैकेज हैं?"

यदि आप यह जानना चाहते हैं कि वर्चुअल मशीन होस्ट कार्यस्थल मेटा-पैकेज के तहत क्या स्थापित किया गया है:

tasksel --list-tasks

(आपके मामले tasksel --list-tasks | grep virtमें पर्याप्त है)

यह उचित कार्य नाम और एक संकेत देता है कि क्या यह स्थापित है।

आपके मामले में यह कार्यस्थल नाम है virt-host


"वर्चुअल मशीन होस्ट के साथ क्या पैकेज आते हैं?"

अंतिम आदेश से, कार्यस्थल कार्य नाम ढूंढें।
यह अगले आदेश के लिए आवश्यक है:

tasksel --task-packages virt-host

यह व्यक्तिगत टास्क मेटा-पैकेज (संलग्न '^' द्वारा चिह्नित) को सूचीबद्ध करता है जो नाम बनाते हैं।
आपके मामले में virt-host^

एक बार जब आप उचित मेटा-नाम पा लेते हैं तो आप उपयुक्त उपयोग कर सकते हैं:

 apt show virt-host^ | grep "Package:"

(या apt-cache show ...अगर apt showकाम नहीं करता है।)

यह सभी पैकेज दिए गए मेटा पैकेज को दिखाएगा।

फिर:

 dpkg -l {each individual pkg name listed above}

यह आपको बताएगा कि क्या व्यक्तिगत पैकेज स्थापित किया गया है / अनइंस्टॉल किया गया है (2 अक्षर द्वारा नोट किया गया है: 'i' स्थिति का अर्थ है स्थापित)। कार्य / मेटा पैकेज के तहत सूचीबद्ध सभी पैकेजों के लिए ऐसा करें।

यह मूल सवालों के जवाब देना चाहिए।

साइड नोट: /usr/share/tasksel/descs/ubuntu-tasks.desc में टास्कल मेटा-पैकेज का विवरण भी है। यदि आप: grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.descयह उचित APT मेटा-पैकेज नाम दिखाएगा। (आपके मामले में यह है ubuntu-virt-server)। आप aptइस मेटा-नाम के साथ कमांड का भी उपयोग कर सकते हैं ।

यदि आप कार्यस्थल पैकेज को निकालना चाहते हैं, तो यह थोड़ा सा मातम में चला जाता है। कृपया https://askubuntu.com/a/88897/169878 या अन्य किसी भी उत्तर के बारे में सलाह लें ।

कृपया ध्यान दें कि "मेटा" उपयुक्त पैकेज टास्केल पैकेज नामों से मेल नहीं खाते हैं। कृपया अधिक जानकारी के लिए टास्केल कम्युनिटी पेज से परामर्श करें ।


1
दोनों प्रश्नों का सही उत्तर दिया गया है। यदि आप नीचे जाते हैं, तो एक कारण दें, या मुझे बताएं कि वे क्यों नहीं हैं।
14

3

कार्यस्थल का उपयोग करें ( sudo apt-get install taskselयदि आपके पास पहले से नहीं है) और चलाएं tasksel --list-tasks

कार्यस्थल कार्यों की एक सूची का प्रिंट आउट लेगा, और iस्थापित किए गए प्रत्येक कार्य के बगल में होगा , और uप्रत्येक कार्य के लिए एक अगला जो स्थापित नहीं है।

यदि आप कार्य को स्थापित करना चाहते हैं, तो उपयोग करें tasksel install <task>। आप जिस कार्य को देख रहे हैं उसका नाम है virt-host

सॉफ़्टवेयर चयन आइटम को "कार्य" कहा जाता है।


मुझे कार्य का नाम बताने के लिए धन्यवाद, यह मेरी समस्याओं में से एक था, निश्चित नहीं था कि किस पैकेज को देखना है।
D.Zou

2

अगर किसी को दिलचस्पी है, तो मैंने एक छोटी स्क्रिप्ट बनाई है जिसके साथ आप पैकेज या एप्लिकेशन की सूची से स्वचालित रूप से इंस्टॉल कर सकते हैं या बस यह जांच सकते हैं कि क्या वे पहले से ही सेट हैं:

#!/bin/bash
apt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txt
packages=$(cat /root/list.txt)
grep -q '[^[:space:]]' < /root/list.txt
CHECK_LIST=$?
if [[ $CHECK_LIST -eq 1 ]]; then
echo "Your packages are already installed"
else
echo "Installing packages"
apt-get  install -y $packages
fi

आशा है कि यह किसी की मदद करता है।


2

सरल समाधान:

अब एक apt listकमांड है जो इंस्टॉल किए गए पैकेज को सूचीबद्ध करता है। आप किसी विशिष्ट पैकेज के लिए भी खोज कर सकते हैं

apt list <package>

man aptअधिक जानकारी के लिए देखें । यदि आपको सटीक पैकेज का नाम नहीं पता है, तो आप apt searchसंबंधित पैकेजों की सूची देखने के लिए इसके कुछ भाग का उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.