आर्क लाइनर पर पैक्मैन के साथ वैकल्पिक निर्भरता की सूची बनाएं


23

मैं आर्च लाइनक्स का उपयोग कर रहा हूं।

क्या सभी स्थापित पैकेजों की वैकल्पिक निर्भरता को सूचीबद्ध करने का एक तरीका है? और यदि हाँ, तो क्या मैं इस सूची को केवल गुम (स्थापित नहीं) संकुल को देखने के लिए फ़िल्टर कर सकता हूँ?


1
मैंने आर्क का उपयोग नहीं किया है, लेकिन "निर्भरता" वैकल्पिक नहीं है (यह अन्य डिस्ट्रोस में नहीं है)।
जोर्डम

AFAIK, मुझे नहीं लगता कि आप सीधे पैक्मैन के साथ ऐसा कर सकते हैं। लेकिन इसे करने के लिए एक छोटी सी स्क्रिप्ट लिखना बहुत संभव है। इंस्टॉल किए गए पैकेजों की सूची के लिए क्वेरी पैक्मैन। Yaourt ने अपने PKGBUILDs प्राप्त किए हैं और optdeps की सूची पढ़ी है। Pacman-git के नवीनतम संस्करण में एक प्रतिबद्धता है जो बताता है कि क्या optdeps पहले ही इंस्टॉल किए जा चुके हैं।
दानीर

@ जोर्डनम: जैसा कि निर्भरता और वैकल्पिक निर्भरता का निर्माण किया गया है। केवल एक पैकेज की कुछ विशेषताओं के लिए Optdeps की आवश्यकता होती है। इसलिए, जब तक आप उस सुविधा का उपयोग नहीं कर रहे हैं, आपको वास्तव में निर्भरता के भार के साथ अपने सिस्टम को ब्लोट करने की आवश्यकता नहीं है।
दारनिर

मैंने इस्तेमाल कियाpacman -Qi | grep "Optional Deps" | grep -v None | grep -v installed
23:29

जवाबों:


5

आप डेटाबेस को क्वेरी करने के लिए एक्सपैक का उपयोग कर सकते हैं pacman

कुछ इस तरह:

awk 'NF>=2' <(expac "%n %O") > optdeps

आपकी मशीन पर सभी स्थापित पैकेजों की सूची और optdependsप्रत्येक के लिए ( %O) 1 नामक एक फाइल को प्रिंट करेगा optdeps। तब आप इसे स्थापित किए गए optdepends पैकेजों की सूची के अनुसार सॉर्ट कर सकते हैं।

man expacविकल्पों की पूरी सूची देखें ।


1. यह एक ऊपरी मामला है ओ, शून्य नहीं। क्योंकि हमारे पास एक फ़ॉन्ट नहीं हो सकता है जो दोनों के बीच प्रतिष्ठित हो ...


[प्रहार] अब हमारे पास ऐसा कोई फॉन्ट नहीं है। :)
मुरु

4

AUR-Repository (aur / pacdep) में एक अच्छी उपयोगिता है।

pacdep के पास बहुत सारे विकल्प हैं - सिर्फ एक उदाहरण - "थूनर-आर्काइव-प्लगइन" के लिए वैकल्पिक पैकेज खोजें:

> pacdep -oppp thunar-archive-plugin
[...]
Optional dependencies:    6.16 MiB
  extra/file-roller     3.89 MiB
  extra/kdeutils-ark    1.12 MiB
  community/xarchiver   1.16 MiB
[...]

उपरोक्त आउटपुट का मतलब है कि कोई भी वैकल्पिक पैकेज स्थापित नहीं है। "Xarchiver" स्थापित करने के बाद आउटपुट जैसा दिखता है

[...]
Optional dependencies:    6.16 MiB
 local:    1.16 MiB
  xarchiver            1.16 MiB
 sync:     5.01 MiB
  extra/file-roller    3.89 MiB
  extra/kdeutils-ark   1.12 MiB
[...]

मैं पर (के पहले भाग) इस उत्तर पाया
http://mywaytoarch.tumblr.com/post/34979742718/easily-list-package-dependencies


3

यह बिल्कुल कुशल नहीं है, लेकिन आप जो चाहते हैं (रंग में!) पाएंगे।

pacman -Q > /tmp/paccache
for pkg in $(awk '{print $1}' /tmp/paccache) ; do 
   echo -n "$pkg => "; 
   for dep in $(pacman -Qi $pkg | awk -F: '/Optional Deps/{gsub(/[\<\>=].*/,"");print $NF;}' ) ; do 
       grep -q "$dep" /tmp/paccache && COLOR=32 ; echo -en "\e[1;${COLOR:-31}m${dep}\e[0;m " ; unset COLOR ; 
   done 
   echo
done 

