列出 arch linux 上 pacman 的可选依赖项

列出 arch linux 上 pacman 的可选依赖项

我正在使用 arch linux。

有没有办法列出所有已安装软件包的可选依赖项?如果是,我可以过滤此列表以仅查看丢失(未安装)的软件包吗?

答案1

AUR 存储库 (aur/pacdep) 中有一个很好的实用程序。

pacdep 有很多选项 - 仅举一个例子 - 查找“thunar-archive-plugin”的可选包:

> 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

答案2

您可以使用扩展查询alpm数据(pacman数据库)。

就像是:

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

将打印计算机上所有已安装软件包的列表,并将optdepends每个软件包的列表打印到名为optdeps.然后,您可以根据已安装的 optdepends 软件包列表对其进行排序。

man expac查看完整的选项列表。

答案3

这应该可以解决问题:

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

第一个输入comm列出所有可选依赖项,第二个输入所有已安装的软件包及其“提供”属性。由于 ,两个列表均已排序并且每个元素仅包含一次sort -u。然后仅显示包含在第一个列表中但不包含在第二个列表中的行。

(编辑以纳入@Archemar 的建议)

答案4

虽然我不得不注意到@DarkHeart 的解决方案并没有真正起作用,但它启发了我制作一个可行的解决方案。 (不过没有颜色)

我在用着包查询,一个类似的工具,而不是 @jasonwryan 建议的 expac,因为我已经安装了它(它是 yaourt 的依赖项)。将其更改为使用 expac 应该很简单。

所有可选依赖项的列表主要是通过调用 package-query 来完成的。第一个 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;
}

相关内容