How to get regular stuff working
Alpine Linux is built around musl libc and BusyBox. This makes it small and very resource efficient. The utilities in BusyBox generally have fewer options and hence missing some functionality when used to daily drive. This page explains how to get the regular utilities working as found in other Linux distributions.
Core utilities
Most of the basic file, shell and text manipulation utilities commonly grouped under Core Utilities are provided by BusyBox. To replace it with original coreutils package:
# apk add coreutils
Util-linux
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as mount
, cfdisk
, more
, lsblk
and kill
are maintained under Util-linux. To have the complete util-linux package:
# apk add util-linux
Search utilities
Standard search tools grep
and find
can be installed by installing the packages grep and findutils as follows:
Bash shell
The default shell used by Alpine Linux is the busybox variant of the ash shell. To install bash:
# apk add bash bash-completion
Hardware Management
Install pciutils and usbutils for configuring PCI and USB hardware respectively. You can always remove these packages once the hardware is configured.
The packages hwdata-pci and hwdata-usb are dependencies for the above utilities and they are installed automatically.
Disk Management
Managing (removable) disks is much easier with udisks.
# apk add udisks2
To see the mounted disks:
# udisksctl status
Network Management
For network, you may want to install iproute2.
# apk add iproute2
Subpackages and missing functionality
In Alpine Linux, binary packages are thinned out and split into subpackages to give you more control over what you install, which in turn keeps your environment as small and efficient as possible. When a package is installed without necessary subpackage(s), user might get the false impression of missing functionality in Alpine Linux.
For eg: the networkmanager package for NetworkManager, a popular network configuration tool is split into 20+ subpackages. If the user installs networkmanager package, usual commands like nmcli
, nmtui
will not be available. Similarly installing network-manager-applet will not allow you to manage Wifi networks. In Alpine Linux, the user is expected to identify and add the required subpackages e.g. networkmanager-cli, networkmanager-tui & networkmanager-wifi to get above functionalities, instead of being forced to have unwanted features and their associated dependencies like bluetooth, adsl, wwan, vpn, l2tp, ppp etc..
Use package database or apk search <pkgname>
to find subpackages related to a package.
Development environment
Compiling in Alpine Linux may be more challenging because it uses musl-libc instead of glibc. The build-base meta package provides regular compiler stuff such as binutils, gcc, g++, make etc..
# apk add build-base
The alpine-sdk meta package is provided to build packages for Alpine Linux. It includes abuild, build-base, and git.
# apk add alpine-sdk
To install CMake:
# apk add cmake extra-cmake-modules
ccache and a lot other tools are also available in Alpine Linux.