특정 리포지토리에서 설치 한 모든 패키지를 어떻게 나열합니까?
기본 우분투 아카이브에서 사용할 수없는 설치된 모든 패키지를 나열하고 패키지가 어느 저장소에서 왔는지 확인할 수 있습니까? (이 질문에 대한 답을 알고 있다면, 특정 PPA 이름에 대한 목록을보고 첫 번째 질문에 대한 답을 찾을 수 있습니다.)
특정 리포지토리에서 설치 한 모든 패키지를 어떻게 나열합니까?
기본 우분투 아카이브에서 사용할 수없는 설치된 모든 패키지를 나열하고 패키지가 어느 저장소에서 왔는지 확인할 수 있습니까? (이 질문에 대한 답을 알고 있다면, 특정 PPA 이름에 대한 목록을보고 첫 번째 질문에 대한 답을 찾을 수 있습니다.)
답변:
Ubuntu Software Center에서 "Installed Software"항목을 확장하십시오. 활성화 한 모든 다른 리포지토리 목록이 표시됩니다. 저장소를 클릭하면 각각에서 설치 한 패키지가 표시됩니다.
설치된 패키지 의 출처에 대한 기록이없는 것 같습니다 .
동일한 이름의 패키지를 다운로드 할 때 위치를 가져 오는 것이 좋으면을 통해 사용할 수 있습니다
apt-cache policy
. 다음 (추악한) 스크립트가 나를 위해 트릭을 수행합니다.
LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
| fgrep ':install ok installed' \
| cut -d: -f1 \
| (while read pkg; do
inst_version=$(apt-cache policy $pkg \
| fgrep Installed: \
| awk '{ print $2 }');
origin=$(apt-cache policy "$pkg" \
| fgrep " *** ${inst_version}" -C1 \
| tail -n 1 \
| cut -c12-);
echo $pkg $origin;
done)
apt-cache policy
버전에 따라 변경 될 수 있는의 출력에 대한 가정을하기 때문에 매우 취약 합니다.
이 스크립트는 PPA에 설치되어 사용 가능한 패키지를 나열합니다.
#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers
name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"
awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null | awk '/^[^ ]+ ok installed/{print $4}'
나는 이것을 적용 했다 .
BTW PPA를 사용하지 않으려면 ppa-purge 프로그램을 사용하십시오. 여기에 개선 된 버전을 만들었습니다 .
Quantal (12.10)에서 원선의 공백을 제거해야합니다.
LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
| fgrep ':install ok installed' \
| cut -d: -f1 \
| (while read pkg; do
inst_version=$(apt-cache policy $pkg \
| fgrep Installed: \
| cut -d: -f2-);
origin=$(apt-cache policy "$pkg" \
| fgrep " ***${inst_version}" -C1 \
| tail -n 1 \
| cut -c12-);
echo $pkg $origin;
done)