हालाँकि मुझे यह देखना पड़ा है कि @ 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;
}