아치 리눅스를 사용하고 있습니다.
설치된 모든 패키지의 선택적 종속성을 나열하는 방법이 있습니까? 그렇다면,이 목록을 필터링하여 누락 된 (설치되지 않은) 패키지 만 볼 수 있습니까?
pacman -Qi | grep "Optional Deps" | grep -v None | grep -v installed
아치 리눅스를 사용하고 있습니다.
설치된 모든 패키지의 선택적 종속성을 나열하는 방법이 있습니까? 그렇다면,이 목록을 필터링하여 누락 된 (설치되지 않은) 패키지 만 볼 수 있습니까?
pacman -Qi | grep "Optional Deps" | grep -v None | grep -v installed
답변:
expac 을 사용하여 pacman
데이터베이스 를 쿼리 할 수 있습니다 .
다음과 같은 것 :
awk 'NF>=2' <(expac "%n %O") > optdeps
시스템에 설치된 모든 패키지 목록을 인쇄하고 것 optdepends
하나 하나에 대한 ( %O
) 1 라는 파일에 optdeps
. 그런 다음 설치된 optdepends 패키지 목록과 비교하여 정렬 할 수 있습니다.
man expac
전체 옵션 목록을 참조하십시오 .
1. 0이 아닌 대문자 O입니다. 우리 는 둘 사이를 구별하는 글꼴을 가질 수 없기 때문에 ...
AUR-Repository (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 에서이 답변을 찾았습니다 (첫 번째 부분)
.
이것은 효율적이지 않지만 원하는 것을 찾을 수 있습니다 (COLOR!) :
pacman -Q > /tmp/paccache
for pkg in $(awk '{print $1}' /tmp/paccache) ; do
echo -n "$pkg => ";
for dep in $(pacman -Qi $pkg | awk -F: '/Optional Deps/{gsub(/[\<\>=].*/,"");print $NF;}' ) ; do
grep -q "$dep" /tmp/paccache && COLOR=32 ; echo -en "\e[1;${COLOR:-31}m${dep}\e[0;m " ; unset COLOR ;
done
echo
done
||
대신 &&
애프터 grep
하고 주변의 라인의 나머지 부분을 괄호?
pacman -Qi xmms2 | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1 | cut -c19- | cut -d: -f1
@DarkHeart의 솔루션이 실제로 작동하지 않는다는 것을 알고 있었지만 작동하는 솔루션을 만들도록 영감을주었습니다. (색상 없음)
내가 사용하고 패키지 쿼리 내가 (이 요구르트의 종속성의)가 이미 설치 했어 때문에, @jasonwryan에 의해 제안 된 대신 expac의 비슷한 도구를. expac을 대신 사용하도록 이것을 변경하는 것은 사소한 일입니다.
모든 선택적 종속성의 목록은 대부분 package-query 호출로 수행됩니다. 첫 번째 for-loop는 설명을 제거하므로 선택적 종속성의 패키지 이름 만 남아 있습니다. 두 번째 for-loop는 결과를 인쇄하기 전에 첫 번째 행에서 이미 설치된 종속성을 제거합니다.
#!/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;
}
때로는 역순으로 작업해야합니다 ... 먼저 선택 사항이 아닌 모든 종속 항목을 찾은 다음 전체 목록으로 상호 참조 한 다음 uniq을 사용하십시오. 설치된 옵션 옵션 목록이 생성됩니다.
설치된 모든 찾기
pacman -Q
모든 비 선택적 찾기 :
pacman -Qent
따라서 고유 한 항목은 선택 사항이어야합니다.
(pacman -Q; pacman -Qent) | sort | uniq -u
누락 된 옵션 목록 생성은 설명이 아닌 설명에 따라 다르지만 작동합니다.
pacman -Q > /tmp/paccache; for pkg in $(awk '{print $1}' /tmp/paccache); do pacman -Qi $pkg | grep "^Optional Deps" | grep -v None >/dev/null && echo $pkg >> /tmp/hasdeps; done
for pkg in $(awk '{print $1}' /tmp/hasdeps); do echo -ne "Package: $pkg ___ "; (pacman -Qi $pkg | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1) | grep -v installed; echo ___; done | grep -v "___ ___" | sed -e 's/Optional Deps/ /' -e 's/___//' | sed -e 's/ \+/ /g'