Dockerfileを理解しようとしています https://hub.docker.com/r/rdsubhas/tor-privoxy-Alpine/~/dockerfile/ これにはRUN
エグゼクティブが含まれていますと
apk --update add privoxy tor@testing runit@testing
apk
コマンドがどのように使用されているかについての理解を確認したかったので、次のようにAlpine環境でターミナルを開いてみました。
docker run -it --rm Alpine:latest /bin/ash
その後、apk
を実行して、その使用法を確認しました。
/ # apk
apk-tools 2.6.8, compiled for x86_64.
usage: apk COMMAND [-h|--help] [-p|--root DIR] [-X|--repository REPO]
[-q|--quiet] [-v|--verbose] [-i|--interactive] [-V|--version]
[-f|--force] [-U|--update-cache] [--progress] [--progress-fd FD]
[--no-progress] [--purge] [--allow-untrusted] [--wait TIME]
[--keys-dir KEYSDIR] [--repositories-file REPOFILE] [--no-network]
[--no-cache] [--Arch ARCH] [--print-Arch] [ARGS]...
The following commands are available:
add Add PACKAGEs to 'world' and install (or upgrade) them, while
ensuring that all dependencies are met
del Remove PACKAGEs from 'world' and uninstall them
fix Repair package or upgrade it without modifying main dependencies
update Update repository indexes from all remote repositories
info Give detailed information about PACKAGEs or repositores
search Search package by PATTERNs or by indexed dependencies
upgrade Upgrade currently installed packages to match repositories
cache Download missing PACKAGEs to cache and/or delete unneeded files
from cache
version Compare package versions (in installed database vs. available) or
do tests on literal version strings
index Create repository index file from FILEs
fetch Download PACKAGEs from global repositories to a local directory
audit Audit the directories for changes
verify Verify package integrity and signature
dot Generate graphviz graphs
policy Show repository policy for packages
stats Show statistics about repositories and installations
Global options:
-h, --help Show generic help or applet specific help
-p, --root DIR Install packages to DIR
-X, --repository REPO Use packages from REPO
-q, --quiet Print less information
-v, --verbose Print more information (can be doubled)
-i, --interactive Ask confirmation for certain operations
-V, --version Print program version and exit
-f, --force Do what was asked even if it looks dangerous
-U, --update-cache Update the repository cache
--progress Show a progress bar
--progress-fd FD Write progress to fd
--no-progress Disable progress bar even for TTYs
--purge Delete also modified configuration files (pkg
removal) and uninstalled packages from cache (cache
clean)
--allow-untrusted Install packages with untrusted signature or no
signature
--wait TIME Wait for TIME seconds to get an exclusive repository
lock before failing
--keys-dir KEYSDIR Override directory of trusted keys
--repositories-file REPOFILE Override repositories file
--no-network Do not use network (cache is still used)
--no-cache Read uncached index from network
--Arch ARCH Use architecture with --root
--print-Arch Print default Arch and exit
This apk has coffee making abilities.
問題は、このドキュメントに--update
オプションが表示されていないことです(--update-cache
のみ)。
私が思うに、apk --update add [package]
は単にapk update
の略記であり、その後にapk add [package]
が続きます。誰かがこれを確認できますか?
要するに:
To get the latest list of available packages, use the update command.
これは、apt-get update
の前に行うDebianapt-get install my_package
に似ています。
から https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Update_the_Package_list :
エキス
パッケージリストを更新する
パッケージが追加およびアップグレードされると、リモートリポジトリが変更されます。使用可能なパッケージの最新リストを取得するには、updateコマンドを使用します。このコマンドは、各リポジトリからAPKINDEX.tar.gzをダウンロードし、ローカルキャッシュ(通常は/ var/cache/apk /、/ var/lib/apk /、または/ etc/apk/cache /)に保存します。
aPKアップデート
ヒント:リモートリポジトリを使用している場合は、追加またはアップグレードコマンドを実行する直前に更新を実行することをお勧めします。そうすれば、利用可能な最新のソフトウェアを使用していることがわかります。
https://github.com/gliderlabs/docker-Alpine/pull/5 を参照してください
apk--updateフラグは実際には--update-cacheです。
APKはgetopt_long(3)を使用します https://github.com/alpinelinux/apk-tools/blob/v2.10.3/src/apk.c#L574
したがって、-updateフラグはgetopt_longによって--update-cacheから省略されるだけです。
省略形が一意である場合、または定義されたオプションと完全に一致する場合は、長いオプション名を省略できます。