有没有办法在可用的 apt 搜索中包含Source
and/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
...