在 Linux Alpine 中,我使用apk version package
它来检索软件包的已安装版本。出于某种原因,某些软件包根本没有返回任何结果。还有其他方法可以做到这一点吗,还是我遗漏了什么?
docker run -it --rm alpine:3.15
apk add bash openssh-client
# Installs packages
apk version bash
Installed: Available:
bash-5.1.8-r0 = 5.1.8-r0
apk version openssh-client
Installed: Available:
答案1
如果所需的只是人类可读的版本信息,那么仍然可以从 openssh-client 的 apk 中获取,使用方法如下:
~ # apk info openssh-client
openssh-client-default-9.3_p1-r3 description:
OpenBSD's SSH client
openssh-client-default-9.3_p1-r3 webpage:
https://www.openssh.com/portable.html
...
至于apk version
,首先apk version any_unrecognised_string
返回完全相同的空输出。我认为这是因为 openssh-client 是一个元包,是为方便起见捆绑的其他包的集合。与 build-base 类似,但与 build-base 不同的是,上传者可能尚未提供所有 openssh-client 的元数据。
apk add openssh-client
安装 3 个应用程序(可能更多)。可以通过以下方式查看:
~ # apk info | grep openssh*
openssh-client-common
openssh-client-default
openssh-keygen
可以使用其全名查找每个程序的版本信息,例如apk version openssh-client-common
。或者通过以下方式查找所有三个程序的版本信息:
~ # apk info | grep openssh* | xargs apk version
Installed: Available:
openssh-client-common-9.3_p1-r3 = 9.3_p1-r3
openssh-client-default-9.3_p1-r3 = 9.3_p1-r3
openssh-keygen-9.3_p1-r3 = 9.3_p1-r3