如何找出给定的已安装软件包或程序是从哪个存储库安装的?我可以看到我安装的所有软件包dpkg -l
。有没有办法查看它们的来源?
答案1
apt
不跟踪从中获取包的存储库。您能做的最好的事情就是确定哪些存储库包含给定的包现在,据apt
了解(因此从技术上讲,最后一次apt update
运行)。
要查看apt
给定包考虑哪些存储库,请使用apt policy
;例如:
$ apt policy rr
rr:
Installed: 5.2.0-1
Candidate: 5.2.0-2
Version table:
5.2.0-2 100
100 http://ftp.fr.debian.org/debian testing/main amd64 Packages
100 http://ftp.fr.debian.org/debian unstable/main amd64 Packages
*** 5.2.0-1 100
100 /usr/var/lib/dpkg/status
4.4.0-2+b1 500
500 http://ftp.fr.debian.org/debian stretch/main amd64 Packages
此输出告诉我apt
了解这些rr
版本:
- 4.4.0-2+b1,可以从我配置的 Debian 9 (Stretch) 存储库中获取;
- 5.2.0-1,这是当前安装的版本,并且无法从任何当前配置的存储库中获取;
- 5.2.0-2,可从我配置的测试和不稳定存储库中获取。
没有匹配存储库的版本可能会在多种情况下发生:
- 用于托管版本的存储库,但不再这样做(如果您不升级软件包,并且新版本上传到您跟踪的存储库,则会发生这种情况);
- 该软件包是从存储库安装的,然后存储库被删除;
- 该软件包是从存储库以外的源安装的(这里就是这种情况:我安装的软件包是我本地构建的版本)。