(소스) URI 세트가 있습니다.유통 및 부품내 Debian Wheezy apt 구성에서 활성화되었습니다. 이제 각 패키지의 소스 URI, "릴리스" 및 각 패키지의 현재 설치된 버전이 설치된 "섹션"과 함께 설치된 모든 패키지 목록을 원합니다.
기본적으로 출력과 같은 것을 찾고 있지만 dpkg -l
설명 대신 소스 URI, 배포 및 섹션이 표시됩니다. 그것은 다음과 같습니다:
||/ Name Version Arch InstalledFrom
+++-==========-=================-=====-===================
ii package1 1:4.14-1.1+deb7u1 amd64 ftp://ftp.se.debian.org/debian wheezy main
ii package2 1.7-1 all ftp://ftp.se.debian.org/debian wheezy/updates main
ii package3 1.0.25+3~deb7u1 all ftp://ftp.se.debian.org/debian wheezy non-free
ii package4 0.9.8~3 amd64 local
ii package5 7.2.107 i386 local
그러한 패키지 목록을 어떻게 얻을 수 있습니까?
좋은 형식 지정은 보너스이지만 대부분 grep
흥미로운 줄 하위 문자열에 대해 무엇이든 할 수 있습니다(또는 탐색만 해도 됩니다).
답변1
또한 apt-cache policy
에 설명되어 있습니다.브라이언apt-show-versions
답을 얻으려면 및 를 사용할 수 있습니다 apt-forktracer
.
apt-show-versions
기본적으로 설치된 모든 패키지는 소스, 버전 및 업그레이드 가능 여부와 함께 나열됩니다.
afl:amd64/experimental *manually* upgradeable from 1.28b-1 to 1.36b-1
agedu:amd64/testing 9723-1 uptodate
devio:armhf 1.2-1 installed: No available version in archive
이 -a
옵션을 사용하면 구성된 모든 저장소에 설치된 버전과 사용 가능한 모든 버전이 나열됩니다.
afl:amd64 1.28b-1 install ok installed
No stable version
No testing version
No unstable version
afl:amd64 1.36b-1 experimental ftp.fr.debian.org
afl:amd64/experimental *manually* upgradeable from 1.28b-1 to 1.36b-1
agedu:amd64 9723-1 install ok installed
No stable version
agedu:amd64 9723-1 testing ftp.fr.debian.org
agedu:amd64 9723-1 unstable ftp.fr.debian.org
No experimental version
agedu:amd64/testing 9723-1 uptodate
apt-forktracer
표준 저장소에 없거나 설치된 버전이 표준 저장소에서 사용 가능한 버전과 일치하지 않는 패키지를 나열합니다.
afl (1.28b-1) [Debian: 1.36b-1]
bb (1.3rc1-8.2) [Debian: 1.3rc1-8.1+b1 1.3rc1-8.1+b1]
biew (5.7.3.1-0.1) [SK2: 5.7.3.1-0.1]
답변2
나는 특히 다양한 답변을 하나로 엮어가는 나 자신을 발견했습니다.브라이암스그리고무루의. 마지막으로, 나는 이 한 줄의 내용을 얻었고, 이를 통해 나머지 부분을 알아낼 수 있을 만큼 시작할 수 있을 만큼 가까워졌습니다.
dpkg-query --showformat '${Package}\n' -W | \
while read package; do \
apt-cache policy $package | grep -q wheezy/non-free && echo $package ; \
done
apt-cache policy
위에는 wheezy/non-free에서 보고된 모든 패키지의 이름이 나열되어 있습니다(완전히 정확하지는 않지만 현재로서는 충분히 유사함). 스크립트가 출력으로 수행하는 작업을 조정하면 apt-cache policy
멋진 표 형식은 아니지만(적어도 기본적으로) 내가 원하는 결과에 합리적으로 가까워야 합니다.
도움을 주신 모든 분들께 감사드립니다!
답변3
apt-cache policy
당신은 출력을 찾고 있습니다 :
➜ ~ apt-cache policy skype
skype:i386:
Installed: 4.3.0.37-1
Candidate: 4.3.0.37-1
Version table:
*** 4.3.0.37-1 0
100 /var/lib/dpkg/status
➜ ~ apt-cache policy irssi
irssi:
Installed: 0.8.17-1
Candidate: 0.8.17-1
Version table:
*** 0.8.17-1 0
900 http://http.debian.net/debian/ testing/main amd64 Packages
500 http://http.debian.net/debian/ unstable/main amd64 Packages
100 /var/lib/dpkg/status
➜ ~ apt-cache policy megasync
megasync:
Installed: 1.0.39
Candidate: 1.0.39
Version table:
*** 1.0.39 0
500 http://mega.nz/linux/MEGAsync/Debian_7.0/ ./ Packages
100 /var/lib/dpkg/status
이 경우 설치된 Skype 버전은 어떤 저장소(로컬 설치 포함)에서도 사용할 수 없으며 irssi는 Debian 저장소에서 설치되고 megasync는 타사 저장소에서 설치됩니다.
답변4
-l
옵션 중 하나입니다dpkg-query
, 다른 옵션 -W
(또는 --show
)도 있습니다. -W
출력 형식을 선택할 수 있습니다. 당신은 시도 할 수 있습니다:
dpkg-query --showformat '${Status}\t${Package}\t${Version}\t${Architecture}\t${Origin}\t${Section}\n' -W |
column -ts $'\t'
예를 들어:
$ dpkg-query --showformat '${db:Status-Abbrev}\t${Package}\t${Version}\t${Architecture}\t${Origin}\t${Section}\n' -W | column -ts $'\t' | head
ii account-plugin-aim 3.8.6-0ubuntu9.1 amd64 gnome
ii account-plugin-facebook 0.11+14.04.20140409.1-0ubuntu1 all gnome
ii account-plugin-flickr 0.11+14.04.20140409.1-0ubuntu1 all gnome
ii account-plugin-google 0.11+14.04.20140409.1-0ubuntu1 all gnome
ii account-plugin-jabber 3.8.6-0ubuntu9.1 amd64 gnome
ii account-plugin-salut 3.8.6-0ubuntu9.1 amd64 gnome
ii account-plugin-twitter 0.11+14.04.20140409.1-0ubuntu1 all gnome
ii account-plugin-windows-live 0.11+14.04.20140409.1-0ubuntu1 all gnome
ii account-plugin-yahoo 3.8.6-0ubuntu9.1 amd64 gnome
ii accountsservice 0.6.35-0ubuntu7.1 amd64 admin
URI는 알 수 없습니다 dpkg
. 이는 apt
프런트 엔드()에 대한 문제이기 때문입니다. 그러나 awk
사용하거나 획득하는 것이 그렇게 어렵지는 않습니다.