Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Explanation of the "--update add" command for Alpine Linux

Tags:

I'm trying to understand the Dockerfile https://hub.docker.com/r/rdsubhas/tor-privoxy-alpine/~/dockerfile/, which contains a RUN executive with

apk --update add privoxy tor@testing runit@testing 

I wanted to check my understanding of how the apk command is being used, so I tried opening a terminal in the Alpine environment as follows:

docker run -it --rm alpine:latest /bin/ash 

after which I simply ran apk to see its usage:

/ # 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. 

The thing is, I don't see the --update option in this documentation (only --update-cache).

What I suspect is that apk --update add [package] is simply shorthand for apk update followed by apk add [package]. Can anyone confirm this?

like image 218
Kurt Peek Avatar asked Apr 28 '17 13:04

Kurt Peek


People also ask

What is apk update?

It's the file format that Android uses to distribute and install apps. As a result, an APK contains all the elements that an app needs to install correctly on your device.


2 Answers

See https://github.com/gliderlabs/docker-alpine/pull/503

apk --update flag is really --update-cache.

Apk uses getopt_long (3), https://github.com/alpinelinux/apk-tools/blob/v2.10.3/src/apk.c#L574

So, --update flag is only abbreviated from --update-cache by getopt_long.

Long option names may be abbreviated if the abbreviation is unique or is an exact match for some defined option.

like image 106
mtgto Avatar answered Sep 20 '22 01:09

mtgto


In short:

To get the latest list of available packages, use the update command.

it is similar to the Debian apt-get update that you do before apt-get install my_package.

from https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Update_the_Package_list:

extract

Update the Package list

Remote repositories change as packages are added and upgraded. To get the latest list of available packages, use the update command. The command downloads the APKINDEX.tar.gz from each repository and stores it in the local cache, typically /var/cache/apk/, /var/lib/apk/ or /etc/apk/cache/.

apk update

Tip: If using remote repositories, it is a good idea to do an update just before doing an add or upgrade command. That way you know you are using the latest software available.

like image 26
user2915097 Avatar answered Sep 24 '22 01:09

user2915097