10 Alpine Linux apk Command Examples

I

am new Alpine Linux system admin user. How do I use apk command line utility for the package management on Apline Linux server running in cloud or a Linux container? How can I use the apk command for the package management?

 

apk command details

Description APK command

Category Package Manager

Difficulty Easy

Root privileges Yes

Estimated completion time 10m

Contents

Syntax

Examples

Update the package list

Search for package

Install a package

Remove/delete a package

Upgrade running system

List installed packages

Show statistics

See also

Alpine Linux is a free and open source Linux-based distro. It uses musl and busybox. It is designed with security in mind and targeted at power users who wants secure distro out of the box. It uses PaX and grsecurity for Linux kernel protection. All binaries are compiled with stack smashing protection. APK stands for Alpine Linux package manager. You use the apk command to delete, install, upgrade, or list software on a running Alpine Linux based system. Like most modern Linux distro all software packages for Alpine Linux are digitally signed to avoid security problems. You can install packages from local disk (such as CDROM or a USB stick) or the internet archive location (repositories) such as http://dl-cdn.alpinelinux.org/alpine/v3.5/main. The list of repositories is stored in /etc/apk/repositories configuration file. Use the cat command to view /etc/apk/repositories file i.e. type cat /etc/apk/repositories. Alpine Linux package often has the .apk extension and called as “a-packs”. The apk command is equivalent to apt command / apt-get command on Debian/Ubuntu on yum command on CentOS Linux.

Purpose

Use apk for installing, upgrading, configuring, and removing apps/programs for an Alpine Linux operating system in a consistent manner.

Syntax

The basic syntax is as follows:

apk [options] command

apk [options] command pkgName

apk [options] command pkgName1 pkgName2

apk command examples

Let us see how to use the apk command to install security updates or new set of packages on an Alpine Linux server.

How to update the package list

To update your package list, enter:

# apk update

 

Sample outputs:

Fig.01: How to update the package list in Alpine Linux

How to search for package(s)

The syntax is:

# apk search pkgName

 

For example, search a package named htop, run:

# apk search htop

 

Sample outputs:

htop-doc-2.0.2-r0

htop-2.0.2-r0

To search and display description:

# apk search -v -d  htop

 

Sample outputs:

htop-doc-2.0.2-r0 – An interactive process viewer (documentation)

htop-2.0.2-r0 – An interactive process viewer

To list all packages available, along with their descriptions

# apk search -v

 

Sample outputs:

gettext-0.19.8.1-r0 – GNU locale utilities

gst-plugins-base0.10-dev-0.10.36-r3 – GStreamer Multimedia Framework Base Plugins (development files)

xcb-util-keysyms-dev-0.4.0-r0 – Utility libraries for XC Binding – keysyms (development files)

openlibm-0.5.4-r0 – High quality system independent, portable, open source libm implementation

imapsync-doc-1.727-r1 – IMAP synchronisation, sync, copy or migration tool (documentation)

evince-lang-3.22.1-r0 – Languages for package evince

jack-1.9.10-r2 – The Jack Audio Connection Kit

php7-intl-7.0.16-r0 – PHP7 extension: intl

php5-5.6.30-r0 – The PHP language runtime engine

samba-libs-4.5.7-r0 – Samba core libraries

gst-plugins-bad1-1.8.3-r0 – GStreamer bad plugins

docker-bash-completion-1.12.6-r0 – Bash completion for Docker

mesa-gl-12.0.3-r0 – Mesa libGL runtime libraries

nagios-plugins-mrtg-2.1.4-r2 – Nagios plugin check_mrtg

…..

..

….

nrpe-2.15-r4 – NRPE allows you to remotely execute Nagios plugins on other Linux/Unix machines.

py2-psycopg2-2.6.2-r1 – A Python-PostgreSQL Database Adapter (for python2)

perl-mime-types-2.13-r0 – Definition of MIME types

perl-net-http-doc-6.09-r0 – Net::HTTP perl module (documentation)

shared-mime-info-lang-1.8-r0 – Languages for package shared-mime-info

altermime-0.3.11-r0 – alterMIME – MIME encoded email pack alteration tool

at-3.1.20-r0 – AT and batch delayed command scheduling utility and daemon

fbida-2.12-r0 – Few applications to display and elementary edit images

How do I search package by wildcards?

The syntax is as follows to search all php7 packages or php5 packages:

# apk search -v  php5*

OR ###

# apk search -v  php7*

 

Sample outputs:

php7-intl-7.0.16-r0 – PHP7 extension: intl

php7-openssl-7.0.16-r0 – PHP7 extension: openssl

