Хотя я должен был заметить, что решение @ DarkHeart на самом деле не работает, оно вдохновило меня на создание рабочего. (без цветов, хотя)
Я использую package-query , похожий инструмент вместо expac, который был предложен @jasonwryan, потому что он у меня уже установлен (это зависимость от yaourt). Это должно быть тривиально, чтобы вместо этого использовать expac.
Список всех необязательных зависимостей в основном выполняется путем вызова пакета-запроса. Первый цикл for удаляет объяснения, поэтому остаются только имена пакетов для необязательных зависимостей; второй цикл for удаляет уже установленные зависимости в первой строке перед печатью результатов во второй.
#!/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;
}