列出 ubuntu / debian 中某个存储库中所有已安装的软件包

列出 ubuntu / debian 中某个存储库中所有已安装的软件包

如何列出所有包我已经安装了来自 ubuntu / debian 中的某个存储库,无需使用任何外来命令,甚至是aptitude基本命令,例如apt list --installed或 来自这里:

列出您当前的所有存储库:

apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq

这里,

for p in $(dpkg -l | awk '/ii/{ print $2 }'); do for i in $(apt-cache policy "$p" | awk '/Installed/{ print $2}'); do apt-cache policy "$p" | grep -A1 '\*\*\*\ '$i'' | if grep -q jessie; then echo $p; fi; done; done

并不是说后者是解决方案,因为连作者都承认这是“相当丑陋”,但是只使用基本工具的方法是好的。

或者,也许最好的方法是编写awk脚本来解析一些apt安装日志?

顺便说一句,为什么我想知道——这里是我当前的所有存储库:

LP-PPA-myid,a=focal
cloudsmith/myid/repo,a=bullseye
Docker,a=bullseye
Google LLC,a=stable
Debian,a=oldstable
Debian,a=testing
Debian Backports,a=bullseye-backports
Debian,a=stable-security
Debian,a=stable

但不知何故,我不知道为什么 Nodejs 存储库不在列表中:

$ apt-cache policy nodejs
nodejs:
  Installed: 16.18.1-deb-1nodesource1
  Candidate: 16.19.0-deb-1nodesource1
  Version table:
     16.19.0-deb-1nodesource1 500
        500 https://deb.nodesource.com/node_16.x bullseye/main amd64 Packages
 *** 16.18.1-deb-1nodesource1 100
        100 /var/lib/dpkg/status
     12.22.12~dfsg-1~deb11u1 500
        500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
     12.22.5~dfsg-2~11u1 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages

相关内容