Alpine Linuxのapkコマンドでインストール可能なパッケージを検索する方法
はじめに
dig
コマンドや nmap
をつかって、サーバの外部からの見え方を調査する必要がありました。
軽量でクリーンなLinux環境がほしかったので、 Alpine Linux を使ってみたのですが、パッケージの探し方について yum
や apt
との違いが理解できていませんでした。
特に導入したいコマンドを含むパッケージをどうやって探すかについて知らなかったので調べてみました。
検証環境
$ uname -moi
x86_64 MacBookPro16,1 Darwin
$ bash -version | head -n 1
GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin20.3.0)
まずは "Alpine Linux" の起動
docker
コマンドを使って、 "Alpine Linux" を起動します。
以下のコマンドを実行すれば初回実行時のみ、 "Docker Hub" からイメージファイルがダウンロードされます。
ダウンロードが完了していれば、直ちに "Alpine Linux" コンテナが起動し、ログイン済み状態となります。
$ docker run -i -t --rm alpine
/ #
1. 「インストール可能なパッケージ」をWebから検索する方法
"Alpine Linux" で使えるパッケージは Alpine Linux packages というサイトから検索できる。
"File" という入力エリアに dig
を入力して "Search" ボタン を押します。
bind-tools というパッケージをインストールすれば良いことがわかります。
2. 「インストール可能なパッケージ」をコマンドから検索する方法
apk
コマンドのヘルプを確認します。
/ # apk --help
apk-tools 2.12.5, compiled for x86_64.
usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]
Package installation and removal:
add Add packages to WORLD and commit changes
del Remove packages from WORLD and commit changes
System maintenance:
fix Fix, reinstall or upgrade packages without modifying WORLD
update Update repository indexes
upgrade Install upgrades available from repositories
cache Manage the local package cache
Querying package information:
info Give detailed information about packages or repositories
list List packages matching a pattern or other criteria
dot Render dependencies as graphviz graphs
policy Show repository policy for packages
Repository maintenance:
index Create repository index file from packages
fetch Download packages from global repositories to a local directory
manifest Show checksums of package contents
verify Verify package integrity and signature
Miscellaneous:
audit Audit system for changes
stats Show statistics about repositories and installations
version Compare package versions or perform tests on version strings
This apk has coffee making abilities.
For more information: man 8 apk
apk search
コマンドのヘルプを確認してみます。
/ # apk search --help
apk-tools 2.12.5, compiled for x86_64.
Global options:
-f, --force Enable selected --force-* options (deprecated)
-i, --interactive Ask confirmation before performing certain
operations
-p, --root <ROOT> Manage file system at ROOT
-q, --quiet Print less information
-U, --update-cache Alias for '--cache-max-age 1'
-v, --verbose Print more information (can be specified twice)
-V, --version Print program version and exit
-X, --repository <REPO>
Specify additional package repository
--allow-untrusted Install packages with untrusted signature or no
signature
--arch ARCH Temporarily override architecture, to be combined
with --root
--cache-dir CACHEDIR Temporarily override the cache directory
--cache-max-age AGE Maximum AGE (in minutes) for index in cache before
it's refreshed
--force-binary-stdout
Continue even if binary data will be printed to the
terminal
--force-broken-world Continue even if WORLD cannot be satisfied
--force-non-repository
Continue even if packages may be lost on reboot
--force-old-apk Continue even if packages use unsupported features
--force-overwrite Overwrite files in other packages
--force-refresh Do not use cached files (local or from proxy)
--keys-dir KEYSDIR Override directory of trusted keys
--no-cache Do not use any local cache path
--no-network Do not use the network
--no-progress Disable progress bar even for TTYs
--print-arch Print default arch and exit
--progress Show progress
--progress-fd FD Write progress to the specified file descriptor
--purge Delete modified configuration files on package
removal and uninstalled packages from cache on cache
clean
--repositories-file REPOFILE
Override system repositories, see repositories
--wait TIME Wait for TIME seconds to get an exclusive repository
lock before failing
apk search
を使ってパッケージを検索する
早速、 dig
コマンドが内包されているパッケージを探してみます。
( 先程もWebから検索した結果からわかるとおり、 apk
では bind-tools
というパッケージに dig
コマンドが内包されていました。 )
/ # apk search dig
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: No such file or directory
警告が表示されてしまいました。apk search
コマンドを利用するためには、一度 apk update
してパッケージ情報を更新する必要があるようです。
/ # apk search dig
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: No such file or directory
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: No such file or directory
/ # apk update
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
v3.13.5-127-g92dd8b922b [https://dl-cdn.alpinelinux.org/alpine/v3.13/main]
v3.13.5-127-g92dd8b922b [https://dl-cdn.alpinelinux.org/alpine/v3.13/community]
OK: 13888 distinct packages available
/ # apk search dig
vboot-utils-6310032-r4
djvulibre-3.5.28-r0
perl-digest-sha1-doc-2.13-r13
perl-digest-hmac-1.03-r2
apache2-utils-2.4.46-r3
alsa-tools-1.2.2-r0
perl-digest-md5-doc-2.58-r0
alsa-tools-gui-1.2.2-r0
ntpsec-1.2.0-r1
vis-0.7-r0
kup-0.8.0-r1
perl-digest-md5-2.58-r0
perl-digest-sha1-2.13-r13
pdns-tools-4.3.1-r2
bind-tools-9.16.15-r1
cyrus-sasl-digestmd5-2.1.27-r10
xapian-omega-1.4.17-r0
perl-digest-jhash-0.10-r1
libselinux-utils-2.8-r0
knot-utils-3.0.5-r0
rt4-4.4.4-r3
perl-digest-hmac-doc-1.03-r2
perl-digest-bubblebabble-doc-0.02-r4
sofia-sip-1.13.2-r0
perl-digest-jhash-doc-0.10-r1
heimdal-libs-7.7.0-r4
nagios-plugins-dig-2.3.2-r1
perl-digest-bubblebabble-0.02-r4
xbps-0.59.1-r0
perl-digest-perl-md5-1.9-r3
perl-digest-perl-md5-doc-1.9-r3
freeradius-3.0.21-r7
john-1.9.0-r2
bind-tools が検索結果として見つかりましたね。めでたしめでたし(と言いたいところですが、結果が見にくいですね^^;)。
apk search
の検索結果をもう少し詳しく・見やすくする
このままだとどのパッケージが最適かわかりにくいため、 --verbose
オプションを付与します。
/ # apk search --verbose dig
vboot-utils-6310032-r4 - Chromium OS vboot utilities
djvulibre-3.5.28-r0 - Utilities and Libraries for the DjVu image format
perl-digest-sha1-doc-2.13-r13 - Perl interface to the SHA-1 algorithm (documentation)
perl-digest-hmac-1.03-r2 - Keyed-Hashing for Message Authentication Perl module
apache2-utils-2.4.46-r3 - Apache utility programs for webservers
alsa-tools-1.2.2-r0 - Advanced tools for certain sound cards
perl-digest-md5-doc-2.58-r0 - Perl interface to the MD-5 algorithm (documentation)
alsa-tools-gui-1.2.2-r0 - Advanced tools for certain sound cards (GUI tools)
ntpsec-1.2.0-r1 - NTP reference implementation, refactored for security
vis-0.7-r0 - Modern, legacy free, simple yet efficient vim-like editor
kup-0.8.0-r1 - A KDE bup backup software for helping people to keep up-to-date backups
perl-digest-md5-2.58-r0 - Perl interface to the MD-5 algorithm
perl-digest-sha1-2.13-r13 - Perl interface to the SHA-1 algorithm
pdns-tools-4.3.1-r2 - PowerDNS Authoritative Server
bind-tools-9.16.15-r1 - The ISC DNS tools
cyrus-sasl-digestmd5-2.1.27-r10 - Cyrus SASL plugin for digestmd5
xapian-omega-1.4.17-r0 - Indexers and CGI search frontend for Xapian
perl-digest-jhash-0.10-r1 - Perl extension for 32 bit Jenkins Hashing Algorithm
libselinux-utils-2.8-r0 - SELinux libselinux utilies
knot-utils-3.0.5-r0 - Knot and DNS client utilities shipped with the Knot DNS server
rt4-4.4.4-r3 - Request Tracker - issue and bug tracker
perl-digest-hmac-doc-1.03-r2 - Keyed-Hashing for Message Authentication Perl module (documentation)
perl-digest-bubblebabble-doc-0.02-r4 - Create bubble-babble fingerprints (documentation)
sofia-sip-1.13.2-r0 - RFC3261 compliant SIP User-Agent library
perl-digest-jhash-doc-0.10-r1 - Perl extension for 32 bit Jenkins Hashing Algorithm (documentation)
heimdal-libs-7.7.0-r4 - Heimdal libraries
nagios-plugins-dig-2.3.2-r1 - Nagios plugin check_dig
perl-digest-bubblebabble-0.02-r4 - Create bubble-babble fingerprints
xbps-0.59.1-r0 - The X Binary Package System
perl-digest-perl-md5-1.9-r3 - Perl Implementation of Rivest's MD5 algorithm
perl-digest-perl-md5-doc-1.9-r3 - Perl Implementation of Rivest's MD5 algorithm (documentation)
freeradius-3.0.21-r7 - RADIUS (Remote Authentication Dial-In User Service) server
john-1.9.0-r2 - John the Ripper password cracker
少しだけ加工してやることで随分見やすくなります。
/ # apk search --verbose dig | while read -r P _ O; do printf "%-50s\\t%s\\n" "${P}" "${O}"; done
vboot-utils-6310032-r4 Chromium OS vboot utilities
djvulibre-3.5.28-r0 Utilities and Libraries for the DjVu image format
perl-digest-sha1-doc-2.13-r13 Perl interface to the SHA-1 algorithm (documentation)
perl-digest-hmac-1.03-r2 Keyed-Hashing for Message Authentication Perl module
apache2-utils-2.4.46-r3 Apache utility programs for webservers
alsa-tools-1.2.2-r0 Advanced tools for certain sound cards
perl-digest-md5-doc-2.58-r0 Perl interface to the MD-5 algorithm (documentation)
alsa-tools-gui-1.2.2-r0 Advanced tools for certain sound cards (GUI tools)
ntpsec-1.2.0-r1 NTP reference implementation, refactored for security
vis-0.7-r0 Modern, legacy free, simple yet efficient vim-like editor
kup-0.8.0-r1 A KDE bup backup software for helping people to keep up-to-date backups
perl-digest-md5-2.58-r0 Perl interface to the MD-5 algorithm
perl-digest-sha1-2.13-r13 Perl interface to the SHA-1 algorithm
pdns-tools-4.3.1-r2 PowerDNS Authoritative Server
bind-tools-9.16.15-r1 The ISC DNS tools
cyrus-sasl-digestmd5-2.1.27-r10 Cyrus SASL plugin for digestmd5
xapian-omega-1.4.17-r0 Indexers and CGI search frontend for Xapian
perl-digest-jhash-0.10-r1 Perl extension for 32 bit Jenkins Hashing Algorithm
libselinux-utils-2.8-r0 SELinux libselinux utilies
knot-utils-3.0.5-r0 Knot and DNS client utilities shipped with the Knot DNS server
rt4-4.4.4-r3 Request Tracker - issue and bug tracker
perl-digest-hmac-doc-1.03-r2 Keyed-Hashing for Message Authentication Perl module (documentation)
perl-digest-bubblebabble-doc-0.02-r4 Create bubble-babble fingerprints (documentation)
sofia-sip-1.13.2-r0 RFC3261 compliant SIP User-Agent library
perl-digest-jhash-doc-0.10-r1 Perl extension for 32 bit Jenkins Hashing Algorithm (documentation)
heimdal-libs-7.7.0-r4 Heimdal libraries
nagios-plugins-dig-2.3.2-r1 Nagios plugin check_dig
perl-digest-bubblebabble-0.02-r4 Create bubble-babble fingerprints
xbps-0.59.1-r0 The X Binary Package System
perl-digest-perl-md5-1.9-r3 Perl Implementation of Rivest's MD5 algorithm
perl-digest-perl-md5-doc-1.9-r3 Perl Implementation of Rivest's MD5 algorithm (documentation)
freeradius-3.0.21-r7 RADIUS (Remote Authentication Dial-In User Service) server
john-1.9.0-r2 John the Ripper password cracker
ひとこと
当エントリは 一度バージョン 2.10.4
を利用していた内容で書かれていましたが、、バージョン 2.12.5
を利用した内容に変更してあります。
コマンドオプションやヘルプで表示される情報が大きく変更になっていました。
ディスカッション
コメント一覧
まだ、コメントがありません