如何從搜尋結果中確定apk包名

如何從搜尋結果中確定apk包名

在 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 searchDebian 等搜尋結果的每一行都包含確切地要輸入的套件名稱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.

相關內容