
No Alpine Linux, dados os resultados de um apk search
, como determino o nome do pacote a ser fornecido apk add
?
Por exemplo, suponha que eu esqueci como se escreve "lighttpd" ou esqueci exatamente qual era o nome do pacote. Eu poderia fazer um apk search "lightt*"
que produza o seguinte na minha máquina (uma imagem 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
Dado o exposto, como faço para descobrir que preciso digitar apk add lighttpd
? Digitei ingenuamente apk add lighttpd-1.4.45-r1
e deu um erro:
ERROR: unsatisfiable constraints:
lighttpd-1.4.45-r1 (missing):
required by: world[lighttpd-1.4.45-r1]
Estou acostumado com coisas como apt-cache search
no Debian, onde cada linha dos resultados da pesquisa incluiexatamenteo nome do pacote para digitar apt-get install
.
Responder1
Você pode dizer apk search
para não incluir números de versão passando-os -q/--quiet
:
$ apk -q search "lightt*"
lighttpd-mod_auth
acf-lighttpd
lighttpd-mod_webdav
lighttpd
lighttpd-doc
lighttpd-dbg
Se você quiser descobrir qual versão um pacote oferece, fica um pouco mais estranho:
apk info lighttpd | head -n1 | sed 's/^lighttpd-\(.*\) description:/\1/g'
Aqui está uma função simples para obter a versão de um pacote:
apkver() {
apk info "$1" | head -n1 | sed "s/^$1-\(.*\) description:/\1/g"
}
Responder2
Esse problema provavelmente ocorre porque apk
os repositórios não são atualizados.
Isso funciona bem para mim.
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)
....
Então tente primeiro com apk update
.