저는 아치 리눅스를 사용하고 있습니다.
설치된 모든 패키지의 선택적 종속성을 나열하는 방법이 있습니까? 그렇다면 이 목록을 필터링하여 누락된(설치되지 않은) 패키지만 볼 수 있습니까?
답변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
모든 선택적 종속성이 나열되고, 두 번째 입력에는 설치된 모든 패키지와 해당 "제공된" 속성이 나열됩니다. 두 목록은 모두 정렬되어 있으며 각 요소를 한 번만 포함합니다 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;
}