योग्यता के साथ एक निश्चित भंडार से स्थापित पैकेजों का पता लगाएं


39

मैं इस सवाल के लिए कुछ एनालॉग की तलाश में हूं: Zypper: मैं एक निश्चित भंडार से सभी पैकेज कैसे प्रदर्शित करूं?

चूंकि मैं उबंटू पर हूं, मुझे एक योग्यता आधारित समाधान की आवश्यकता है: मैं एक निश्चित भंडार से स्थापित पैकेजों की सूची कैसे प्राप्त कर सकता हूं ?

जवाबों:


17

योग्यता का उपयोग करके, स्थिर शाखा के बाहर स्थापित पैकेज देखने के लिए, आप उपयोग कर सकते हैं:

aptitude search "?narrow(?installed,?not(?archive(stable)))"

संस्करण देखने के साथ-साथ पैकेज-नाम (और विवरण के बजाय) आप प्रारूप विकल्प के साथ कमांड का उपयोग कर सकते हैं ( -Fसंक्षेप में), निम्नानुसार।

aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"

अधिक प्रारूपों के लिए, कृपया मेन्यू पर नज़र डालें (यहाँ उपलब्ध विकल्पों के साथ दस्तावेज़ीकरण देखें )।

उदाहरण के लिए यही काम करता है, डेबियन में अगर आप संकुल runing, उदाहरण के लिए द्वारा बाहर निचोड़ स्थापित (, apt-get install -t sid package-name

आप देख सकते हैं कि स्थापित पैकेज कहां से आता है apt-cache policy, उपयोग निम्नानुसार है:

apt-cache policy <package-name>

उदाहरण के लिए, मेरा अजगर-नुकीला पैकेज निम्न आउटपुट प्रदान करता है:

$ LANG=C apt-cache policy python-numpy
python-numpy:
  Installed: 1:1.6.2-1
  Candidate: 1:1.6.2-1.2
  Version table:
     1:1.7.0-1 0
          1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
     1:1.6.2-1.2 0
        500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
 *** 1:1.6.2-1 0
        100 /var/lib/dpkg/status
     1:1.4.1-5 0
        990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
        990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages

इसका मतलब है कि मैं वर्तमान साइड / मेन की शाखा के पीछे एक संस्करण हूं, इसलिए मेरे पास एक पुराना-साइड संस्करण स्थापित है। मुझे लगता है कि मेरे पास स्थिर नहीं है क्योंकि यह अभी तक है 1.4.1-5, और मैं वर्तमान में हूं 1.6.2-1

सबमिटल के समय यह पैकेज पहले से ही अपडेट था:)


मैं पसंद करता हूं ?any-version(), क्योंकि ~narrow(pat1, pat2)जैसा है वैसा ही है ?any-version(pat1 pat2)और यह ?any-version(pat1 pat2 pat3)बेवकूफ दिखने के बिना समर्थन करता है ।
रॉबर्ट सिएमर

18

अभिरुचि के पृष्ठ और एक दर्जन प्रयासों की जानकारी पढ़ने के बाद, मुझे आखिरकार यह मिल गया:

aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'

या उसके बराबर) :

aptitude search '~S ~i (!~Atesting ~Aunstable)'

यह किसी भी भंडार के अस्थिर अभिलेखागार से स्थापित पैकेजों की खोज करेगा । आपको अपने डिफ़ॉल्ट संग्रह (उपरोक्त उदाहरण में परीक्षण) से पैकेज फ़िल्टर करना होगा।

यदि आप www.debian-multimedia.org/unstable से स्थापित पैकेज फ़िल्टर करना चाहते हैं:

aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))

