Gra*_*ray 4 debian dpkg shell-script package-management
所以,就目前而言,假设我们只需要在基于 debian 的系统上使用它(但我将来需要能够这样做yum
)。
我现在拥有的最好的是dpkg-query
。所以,例如,如果我运行这个:
dpkg-query --show
Run Code Online (Sandbox Code Playgroud)
我会得到一个这样的列表(有几千个条目):
...
sudo 1.8.17p1-2
...
vim 2:7.4.1829-1
...
Run Code Online (Sandbox Code Playgroud)
虽然没有命名约定。一些包中有版本号,一些包中有架构。ex gcc-4.9-base:amd64
,但我想要的只有gcc 4.9
. 理想情况下,我希望能够获得所有已安装软件的供应商、产品和版本信息。有什么办法可以在本机上做到这一点,还是必须是某种“模糊”匹配?
我对查询包管理器的替代方法或其他一些我没有想到的方法持开放态度。我无法安装额外的包来实现这个目标(不过,如果存在的话,我很想看看它们是如何工作的)。
这将列出与安装的二进制包对应的源包和版本:
dpkg-query --show -f '${source:Package} ${source:Version}\n' | sort -u
Run Code Online (Sandbox Code Playgroud)
这是与您可以自动获得的单个软件最接近的匹配:您只会看到gcc-4.9
一次,以及相关的版本,而不是所有相应的二进制包。您无法轻松检索“供应商”信息,您需要查看包详细信息 ( apt-cache show ...
) 或许可信息(在/usr/share/doc/<package>/copyright
- 它应该指向“上游”项目,即“供应商”);这不能保证是机器可读的格式,因此会涉及一些人工解析。
您仍然会发现一些名称包含(主要)版本的源包,例如 gcc-4.9
,gcc-5
等;当包被设计为可以共同安装主要版本时,这些是不可避免的,就像 GCC 的情况一样。
等效的 RPM 命令是
rpm --qf "%{SOURCERPM}\n" -qa | sort -u
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
676 次 |
最近记录: |