데비안에서 소스 URI, 릴리스 및 섹션과 함께 설치된 패키지를 나열하는 방법은 무엇입니까?

데비안에서 소스 URI, 릴리스 및 섹션과 함께 설치된 패키지를 나열하는 방법은 무엇입니까?

(소스) 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사용하거나 획득하는 것이 그렇게 어렵지는 않습니다.

관련 정보