मैं पूरी तरह से निश्चित नहीं हूं, लेकिन क्या ||इसके &&बाद होना चाहिए grep, और फिर बाकी पंक्ति के आसपास कोष्ठक नहीं होना चाहिए ?
रोद

और इससे भी महत्वपूर्ण बात यह है कि यह शायद पैक्मैन आउटपुट के "डिपेंड्स ऑन" अनुभाग के बजाय "वैकल्पिक डिप्स" अनुभाग का उपयोग करना चाहिए।
रोहड्स 20'12

उदाहरण के लिए xmms2 के साथ :pacman -Qi xmms2 | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1 | cut -c19- | cut -d: -f1
i336_

2

हालाँकि मुझे यह देखना पड़ा है कि @ DarkHeart का समाधान वास्तव में काम नहीं करता है, इसने मुझे काम करने के लिए प्रेरित किया। (कोई रंग नहीं, हालांकि)

मैं पैकेज-क्वेरी का उपयोग कर रहा हूं , एक्सपास के बजाय एक समान टूल जो @jasonwryan द्वारा सुझाया गया था, क्योंकि मैंने पहले ही इसे स्थापित कर लिया है (यह येरोइट की निर्भरता है)। इसके बजाय एक्सपैक का उपयोग करने के लिए इसे बदलना तुच्छ होना चाहिए।

सभी वैकल्पिक निर्भरताओं की सूची अधिकतर पैकेज-क्वेरी के लिए कॉल द्वारा की जाती है। पहले-लूप स्पष्टीकरण को हटा देता है, इसलिए वैकल्पिक निर्भरता के लिए सिर्फ पैकेज के नाम रहते हैं; दूसरा फॉर-लूप दूसरे एक में परिणामों को प्रिंट करने से पहले अपनी पहली पंक्ति में पहले से स्थापित निर्भरता को हटा देता है।

#!/usr/bin/perl
use strict;
use warnings;

my %deps;
for (`package-query -Q -f'%n %O'`) {
    $deps{ (/^(\S+)/)[0] } = [/(\S+):/g];
}
my @pkgs = keys %deps;
for my $pkg (@pkgs) {
    my @missing_deps = grep { !($_ ~~ @pkgs) } @{ $deps{$pkg} };
    print "$pkg => @missing_deps\n" if @missing_deps;
}

2

यह काम कर जाना चाहिए:

comm -23 <(expac -l"\n" "%o" | sort -u) <(expac -l"\n" "%n\n%S" | sort -u)

पहला इनपुट commसभी वैकल्पिक निर्भरताओं को सूचीबद्ध करता है, दूसरा इनपुट सभी स्थापित पैकेजों और उनके 'प्रदान' विशेषताओं को। दोनों सूचियों को क्रमबद्ध किया गया है और प्रत्येक तत्व में केवल एक बार के कारण शामिल हैं sort -u। तब केवल लाइनें दिखाई जाती हैं जो पहली में निहित होती हैं लेकिन दूसरी सूची में नहीं।

(@ अर्चेमर के सुझाव को शामिल करने के लिए संपादित)


0

कभी-कभी आपको पीछे की ओर काम करना पड़ता है ... पहले सभी गैर-वैकल्पिक निर्भरता को ढूंढें, फिर पूरी सूची के साथ क्रॉस-संदर्भ, फिर यूनीक का उपयोग करें। यह स्थापित वैकल्पिक की एक सूची उत्पन्न करेगा निर्भर करता है।

सभी स्थापित खोजें

pacman -Q

सभी गैर-वैकल्पिक खोजें:

pacman -Qent

अद्वितीय प्रविष्टियाँ इसलिए वैकल्पिक होनी चाहिए:

(pacman -Q; pacman -Qent) | sort | uniq -u 

लापता वैकल्पिक की सूची बनाएँ विवरण के साथ निर्भर करता है, सुंदर नहीं है, लेकिन यह काम करता है।

pacman -Q > /tmp/paccache; for pkg in $(awk '{print $1}' /tmp/paccache); do pacman -Qi $pkg | grep "^Optional Deps" | grep -v None >/dev/null && echo $pkg >> /tmp/hasdeps; done

for pkg in $(awk '{print $1}' /tmp/hasdeps); do echo -ne "Package: $pkg ___ "; (pacman -Qi $pkg | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1) | grep -v installed; echo ___; done | grep -v "___ ___" | sed -e 's/Optional Deps/ /' -e 's/___//' | sed -e 's/ \+/ /g'

0

मैंने केवल GNU सेड में कोशिश की लेकिन

yay -Qi | sed -n '/Optional Deps/{:l s/.* \([a-zA-Z0-9.\-]\+\):.*/\1/p; n; /Required By/!bl}'

यह काम किया (आप की तरह का उपयोग करें / uniq)।

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