私はアーチ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
[...]
この答えを見つけました(パート1)。
http://mywaytoarch.tumblr.com/post/34979742718/easily-list-package-dependentities
答え2
答え3
これにより、トリックを実行できます。
comm -23 <(expac -l"\n" "%o" | sort -u) <(expac -l"\n" "%n\n%S" | sort -u)
最初の入力にはすべてのオプションのcomm
依存関係が一覧表示され、2番目の入力にはインストールされているすべてのパッケージとその「提供された」属性が一覧表示されます。両方のリストは並べ替えられており、各要素は一度だけ含まれていますsort -u
。その後、最初のリストには含まれていますが、2番目のリストには含まれていない行のみが表示されます。
(@Archemarの提案を統合するように編集されています)
答え4
@DarkHeartのソリューションが実際には機能しないことに注意する必要がありますが、これは動作するソリューションを作成することに触発されました。 (色はありませんが)
私はそれを使用していますパッケージクエリ、@jasonwryanが提案したexpacの代わりに同様のツールです。すでにインストールしているからです(yaourtの依存関係です)。 expacを使用するように変更するのは簡単です。
すべてのオプションの依存関係のリストは、主に package-query を呼び出して実行されます。最初のforループは説明を削除するため、オプションの依存関係のパッケージ名のみが残ります。 2番目のforループは、2行目に結果を印刷する前に、1行目でインストールされた依存関係を削除します。
#!/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;
}