![有什么方法可以通过其存储库(源、来源、PPA)获取已安装的软件包?](https://linux22.com/image/184816/%E6%9C%89%E4%BB%80%E4%B9%88%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%85%B6%E5%AD%98%E5%82%A8%E5%BA%93%EF%BC%88%E6%BA%90%E3%80%81%E6%9D%A5%E6%BA%90%E3%80%81PPA%EF%BC%89%E8%8E%B7%E5%8F%96%E5%B7%B2%E5%AE%89%E8%A3%85%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%9F.png)
背景
没有相应存储库的包名称会产生误导。您无法仅使用包名称在系统 B 上重现系统 A 中的选择。
我所处的情况这很重要。
从 Internet 上的中央服务器下载的哑 .iso 或 .exe 文件更加透明、更加明确比 *NIX 和“智能”软件包(尤其是 RPM 和 DEB)。
想象一下安装 thief1.com/setup.exe、thief2.com/setup.exe、thief3.com/setup.exe 因为 yourbank.com/setup.exe 失败...
仅知道 thief1.com、thief2.com、thief3.com 存在于您的系统中是不够的。你需要(以某种方式)知道它是 thief2.com/setup.exe。
问题
有没有办法获取已安装软件包及其来源(来源、PPA)的列表?
类似于 Ubuntu 的这些链接:
理想情况下我也想要版本:
- https://packages.ubuntu.com/source/focal/htop/2.2.0-2build1
- https://packages.ubuntu.com/source/bionic/htop/2.1.0-3
我正在寻找任何发行版的答案,因为我还没有听说过在任何地方有任何方法可以做到这一点。如果您可以在某个地方为 RPM/DEB 执行此操作,那就太好了。最好的答案是没有预先配置,但我也会接受带有 hacks 和 hooks 的答案来完成工作。
笔记
- 这个问题不是关于获取包裹源代码。
- 这个问题不是关于从源安装包
答案1
最后一个 apt 版本(apt 1.6.12ubuntu0.2 (amd64))可以完成我想要的大部分工作:
apt list --installed
python/bionic,now 2.7.15~rc1-1 amd64 [installed,automatic]
python2.7/bionic-updates,bionic-security,now 2.7.17-1~18.04ubuntu1.2 amd64 [installed,automatic]
python2.7-minimal/bionic-updates,bionic-security,now 2.7.17-1~18.04ubuntu1.2 amd64 [installed,automatic]
但我仍然需要更好的格式:
我也不确定如何理解这里的“仿生更新,仿生安全”......
- https://packages.ubuntu.com/bionic-updates/python2.7
- https://packages.ubuntu.com/bionic-updates/python2.7-minimal
破碎的: