Как определить имя пакета 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 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.

Связанный контент