php7-dba-7.0.16-r0 – PHP7 extension: dba

php7-sqlite3-7.0.16-r0 – PHP7 extension: sqlite3

php7-pear-7.0.16-r0 – PHP Extension and Application Repository

php7-phpdbg-7.0.16-r0 – Interactive PHP debugger

php7-litespeed-7.0.16-r0 – PHP LiteSpeed SAPI

php7-gmp-7.0.16-r0 – PHP7 extension: gmp

php7-pdo_mysql-7.0.16-r0 – PHP7 extension: pdo_mysql

php7-pcntl-7.0.16-r0 – PHP7 extension: pcntl

php7-common-7.0.16-r0 – The PHP language runtime engine – 7th branch (common config)

php7-xsl-7.0.16-r0 – PHP7 extension: xsl

php7-fpm-7.0.16-r0 – PHP FastCGI Process Manager

php7-mysqlnd-7.0.16-r0 – PHP7 extension: mysqlnd

php7-enchant-7.0.16-r0 – PHP7 extension: enchant

php7-pspell-7.0.16-r0 – PHP7 extension: pspell

php7-snmp-7.0.16-r0 – PHP7 extension: snmp

….

..

php7-sockets-7.0.16-r0 – PHP7 extension: sockets

php7-soap-7.0.16-r0 – PHP7 extension: soap

php7-apcu-5.1.8-r0 – PHP extension APC User Cache

php7-sysvmsg-7.0.16-r0 – PHP7 extension: sysvmsg

php7-zlib-7.0.16-r0 – PHP7 extension: zlib

php7-ftp-7.0.16-r0 – PHP7 extension: ftp

php7-sysvsem-7.0.16-r0 – PHP7 extension: sysvsem

php7-pdo-7.0.16-r0 – PHP7 extension: pdo

php7-bz2-7.0.16-r0 – PHP7 extension: bz2

php7-mysqli-7.0.16-r0 – PHP7 extension: mysqli

How to install a package(s) by name

The syntax is:

# apk add pkgName

apk add pkgName1 pkgName2

 

To install a htop package, run:

# apk add htop

 

Sample outputs:

(1/1) Installing htop (2.0.2-r0)

Executing busybox-1.25.1-r0.trigger

OK: 39 MiB in 28 packages

To install Apache2 along with PHP7 and modules, run:

apk add apache2 php7-apache2 php7-gd php7-mysqli

 

Sample outputs:

(1/28) Installing libuuid (2.28.2-r1)

(2/28) Installing apr (1.5.2-r1)

(3/28) Installing expat (2.2.0-r0)

(4/28) Installing apr-util (1.5.4-r2)

(5/28) Installing pcre (8.39-r0)

(6/28) Installing apache2 (2.4.25-r0)

Executing apache2-2.4.25-r0.pre-install

(7/28) Installing php7-common (7.0.16-r0)

(8/28) Installing libedit (20150325.3.1-r3)

(9/28) Installing libxml2 (2.9.4-r2)

(10/28) Installing php7-apache2 (7.0.16-r0)

(11/28) Installing libxau (1.0.8-r1)

(12/28) Installing libxdmcp (1.1.2-r2)

(13/28) Installing libxcb (1.12-r0)

(14/28) Installing libx11 (1.6.4-r0)

(15/28) Installing libxext (1.3.3-r1)

(16/28) Installing libice (1.0.9-r1)

(17/28) Installing libsm (1.2.2-r0)

(18/28) Installing libxt (1.1.5-r0)

(19/28) Installing libxpm (3.5.12-r0)

(20/28) Installing libbz2 (1.0.6-r5)

(21/28) Installing libpng (1.6.25-r0)

(22/28) Installing freetype (2.7-r1)

(23/28) Installing libjpeg-turbo (1.5.1-r0)

(24/28) Installing libwebp (0.5.2-r0)

(25/28) Installing php7-gd (7.0.16-r0)

(26/28) Installing mariadb-common (10.1.22-r0)

(27/28) Installing mariadb-client-libs (10.1.22-r0)

(28/28) Installing php7-mysqli (7.0.16-r0)

Executing busybox-1.25.1-r0.trigger

OK: 64 MiB in 56 packages

How do install a local .apk file package?

The syntax is as follows to add a local package named foo.apk:

# apk add –allow-untrusted /path/to/foo.apk

How to remove or delete a package(s) by name

The syntax is:

# apk del pkgName

# apk del pkgName1 pkgName2

 

To delete a htop package run:

# apk del htop

 

Sample outputs:

(1/1) Purging htop (2.0.2-r0)

