在 Alpine Linux 上,给定 的结果apk search
,如何确定要提供给 的包名称apk add
?
例如,假设我忘记了如何拼写“lighttpd”,或者我忘记了包名称到底是什么。我可能会apk search "lightt*"
在我的机器上执行以下操作(Docker 映像):
lighttpd-mod_auth-1.4.45-r1
acf-lighttpd-0.6.0-r2
lighttpd-mod_webdav-1.4.45-r1
lighttpd-1.4.45-r1
lighttpd-doc-1.4.45-r1
lighttpd-dbg-1.4.45-r1
鉴于上述情况,我如何确定我需要输入apk add lighttpd
?我天真地输入apk add lighttpd-1.4.45-r1
并给出了错误:
ERROR: unsatisfiable constraints:
lighttpd-1.4.45-r1 (missing):
required by: world[lighttpd-1.4.45-r1]
我习惯了apt-cache search
Debian 等搜索结果的每一行都包含确切地要输入的包名称apt-get install
。
答案1
您可以apk search
通过传递它来告诉不包含版本号-q/--quiet
:
$ apk -q search "lightt*"
lighttpd-mod_auth
acf-lighttpd
lighttpd-mod_webdav
lighttpd
lighttpd-doc
lighttpd-dbg
如果你想知道某个软件包提供的版本,事情就会变得有点尴尬:
apk info lighttpd | head -n1 | sed 's/^lighttpd-\(.*\) description:/\1/g'
这是一个获取包版本的简单函数:
apkver() {
apk info "$1" | head -n1 | sed "s/^$1-\(.*\) description:/\1/g"
}
答案2
此问题很可能是因为apk
存储库未更新。
这对我来说可以。
monitor:~# apk search lighttpd
lighttpd-mod_auth-1.4.45-r1
acf-lighttpd-0.6.0-r2
lighttpd-mod_webdav-1.4.45-r1
lighttpd-1.4.45-r1
lighttpd-doc-1.4.45-r1
lighttpd-dbg-1.4.45-r1
monitor:~# apk add lighttpd
(1/10) Installing libev (4.24-r0)
(2/10) Installing libintl (0.19.8.1-r1)
(3/10) Installing libmount (2.28.2-r2)
(4/10) Installing glib (2.52.1-r0)
(5/10) Installing gamin (0.1.10-r10)
(6/10) Installing db (5.3.28-r0)
(7/10) Installing libsasl (2.1.26-r10)
....
所以首先尝试使用apk update
.