संपादित करें: "संग्रह", "मूल" आदि को Releaseभंडार की फ़ाइल से काट दिया जाता है। दुर्भाग्य से सभी उपकरण उन सभी लाइनों को नहीं देख सकते हैं और वे उनके लिए अलग-अलग वाक्यविन्यास का उपयोग करते हैं। आप के रूप में उन फ़ाइलों को पा सकते हैं /var/lib/apt/lists/*Release। या केवल apt-cache policyएक अवलोकन प्राप्त करने के लिए टाइप करें। apt-cache ने अपना आउटपुट स्वरूप बदल दिया: बाद के संस्करण apt_preferences शैली का उपयोग करते हैं।

  • Suite:या Archive:(पुराना नाम!)
    • योग्यता खोज: ?archive(___)या~A___
    • योग्यता प्रारूप: %t
    • apt_preferences: release a=___
    • उदाहरण उबंटू: natty-backports, trusty-security,stable
  • Origin:
    • योग्यता खोज: ?origin(___)या~O___
    • एप्टीट्यूड प्रारूप: एन / ए
    • apt_preferences: release o=___
    • उबंटू उदाहरण: Canonical, Google, Inc., LP-PPA-dockbar-main,Ubuntu
  • अन्य सभी लाइनें
    • योग्यता: n / a

15

अपने वर्तमान रिपॉजिटरी में से प्रत्येक के लिए मूल टैग (जैसे ओ = डेबियन ) की जांच करें :

apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq

फिर एक विशेष मूल से (या नहीं) से संकुल की खोज करें:

aptitude search "?installed?origin(Debian)"
aptitude search "?installed?not(?origin(Debian))"

यह सुरक्षा ऑडिट के लिए उपयुक्त नहीं है क्योंकि यह प्रत्येक रिपॉजिटरी पर निर्भर करता है ताकि वह अपनी मूल जानकारी प्रदान कर सके, लेकिन यह कई रिपॉजिटरी में मौजूद पैकेजों की उत्पत्ति के निवारण के लिए मददगार हो सकता है।


2
आपके aptitude searchपैटर्न अच्छे नहीं हैं। - वे इस तरह का चयन करते हैं "सूची पैकेज जहां एक संस्करण स्थापित है, और कोई अन्य संस्करण डेबियन में मौजूद है" या "कुछ संस्करण स्थापित है, और उस पैकेज का कम से कम एक संस्करण गैर-डेबियन पर उपलब्ध है"। - हम जो खोज रहे हैं वह "डेबियन से स्थापित संस्करण है (या नहीं)"। इसके साथ ?narrow()या करना पड़ता है ?any-version()
रॉबर्ट सिएमर

की पुष्टि की। मैं nemo-filerollerसे स्थापित किया है linuxmint, लेकिन यह भी मौजूद Debianहै। तो यह सूची में दिखाई देता है, क्योंकि यह स्थापित है और डेबियन से कहीं मौजूद है।
बोल्ड्यूवेन

6

पूर्णता के लिए: उबंटू सिस्टम पर आप इस कार्य के लिए सिनैप्टिक का भी उपयोग कर सकते हैं। बाएं कॉलम में आप पैकेज को उनके मूल द्वारा फ़िल्टर कर सकते हैं।


मैं ऐसा करने की कोशिश कर रहा था और Google के माध्यम से इस एसयू पोस्ट को पाया, विश्वास नहीं कर सकता कि मैंने Synaptic को अनदेखा कर दिया, धन्यवाद!
डेविड क्लेरिज

@RobertSiemer यह आपका ध्यान आकर्षित कर सकता है, कि मैंने दो दिन w / o के पर्याप्त उत्तर के बाद इसे स्वीकार कर लिया, और किसी भी अन्य उत्तर को छोड़ने से पहले मैंने इसे स्वीकार कर लिया, क्योंकि इसने मेरी समस्या हल कर दी । मैंने बाद में सभी उत्तर भी दे दिए, लेकिन, मैं आपसे क्षमा चाहता हूं, स्वीकार करने की स्थिति को कभी नहीं बदला। आप इस साइट के FAQ पर भी ध्यान देंगे, कि मैंने इस कदम से कोई प्रतिष्ठा हासिल नहीं की है, जहाँ वास्तव में मैंने किसी और के उत्तर को स्वीकार नहीं करने के लिए 2 प्रतिनिधि खो दिए हैं। तो कृपया भविष्य में किसी के फैसले को सार्वजनिक करने से पहले भविष्य में एक कदम वापस लें और संभावित कारणों पर पुनर्विचार करें।
बोल्ड्यूइन

2

मैंने यह पाया है:

aptitude search "?origin (<repository>) ?installed"

आप यहां "योग्यता खोज" द्वारा समर्थित खोज शब्दों की एक सूची भी पा सकते हैं


आपको इसे चलाने की आवश्यकता क्यों है sudo? यह मुझे लगता है कि यह रूट के रूप में इसे चलाने के बिना भी काम करता है।
आंद्रे होल्जनर

इसे
सूडो के

जैसा कि मैंने @ अज्ञात उत्तर पर टिप्पणी की है, इसका वांछित प्रभाव नहीं है।
रॉबर्ट सीमर

2

सबसे पहले, / var / lib / apt / list में रुचि के भंडार के लिए उपयुक्त फ़ाइल खोजें। यह प्रोग्रामेटिक रूप से करना संभव होना चाहिए, लेकिन मुझे ऐसा करने की आवश्यकता नहीं है।

उदाहरण के तौर पर google chrome का उपयोग करके देखें:

SEARCH_PATTERN=dl.google.com_linux_chrome  # adjust to suit your needs

for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
    if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
    then
        echo ${PKG}
    fi
done

और मुझे आउटपुट मिलता है:

google-chrome-stable

dpkg -s रिटर्न 0 यदि पैकेज स्थापित है और नॉनजरो अन्यथा। भविष्य के संदर्भ उद्देश्यों के लिए, का उत्पादन

grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages

था

Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable

... क्या यह योग्यता का उपयोग करता है?
रॉबर्ट सिएमर

2
@RobertSiemer यह कैसे प्रासंगिक है? प्रश्न, अंग्रेजी का एक उचित आदेश मानते हुए, संकुल के स्रोत को कैसे खोजना है जो कि योग्यता के साथ स्थापित किया गया था । कोई आवश्यकता नहीं है कि समाधान योग्यता का उपयोग करें।
शुभ अंक

@ एसेक्स, मुझे विश्वास है अन्यथा। - और चिंता मत करो, अंग्रेजी की मेरी कमान कुछ साल पहले "उचित" को पार कर गई।
रॉबर्ट सिएमर

2
जाहिरा तौर पर नहीं ...
Auspex

2
@ एसेक्स: क्या आप मुझे भड़काने की कोशिश कर रहे हैं? इसके विपरीत सत्य है: सवाल योग्यता पर आधारित समाधान के लिए पूछ रहा है, योग्यता के साथ स्थापित पैकेज के लिए नहीं।
रॉबर्ट सिएमर

0

अन्य उत्तर वास्तव में गलत हैं, क्योंकि पैरामीटर ?archive()एक नियमित अभिव्यक्ति है। तो ?archive(stable)दोनों से मेल खाता है stableऔर unstable। बाहर करने के लिए बस stableआपको regex पैटर्न को एंकर करने की आवश्यकता है:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^stable$")))'

एकाधिक रिपॉजिटरी को बाहर करने के लिए:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^(xenial|xenial-updates)$")))'

यह भी ध्यान दें कि कुछ पैकेज कई रिपॉजिटरी से संबंधित हैं, जैसे xenial-security,xenial-updates?archive()व्यक्तिगत रूप से प्रत्येक रिपॉजिटरी के खिलाफ रेगेक्स पैटर्न का मूल्यांकन करता है, इसलिए ?archive("^xenial-updates$")संबंधित किसी भी पैकेज से मेल खाएगा xenial-updates, भले ही यह अन्य रिपॉजिटरी से भी संबंधित हो।

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