已安装的软件包

已安装的软件包

有没有办法在可用的 apt 搜索中包含Sourceand/or字段(即Homepage不是是否已安装)软件包?例如 

apt search pyyaml

即使没有产生任何结果 

apt show python3-yaml

显示 2 个字段Source和 Homepage单词 pyyaml。记录的搜索选项没有帮助;是否有其他命令或其他搜索方式?

答案1

已安装的软件包

您可以使用dpkg-query(参见man dpkg-query有关详细信息)命令来实现此目的。

我们将使用以下字段的包:

  • binary:Package
    它包含二进制包名称以及可能的体系结构限定符,如“libc6:amd64”(自 dpkg 1.16.2 起)。体系结构限定符将使包名称明确无误,例如,如果包具有值为相同的 Multi-Arch 字段或包属于外部体系结构。

  • Version- 软件包版本;

  • Homepage- 项目主页,您请求的字段
  • source:Package
    它包含此二进制包的源包名称(自 dpkg 1.16.2 起)。

列出所有可用包的命令:

dpkg-query -W -f='${binary:Package} ${Version}\t${Homepage}\t${source:Package}\n' "*"

获取查询结果的命令pyyaml由上述命令和简单命令组成grep

dpkg-query -W -f='${binary:Package} ${Version}\t${Homepage}\t${source:Package}\n' "*" | grep -i pyyaml

Ubuntu 16.04.5 LTS 上的结果如下:

$ dpkg-query -W -f='${binary:Package} ${Version}\t${Homepage}\t${source:Package}\n' "*" | grep -i pyyaml
libyaml-0-2:amd64 0.1.6-3   http://pyyaml.org/wiki/LibYAML  libyaml
python-yaml 3.11-3build1    http://pyyaml.org/  pyyaml
python3-yaml 3.11-3build1   http://pyyaml.org/  pyyaml

在上面的输出中,所有pyyaml出现的情况都将标记为红色python3-yaml输出中存在。

未安装的软件包

对于未安装的软件包,我们可以使用其他低级便捷命令 -grep-dctrl来自dctrl-tools软件包(参见man grep-available了解详情)来解析/var/lib/dpkg/available

我们将使用以下语法:

grep-available --field=Homepage,Source --ignore-case YAML

我们还可以通过仅显示包名称(添加)来缩短输出--show-field=Package

grep-available --field=Homepage,Source --show-field=Package --ignore-case YAML /var/lib/dpkg/available

我们将得到:

Package: libyaml-tiny-perl
Package: libyaml-0-2
Package: libyaml-0-2
Package: python3-yaml

grep-aptavail我们可以使用(参见)获得更多结果man grep-aptavail):

grep-aptavail --field=Homepage,Source --show-field=Package --ignore-case YAML

返回结果:

Package: golang-yaml.v2-dev
Package: libyaml-0-2
Package: libyaml-0-2-dbg
Package: libyaml-dev
Package: libyaml-doc
Package: libyaml-libyaml-perl
Package: libyaml-perl
Package: libyaml-tiny-perl
Package: python-yaml
Package: python-yaml-dbg
Package: python3-yaml
Package: python3-yaml-dbg
Package: libyaml-0-2
Package: libyaml-0-2-dbg
Package: libyaml-dev
Package: libyaml-libyaml-perl
Package: python-yaml
Package: python-yaml-dbg
Package: python3-yaml
Package: python3-yaml-dbg
Package: erlang-p1-yaml
Package: golang-github-ghodss-yaml-dev
Package: golang-goyaml-dev
Package: hiera-eyaml
...

相关内容