Executing busybox-1.25.1-r0.trigger

OK: 39 MiB in 27 packages

How to upgrade running Alpine Linux

The syntax is:

# apk update && apk upgrade

 

You can create a bash shell alias as follows in ~/.bashrc

# echo  alias update= apk update && apk upgrade   >> /.bashrc

 

Run it as follows:

# update

How do I upgrade selected packages only?

The syntax is

# apk add -u pkgName

 

To upgrade a htop only package:

# apk update

# apk add -u htop

How do I list installed packages?

The syntax is:

# apk info

# apk info -vv | grep  foo

# apk info -vv | sort

 

Fig.02: How do I show/list installed packages in Alpine Linux

Find out which package a file belongs to..

to determine which package a file named /etc/passwd or /sbin/apk belongs to:

# apk info –who-owns /etc/passwd

/etc/passwd is owned by alpine-baselayout-3.0.4-r0

# apk info –who-owns /sbin/apk

/sbin/apk is owned by apk-tools-2.6.8-r2

List contents of the PACKAGE

# apk -L info pkgName

# apk -L info htop

 

Sample outputs:

htop-2.0.2-r0 contains:

usr/bin/htop

usr/share/applications/htop.desktop

usr/share/pixmaps/htop.png

Check if PACKAGE is installed

# apk -e info pkgName

#######################################

find out if atop PACKAGE is installed ###

#######################################

# apk -e info atop

 

No output displayed if PACKAGE is NOT installed.

List packages that the PACKAGE depends on

# apk -R info atop

# apk -R info atop

 

Sample outputs:

atop-2.2_p3-r0 depends on:

so:libc.musl-x86_64.so.1

so:libncursesw.so.6

so:libz.so.1

List all packages depending on PACKAGE

# apk info -r pkgName

# apk info -r bash

 

Sample outputs:

bash-completion-2.4-r0

Show installed size of PACKAGE

# apk info -s pkgName

# apk info -s atop

 

Sample outputs:

atop-2.2_p3-r0 installed size:

520192

Print description for PACKAGE

# apk info -d pkgName

# apk info -d bash

 

Sample outputs:

bash-4.3.46-r5 description:

The GNU Bourne Again shell

Print all information about PACKAGE

# apk info -a pkgName

# apk info -a bash

 

Sample outputs:

apk info -a bash

bash-4.3.46-r5 description:

The GNU Bourne Again shell

 

bash-4.3.46-r5 webpage:

http://www.gnu.org/software/bash/bash.html

 

bash-4.3.46-r5 installed size:

700416

 

bash-4.3.46-r5 depends on:

busybox

so:libc.musl-x86_64.so.1

so:libncursesw.so.6

so:libreadline.so.6

 

bash-4.3.46-r5 provides:

 

bash-4.3.46-r5 is required by:

bash-completion-2.4-r0

 

bash-4.3.46-r5 contains:

bin/bashbug

bin/bash

 

bash-4.3.46-r5 triggers:

 

bash-4.3.46-r5 has auto-install rule:

 

bash-4.3.46-r5 affects auto-installation of:

bash-doc-4.3.46-r5

 

bash-4.3.46-r5 replaces:

 

bash-4.3.46-r5 license:

GPL3+

How do I see statistics about repositories and installations?

Run the command:

# apk stats

 

Sample outputs:

installed:

packages: 28

dirs: 163

files: 7097

bytes: 41205760

triggers: 1

available:

names: 11710

packages: 7961

atoms:

num: 5934

bash-4.3#

bash-4.3# apk stats

installed:

packages: 28

dirs: 163

files: 7097

bytes: 41205760

triggers: 1

available:

names: 11710

packages: 7961

atoms:

num: 5934

apk command options and examples

Command Usage Example

apk update Update the package list apk update

apk upgrade Upgrade the system apk update

apt ugrade

apk add pkg Add a package apk add apache

apk del pkg Delete a package apk del nginx

apk search -v Search for packages apk search -v

apk search -v -d ‘nginx*’

apk search -v ‘apache*’

apk info List all installed pacakges apk info

apk fix Repair package or upgrade it without modifying main dependencies apk fix

apk policy pkg Show repository policy for packages apk policy bash

apk stats Show statistics about repositories and installations apk stats

See also

/etc/apk/repositories file.

Category List of Unix and Linux commands

File Management cat

Network Utilities dig • host • ip •

Package Manager apk • apt

Processes Management bg • chroot • disown • fg • jobs • kill • killall • pwdx • time • pidof • pstree

Searching whereis • which

User Information groups • id • last • lastcomm • logname • users • w • who • whoami • lid • members

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *