यदि कोई पैकेज स्थापित किया गया है (कोई सुपरसुसर विशेषाधिकार नहीं) तो मैं कैसे जांच सकता हूं?


56

हमारे विश्वविद्यालय में हम लगभग किसी भी ubuntu पैकेज को स्थापित कर सकते हैं जिसे हम चाहते हैं, लेकिन हम खुद सुपरसुसर नहीं हैं (हमें स्थापित किए गए पैकेजों का अनुरोध करने की आवश्यकता है)।

कुछ पुस्तकालयों के साथ यह जानना हमेशा आसान नहीं होता है कि पैकेज पहले से स्थापित है या नहीं। क्या इसकी जांच करने का कोई सरल तरीका / कमांड है?

जवाबों:


56
apt-cache policy <package name>

7
यह जानना महत्वपूर्ण है कि यह पैकेज के नाम में टैब पूरा करने का समर्थन करता है। जब आप सटीक पैकेज नाम नहीं जानते तब भी यह काफी उपयोगी है।
जेवियर रिवेरा

शर्म कि अभी भी स्थिति 0 से बाहर निकलती है, भले ही पैकेज मौजूद न हो। dpkg -sफिर भी करता है: askubuntu.com/a/1108801/52975
Ciro Santilli 新疆 改造 untu untu at 法轮功

मित्रता केapt साथ : apt policy <package name>या apt show <package name>अधिक जानकारी के लिए।
पाब्लो ए

18

मैं हमेशा कमांड लाइन से इसका उपयोग करता हूं:

dpkg -l | grep mysql

इसलिए ऊपर dpkg सभी स्थापित पैकेजों को सूचीबद्ध करने के लिए कहता है और फिर मैं केवल उन लोगों के लिए संक्षिप्त नाम रखता हूं जिनके नाम में mysql है।


3
dpkg -l "*mysql*"यह भी काम करता है और आउटपुट में व्याख्यात्मक लाइनों को छिपाता नहीं है।
फिलिप वेंडलर

dpkg -l "*mysql*"(या dpkg -l '*mysql*') टर्मिनल विंडो के एक लाइन पर प्रत्येक पैकेज को फिट करने के लिए आउटपुट का विशेष प्रारूपण भी करता है (grep नहीं)। और यह फ़ॉर्म आपको वाइल्डकार्ड प्रारूप (उपसर्ग या प्रत्यय) चुनने की अनुमति देता है, और क्या वाइल्डकार्ड का उपयोग करना है (grep की तुलना में)। लेकिन grep अच्छा रंग देता है ..))
vstepaniuk

7

इस समय योग्यता का उपयोग करते हुए एक और संस्करण:

aptitude show <package>

टैब पूरा होने के साथ-साथ यहां काम भी होता है।


6

आप dselect का उपयोग कर सकते हैं। यह गैर-सु केवल पढ़ने के लिए पहुँच प्रदान करता है।

साथ ही, dpkg -s <package name>पैकेज से संबंधित बहुत सारे विवरण प्रदान करता है। उदाहरण के लिए "

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games

यह भी बस के रूप में उपलब्ध है dpkg -s। और इसके विपरीत, dpkg-query -lठीक उसी तरह काम करता है dpkg -lयाdpkg --list
belacqua

4

आप dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ स्क्रिप्ट में उपयोग कर सकते हैं , क्योंकि यह निकास कोड 1 लौटाता है, यदि <package>स्थापित नहीं है, और यदि <package>स्थापित है तो 0 ।


4
सावधान रहें : यदि dpkg -sरिटर्न 0, यह जरूरी नहीं है कि पैकेज पूरी तरह से / सही तरीके से स्थापित है। dpkg -sभी देता है 0, तो पैकेज में है half-configuredया में config-filesराज्य (और मैं भी में लगता है half-installed, लेकिन मुझे लगता है कि जाँच नहीं था)। आगे के "अधूरे" राज्यों के लिए dpkg( manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html ) का मैन पेज देखें ।
१14

1
@ भगदड़, अच्छी बात है। मेरा जवाब गलत था। पैकेज भी हटाया जा सकता है, लेकिन शुद्ध नहीं। इसलिए मुझे लगता है कि आपको पैकेज को स्थापित करने या नहीं करने के लिए आउटपुट की जांच करनी होगी।
जारो

2
मैंने उत्तर संपादित किया। अब यह dpkg-query के आउटपुट पर निर्भर करता है। मुझे नहीं पता कि यह समाधान कितना पोर्टेबल है; उदाहरण के लिए, क्या पाठ को किसी अन्य प्रणाली में किसी अन्य भाषा में प्रदर्शित किया जा सकता है?
जारो

2

सरल समाधान:

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

apt list <package>

man aptअधिक जानकारी के लिए देखें ।


1
और apt showअधिक जानकारी के लिए
wjandrea

0

dpkg -s प्रोग्रामेटिक उपयोग

मुझे पसंद है dpkg -sक्योंकि यह स्थिति के साथ बाहर निकलता है 1यदि कोई भी पैकेज स्थापित नहीं है, तो इसे स्वचालित करना आसान है:

pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
  sudo apt-get install $pkgs
fi

यह सभी देखें:

उबंटू 18.10 पर परीक्षण किया गया।


0

शेल स्क्रिप्ट्स में var के रूप में विशिष्ट मान का उपयोग करने के लिए उदाहरण (जैसे test.sh)

#!/bin/sh
PACKAGE="${1}"
INSTALLED=$(dpkg -l | grep ${PACKAGE} >/dev/null && echo "yes" || echo "no")

echo "${PACKAGE} is installed ... ${INSTALLED}"

इसे निष्पादन योग्य बनाएं और इसके साथ शुरू करें:

test.sh openssh-server

या जो भी आप अपनी स्क्रिप्ट में चाहते हैं वह करें


0

आपको dpkg -lउदाहरण द्वारा मुद्रित स्थिति की जांच करने की आवश्यकता है :

$ dpkg -l firefox-esr vim winff
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
+++-====================================-=======================-=======================-=============================================================================
hi  firefox-esr                          52.9.0esr+build2-0ubunt amd64                   Safe and easy web browser from Mozilla
ii  vim                                  2:8.1.1198-0york0~14.04 amd64                   Vi IMproved - enhanced vi editor
rc  winff                                1.5.3-3                 all                     graphical video and audio batch converter using ffmpeg or avconv

यहाँ दोनों स्थापित हैं vimऔर firefox-esrइसलिए आप टाइप कर सकते हैं:

$ dpkg -l firefox-esr | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l vim | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l winff | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is NOT installed.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.