検索結果から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]

私はDebianのようなapt-cache search、検索結果の各行にその通り入力するパッケージ名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

関連情報