<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apropos</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Apropos"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Apropos"/>
	<updated>2026-05-07T05:31:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=ZFS&amp;diff=32317</id>
		<title>ZFS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=ZFS&amp;diff=32317"/>
		<updated>2026-04-12T05:26:38Z</updated>

		<summary type="html">&lt;p&gt;Apropos: fix: replace markdown code syntax with mediawiki syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://openzfs.org/wiki/Main_Page ZFS] or OpenZFS is an open-source storage platform. It includes the functionality of both traditional file systems and volume manager. &lt;br /&gt;
&lt;br /&gt;
This page has instructions for creating and auto-mounting an encrypted ZFS drive or partition on an existing encrypted alpine linux system, using ZFS&#039;s own encryption capabilities. To do fresh install of Alpine Linux with root partition on ZFS, see [[Root on ZFS with native encryption]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages and utilities by using the command:{{Cmd|# apk add zfs}}&lt;br /&gt;
Ensure that the kernel modules are loaded and verify that the device nodes are present:{{Cmd|&amp;lt;nowiki&amp;gt;# modprobe zfs         &lt;br /&gt;
# mdev -s &amp;lt;/nowiki&amp;gt; }}&lt;br /&gt;
If your use of ZFS depends on volumes appearing in {{Path|/dev/zvol/$ZPOOL/$ZVOL}}, you will also need to [[Eudev|setup eudev]] and:{{Cmd|# apk add zfs-udev}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The system will be encrypted when powered off but will not require you to type an extra password at boot, since it uses a key stored on the encrypted root partition. Alternative options are also given, such as prompting for a password at boot rather than storing the key on the root drive. The example in this guide is modeled around creating a ZFS filesystem to be used as a user&#039;s home directory, but it can be trivially modified to create a filesystem for other purposes.&lt;br /&gt;
&lt;br /&gt;
=== Create an encryption key ===&lt;br /&gt;
&lt;br /&gt;
This section can be skipped if you intend to unlock the drive by typing a password rather than unlocking automatically. You should use a password instead if your root partition is not encrypted. The location of the file {{Path|/etc/home.key}} can be anything. {{Cmd|&amp;lt;nowiki&amp;gt;# dd if=/dev/random of=/etc/home.key bs=32 count=1&lt;br /&gt;
# chmod 600 /etc/home.key&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: Make sure you don&#039;t lose this key by overwriting your root filesystem or anything like that. You might want to store a copy of it on an encrypted USB drive, for instance.&lt;br /&gt;
&lt;br /&gt;
=== Create the zpool ===&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;/dev/sd...&amp;lt;/code&amp;gt; with the name of the disk or partition where you would like to make the zfs filesystem, such as &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt;. If you would like to be prompted for a password at boot rather than using the key as generated above, then replace &amp;lt;code&amp;gt;-O keylocation=file:///etc/home.key -O keyformat=raw&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;-O keylocation=prompt -O keyformat=passphrase&amp;lt;/code&amp;gt;. The name &amp;quot;homepool&amp;quot; can be anything.{{Cmd|&amp;lt;nowiki&amp;gt;# zpool create -o ashift=12 -O acltype=posixacl -O compression=lz4 \&lt;br /&gt;
 -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa \&lt;br /&gt;
 -O encryption=aes-256-gcm -O keylocation=file:///etc/home.key -O keyformat=raw \&lt;br /&gt;
 -O mountpoint=none homepool /dev/sd...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
After completing this, verifying that the pool has been created should return something like::{{Cmd|&amp;lt;nowiki&amp;gt;# zpool status&lt;br /&gt;
      pool: homepool&lt;br /&gt;
     state: ONLINE&lt;br /&gt;
    config:&lt;br /&gt;
 &lt;br /&gt;
            NAME        STATE     READ WRITE CKSUM&lt;br /&gt;
            homepool    ONLINE       0     0     0&lt;br /&gt;
              sd...     ONLINE       0     0     0&lt;br /&gt;
    &lt;br /&gt;
    errors: No known data errors&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
To create and mount the filesystem issue the command {{Cmd|&amp;lt;nowiki&amp;gt;# zfs create -o mountpoint=/home/username homepool/username &lt;br /&gt;
# chown username:username /home/username &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The last command i.e &#039;&#039;chown&#039;&#039; is likely unnecessary if not creating a homedir.&lt;br /&gt;
&lt;br /&gt;
=== Service configuration ===&lt;br /&gt;
&lt;br /&gt;
Setup the following services to auto-mount the new filesystem using [[OpenRC]] &lt;br /&gt;
To import existing zpools:{{Cmd|# rc-update add zfs-import}}    &lt;br /&gt;
To load the encryption keys:{{Cmd|# rc-update add zfs-load-key}}&lt;br /&gt;
Finally to mount the filesystems:{{Cmd|# rc-update add zfs-mount}}    &lt;br /&gt;
&lt;br /&gt;
Reboot the system, so that the encrypted ZFS drive is automounted and becomes available for use.&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
&lt;br /&gt;
On alpine Linux, there in no cron/script provided to scrub (and eventually trim) your pool(s) on a regular basis, like in other Linux distributions.&lt;br /&gt;
&lt;br /&gt;
=== Scrub ===&lt;br /&gt;
&lt;br /&gt;
Scrubbing (and eventually trim) your pool(s) on a [https://blogs.oracle.com/oracle-systems/post/disk-scrub-why-and-when Oracle regular basis] is essential. The scrub examines all data in the specified pools to verify that it checksums correctly. For replicated (mirror, raidz, or draid) devices, ZFS automatically repairs any damage discovered during the scrub&lt;br /&gt;
&lt;br /&gt;
When scrubbing a pool with encrypted filesystems the keys do not need to be loaded. However, if the keys are not loaded and an unrepairable checksum error is detected the file name cannot be included in the zpool status -v verbose error report.&lt;br /&gt;
&lt;br /&gt;
A scrub is split into two parts: metadata scanning and block scrubbing. The metadata scanning sorts blocks into large sequential ranges which can then be read much more efficiently from disk when issuing the scrub I/O.&lt;br /&gt;
&lt;br /&gt;
This script is taken from debian zfs scripts. It is used to list the pools, make sure they are online, and no scrub is being done at the time. The contents of the script placed at {{path|/usr/libexec/zfs/scrub}} is as follows:{{cat|/usr/libexec/zfs/scrub|&amp;lt;nowiki&amp;gt;#!/bin/sh -eu&lt;br /&gt;
&lt;br /&gt;
# directly exit successfully when zfs module is not loaded&lt;br /&gt;
if ! [ -d /sys/module/zfs ]; then&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# [auto] / enable / disable&lt;br /&gt;
PROPERTY_NAME=&amp;quot;org.alpine:periodic-scrub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
get_property () {&lt;br /&gt;
        # Detect the ${PROPERTY_NAME} property on a given pool.&lt;br /&gt;
        # We are abusing user-defined properties on the root dataset,&lt;br /&gt;
        # since they&#039;re not available on pools https://github.com/openzfs/zfs/pull/11680&lt;br /&gt;
        # TODO: use zpool user-defined property when such feature is available.&lt;br /&gt;
        pool=&amp;quot;$1&amp;quot;&lt;br /&gt;
        zfs get -H -o value &amp;quot;${PROPERTY_NAME}&amp;quot; &amp;quot;${pool}&amp;quot; 2&amp;gt;/dev/null || return 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
scrub_if_not_scrub_in_progress () {&lt;br /&gt;
        pool=&amp;quot;$1&amp;quot;&lt;br /&gt;
        if ! zpool status &amp;quot;${pool}&amp;quot; | grep -q &amp;quot;scrub in progress&amp;quot;; then&lt;br /&gt;
                # Ignore errors and continue with scrubbing other pools.&lt;br /&gt;
                zpool scrub &amp;quot;${pool}&amp;quot; || true&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Scrub all healthy pools that are not already scrubbing as per their configs.&lt;br /&gt;
zpool list -H -o health,name 2&amp;gt;&amp;amp;1 | \&lt;br /&gt;
        awk -F&#039;\t&#039; &#039;$1 == &amp;quot;ONLINE&amp;quot; {print $2}&#039; | \&lt;br /&gt;
while read pool&lt;br /&gt;
do&lt;br /&gt;
        # read user-defined config&lt;br /&gt;
        ret=$(get_property &amp;quot;${pool}&amp;quot;)&lt;br /&gt;
        if [ $? -ne 0 ] || [ &amp;quot;disable&amp;quot; = &amp;quot;${ret}&amp;quot; ]; then&lt;br /&gt;
                :&lt;br /&gt;
        elif [ &amp;quot;-&amp;quot; = &amp;quot;${ret}&amp;quot; ] || [ &amp;quot;auto&amp;quot; = &amp;quot;${ret}&amp;quot; ] || [ &amp;quot;enable&amp;quot; = &amp;quot;${ret}&amp;quot; ]; then&lt;br /&gt;
                scrub_if_not_scrub_in_progress &amp;quot;${pool}&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
                cat &amp;gt; /dev/stderr &amp;lt;&amp;lt;EOF&lt;br /&gt;
$0: [WARNING] illegal value &amp;quot;${ret}&amp;quot; for property &amp;quot;${PROPERTY_NAME}&amp;quot; of ZFS dataset &amp;quot;${pool}&amp;quot;.&lt;br /&gt;
$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.&lt;br /&gt;
EOF&lt;br /&gt;
        fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Make the script executable: {{cmd|# chmod +x /usr/libexec/zfs/scrub}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to scrub regularly to assure your pool(s) and datas are in good shape. So the scrub script will be launched once a month, on the 2nd sunday of the month using [[cron]]&lt;br /&gt;
&lt;br /&gt;
Edit your crontabs using the command: {{cmd|# crontab -e}}&lt;br /&gt;
&lt;br /&gt;
and add these 2 lines&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# zfs scrub the second sunday of every month&lt;br /&gt;
24      0       8-14    *       *       if [ $(date +\%w) -eq 0 ] &amp;amp;&amp;amp; [ -x /usr/libexec/zfs/scrub ]; then /usr/libexec/zfs/scrub; fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Trim ===&lt;br /&gt;
&lt;br /&gt;
The command {{ic|zpool trim}} initiates an immediate on-demand TRIM operation for all of the free space in a pool. This operation informs the underlying storage devices of all blocks in the pool which are no longer allocated and allows thinly provisioned devices to reclaim the space.&lt;br /&gt;
&lt;br /&gt;
A manual on-demand TRIM operation can be initiated irrespective of the [https://openzfs.github.io/openzfs-docs/man/v2.2/7/zpoolprops.7.html#autotrim autotrim] pool property setting. The link shows the types of vdev devices which can be trimmed.&lt;br /&gt;
&lt;br /&gt;
This script is taken from debian zfs scripts. It is used  to list the pools, make sure they are online, build only with NVME ssd drive(s) and no trim is being done at the time. The contents of the script placed at {{path|/usr/libexec/zfs/trim}} is as follows:{{cat|/usr/libexec/zfs/trim|&amp;lt;nowiki&amp;gt;#!/bin/sh -eu&lt;br /&gt;
&lt;br /&gt;
# directly exit successfully when zfs module is not loaded&lt;br /&gt;
if ! [ -d /sys/module/zfs ]; then&lt;br /&gt;
        exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# [auto] / enable / disable&lt;br /&gt;
PROPERTY_NAME=&amp;quot;org.alpine:periodic-trim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
get_property () {&lt;br /&gt;
        # Detect the ${PROPERTY_NAME} property on a given pool.&lt;br /&gt;
        # We are abusing user-defined properties on the root dataset,&lt;br /&gt;
        # since they&#039;re not available on pools https://github.com/openzfs/zfs/pull/11680&lt;br /&gt;
        # TODO: use zpool user-defined property when such feature is available.&lt;br /&gt;
        pool=&amp;quot;$1&amp;quot;&lt;br /&gt;
        zfs get -H -o value &amp;quot;${PROPERTY_NAME}&amp;quot; &amp;quot;${pool}&amp;quot; 2&amp;gt;/dev/null || return 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
trim_if_not_already_trimming () {&lt;br /&gt;
        pool=&amp;quot;$1&amp;quot;&lt;br /&gt;
        if ! zpool status &amp;quot;${pool}&amp;quot; | grep -q &amp;quot;trimming&amp;quot;; then&lt;br /&gt;
                # Ignore errors (i.e. HDD pools),&lt;br /&gt;
                # and continue with trimming other pools.&lt;br /&gt;
                zpool trim &amp;quot;${pool}&amp;quot; || true&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
zpool_is_nvme_only () {&lt;br /&gt;
        zpool=$1&lt;br /&gt;
        # get a list of devices attached to the specified zpool&lt;br /&gt;
        zpool list -vHPL &amp;quot;${zpool}&amp;quot; |&lt;br /&gt;
                awk -F&#039;\t&#039; &#039;$2 ~ /^\/dev\// {&lt;br /&gt;
                        if($2 !~ /^\/dev\/nvme/)&lt;br /&gt;
                                exit 1&lt;br /&gt;
                }&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# TRIM all healthy pools that are not already trimming as per their configs.&lt;br /&gt;
zpool list -H -o health,name 2&amp;gt;&amp;amp;1 | \&lt;br /&gt;
        awk -F&#039;\t&#039; &#039;$1 == &amp;quot;ONLINE&amp;quot; {print $2}&#039; | \&lt;br /&gt;
while read pool&lt;br /&gt;
do&lt;br /&gt;
        # read user-defined config&lt;br /&gt;
        ret=$(get_property &amp;quot;${pool}&amp;quot;)&lt;br /&gt;
        if [ $? -ne 0 ] || [ &amp;quot;disable&amp;quot; = &amp;quot;${ret}&amp;quot; ]; then&lt;br /&gt;
                :&lt;br /&gt;
        elif [ &amp;quot;enable&amp;quot; = &amp;quot;${ret}&amp;quot; ]; then&lt;br /&gt;
                trim_if_not_already_trimming &amp;quot;${pool}&amp;quot;&lt;br /&gt;
        elif [ &amp;quot;-&amp;quot; = &amp;quot;${ret}&amp;quot; ] || [ &amp;quot;auto&amp;quot; = &amp;quot;${ret}&amp;quot; ]; then&lt;br /&gt;
                if zpool_is_nvme_only &amp;quot;${pool}&amp;quot;; then&lt;br /&gt;
                        trim_if_not_already_trimming &amp;quot;${pool}&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
        else&lt;br /&gt;
                cat &amp;gt; /dev/stderr &amp;lt;&amp;lt;EOF&lt;br /&gt;
$0: [WARNING] illegal value &amp;quot;${ret}&amp;quot; for property &amp;quot;${PROPERTY_NAME}&amp;quot; of ZFS dataset &amp;quot;${pool}&amp;quot;.&lt;br /&gt;
$0: Acceptable choices for this property are: auto, enable, disable. The default is auto.&lt;br /&gt;
EOF&lt;br /&gt;
        fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Make the script executable: {{cmd|# chmod +x /usr/libexec/zfs/trim}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to trim regularly to assure your pool(s) and datas are in good shape. So the trim script will be launched once a month, on the 1st sunday of the month using [[cron]]&lt;br /&gt;
&lt;br /&gt;
Edit your crontabs using the command: {{cmd|# crontab -e}}&lt;br /&gt;
and add these 2 lines&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# zfs trim the first sunday of every month&lt;br /&gt;
24      0       1-7    *       *       if [ $(date +\%w) -eq 0 ] &amp;amp;&amp;amp; [ -x /usr/libexec/zfs/trim ]; then /usr/libexec/zfs/trim; fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://openzfs.org/wiki/System_Administration ZFS System Administration]&lt;br /&gt;
* [https://openzfs.github.io/openzfs-docs/Getting%20Started/Alpine%20Linux/Root%20on%20ZFS.html OpenZFS Guide for Alpine Linux]&lt;br /&gt;
* [[Root on ZFS with native encryption]]&lt;br /&gt;
* [[Setting up ZFS on LUKS]]&lt;br /&gt;
[[Category:Filesystems]]&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Configure_Networking&amp;diff=32316</id>
		<title>Configure Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Configure_Networking&amp;diff=32316"/>
		<updated>2026-04-12T03:38:37Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Fix minor grammatical errors / tweak some wording throughout, and make clear that NetworkManager and iwd are both fully supported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the steps to configure the network in Alpine Linux using either [[#Network setup-scripts|network setup-scripts]] or manually and to [[#Connectivity testing|test your Internet access]]. Alpine Linux uses [[ifupdown-ng]] for managing its network configuration by default. For additional functionality and graphical or terminal UIs, [[NetworkManager]] or [[iwd]] can be used. &lt;br /&gt;
&lt;br /&gt;
For wireless capability, [[Wi-Fi|wpa_supplicant]] and [[iwd]] are both available and fully supported in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
{{Tip|To setup basic networking quickly, use the [[#setup-interfaces|setup-interfaces]] script.}}&lt;br /&gt;
&lt;br /&gt;
== Network setup-scripts ==&lt;br /&gt;
&lt;br /&gt;
A number of network related scripts are available from the {{pkg|alpine-conf}} package as part of [[Alpine setup scripts]]. These scripts can quickly configure various networking related options in Alpine Linux and satisfy most trivial configurations.  &lt;br /&gt;
&lt;br /&gt;
When [[Installation|installing]] Alpine Linux, the &amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt; script interactively calls the scripts to setup networking.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Alpine_setup_scripts#setup-hostname|setup-hostname]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;[[#setup-interfaces|setup-interfaces]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Alpine_setup_scripts#setup-dns|setup-dns]]&amp;lt;/code&amp;gt; &lt;br /&gt;
* &amp;lt;code&amp;gt;[[Alpine_setup_scripts#setup-proxy|setup-proxy]]&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;[[Alpine_setup_scripts#setup-ntp|setup-ntp]]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup-interfaces ===&lt;br /&gt;
&lt;br /&gt;
This script can be used to configure Ethernet, [[Wi-Fi|wireless]], bridge, bond and vlan interfaces and will satisfy most trivial configurations. Start the script by running the command: {{Cmd|# setup-interfaces}}&lt;br /&gt;
 Available interfaces are: eth0 wlan0.&lt;br /&gt;
 Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
 Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]&lt;br /&gt;
&lt;br /&gt;
choose &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; for Ethernet or &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt; for wireless device, as appropriate.&lt;br /&gt;
&lt;br /&gt;
if asked:&lt;br /&gt;
 Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [dhcp]&lt;br /&gt;
&lt;br /&gt;
choose &amp;lt;code&amp;gt;dhcp&amp;lt;/code&amp;gt;, if you are using dhcp.&lt;br /&gt;
&lt;br /&gt;
Now it will ask &amp;lt;code&amp;gt;Do you to do any manual network configuration? (y/n) [n]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In most cases, you can accept the default option &#039;&#039;&#039;n&#039;&#039;&#039; . Choosing &#039;&#039;&#039;y&#039;&#039;&#039; will open the {{Path|/etc/network/interfaces}} file for editing in [[BusyBox#vi| &#039;&#039;&#039;vi&#039;&#039;&#039; editor]] to proceed with manual network configuration.&lt;br /&gt;
&lt;br /&gt;
The above script configures [[Configure_Networking#Networking_service|Networking service]], starts the service and adds it to the boot run level. &lt;br /&gt;
&lt;br /&gt;
If your networking needs are more advanced, refer to the following detailed guide for manual network configuration.&lt;br /&gt;
&lt;br /&gt;
== Setting hostname ==&lt;br /&gt;
&lt;br /&gt;
To set the system hostname:{{Cmd|# echo &amp;quot;shortname&amp;quot; &amp;gt; /etc/hostname}}&lt;br /&gt;
&lt;br /&gt;
Then, to activate the change: {{Cmd|# hostname -F /etc/hostname}}&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using IPv6, you should also add the following special IPv6 addresses to your {{path|/etc/hosts}} file:{{cat|/etc/hosts|...&lt;br /&gt;
::1             localhost ipv6-localhost ipv6-loopback&lt;br /&gt;
fe00::0         ipv6-localnet&lt;br /&gt;
ff00::0         ipv6-mcastprefix&lt;br /&gt;
ff02::1         ipv6-allnodes&lt;br /&gt;
ff02::2         ipv6-allrouters&lt;br /&gt;
ff02::3         ipv6-allhosts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|If you&#039;re going to use automatic IP configuration, such as IPv4 DHCP or IPv6 Stateless Autoconfiguration, you can skip ahead to [[#Configuring_DNS|Configuring DNS]].  Otherwise, if you&#039;re going to use a static IPv4 or IPv6 address, continue below.}}&lt;br /&gt;
&lt;br /&gt;
For a static IP configuration, it&#039;s common to also add the machine&#039;s hostname you just set (above) to the {{path|/etc/hosts}} file.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an IPv4 example:{{cat|/etc/hosts|...&lt;br /&gt;
192.168.1.150   shortname.domain.com&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
And here&#039;s an IPv6 example:{{cat|/etc/hosts|...&lt;br /&gt;
2001:470:ffff:ff::2   shortname.domain.com&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Configuring DNS ==&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;&#039;For users of IPv4 DHCP:&#039;&#039;&#039; Please note that {{path|/etc/resolv.conf}} will be completely overwritten with any nameservers provided by DHCP.&lt;br /&gt;
If DHCP does not provide any nameservers, then {{path|/etc/resolv.conf}} will still be overwritten, but will not contain any nameservers!}}&lt;br /&gt;
&lt;br /&gt;
For a static IP address and static nameservers, use one of the following examples.&lt;br /&gt;
&lt;br /&gt;
For IPv4 nameservers, edit your {{path|/etc/resolv.conf}} file to look like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
The following example uses [https://en.wikipedia.org/wiki/Google_Public_DNS Google&#039;s Public DNS servers].&lt;br /&gt;
{{cat|/etc/resolv.conf|nameserver 8.8.8.8&lt;br /&gt;
nameserver 8.8.4.4&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
For IPv6 nameservers, edit your {{path|/etc/resolv.conf}} file to look like this:&amp;lt;br /&amp;gt;&lt;br /&gt;
The following example uses [https://www.he.net/ Hurricane Electric&#039;s] public DNS server.&lt;br /&gt;
{{cat|/etc/resolv.conf|nameserver 2001:470:20::2}}&lt;br /&gt;
You can also use Hurricane Electric&#039;s public IPv4 DNS server:&lt;br /&gt;
{{cat|/etc/resolv.conf|nameserver 74.82.42.42}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|If you decide to use Hurricane Electric&#039;s nameserver, be aware that it is &#039;Google-whitelisted&#039;. What does this mean?  It allows you access to many of Google&#039;s services via IPv6. (Just don&#039;t add other, non-whitelisted, nameservers to {{path|/etc/resolv.conf}} — ironically, such as Google&#039;s Public DNS Servers.) Read [https://www.google.com/intl/en/ipv6/ here] for more information.}}&lt;br /&gt;
&lt;br /&gt;
== Interface configuration ==&lt;br /&gt;
{{Seealso|Wi-Fi}}&lt;br /&gt;
Manual interface configuration is explained in the following sections to meet non-trivial networking requirements. In the following configuration examples, the device name used is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt;. It can be substituted by appropriate device names like &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt; for wireless etc..&lt;br /&gt;
&lt;br /&gt;
=== Loopback configuration  ===&lt;br /&gt;
&lt;br /&gt;
To configure loopback, add the following to the file {{path|/etc/network/interfaces}}: {{cat|/etc/network/interfaces|auto lo&lt;br /&gt;
iface lo inet loopback}}&lt;br /&gt;
&lt;br /&gt;
The above works to set up the IPv4 loopback address (127.0.0.1), and the IPv6 loopback address (&amp;lt;code&amp;gt;::1&amp;lt;/code&amp;gt;) — if you enabled IPv6.&lt;br /&gt;
&lt;br /&gt;
{{Note| For [[#Busybox ifupdown|Busybox ifupdown]], loopback configuration must appear first in {{path|/etc/network/interfaces}} file to prevent networking issues.}}&lt;br /&gt;
&lt;br /&gt;
=== DHCP configuration ===&lt;br /&gt;
&lt;br /&gt;
A basic configuration for a desktop computer appears as follows:{{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0&lt;br /&gt;
    use dhcp}}&lt;br /&gt;
&lt;br /&gt;
Refer busybox DHCP client [[udhcpc]] page for additional configuration options. If {{pkg|dhcpcd}} is installed, with [[ifupdown-ng]], DHCPv6 will also be used as dhcpcd interacts with both DHCPv4 and DHCPv6 from the same process. &lt;br /&gt;
&lt;br /&gt;
==== IPv6 stateless autoconfiguration ====&lt;br /&gt;
&lt;br /&gt;
With IPv6, stateless auto-configuration is typically used to configure network interfaces. If you are not interested in using IPv4 at all, you can simply use the ipv6-ra executor to ensure that an interface is configured to accept IPv6 RA advertisements:{{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0&lt;br /&gt;
    use ipv6-ra}}&lt;br /&gt;
&lt;br /&gt;
=== Static address configuration ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the file {{path|/etc/network/interfaces}}: {{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0&lt;br /&gt;
    address 203.0.113.2/24&lt;br /&gt;
    gateway 203.0.113.1}}&lt;br /&gt;
&lt;br /&gt;
==== Multiple address ====&lt;br /&gt;
&lt;br /&gt;
{{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0&lt;br /&gt;
    address 203.0.113.2/24&lt;br /&gt;
    address 203.0.113.3/24&lt;br /&gt;
    address 203.0.113.4/24&lt;br /&gt;
    gateway 203.0.113.1}}&lt;br /&gt;
&lt;br /&gt;
====  Dual-stack configuration ====&lt;br /&gt;
&lt;br /&gt;
This example shows a dual-stack configuration. {{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0&lt;br /&gt;
    address 203.0.113.2/24&lt;br /&gt;
    address 203.0.113.3/24&lt;br /&gt;
    address 203.0.113.4/24&lt;br /&gt;
    gateway 203.0.113.1&lt;br /&gt;
&lt;br /&gt;
    address 2001:db8:1000:2::2/64&lt;br /&gt;
    address 2001:db8:1000:2::3/64&lt;br /&gt;
    address 2001:db8:1000:2::4/64&lt;br /&gt;
    gateway 2001:db8:1000:2::1}}&lt;br /&gt;
&lt;br /&gt;
== Networking service ==&lt;br /&gt;
{{Tip|If [[Wi-Fi]] is used, follow the instructions mentioned on those pages.}}&lt;br /&gt;
Changes made to {{path|/etc/network/interfaces}} related to ethernet can be activated by running: {{Cmd|# rc-service networking restart}}&lt;br /&gt;
To &#039;&#039;&#039;start&#039;&#039;&#039; (or &#039;&#039;&#039;restart&#039;&#039;&#039;) the networking service: {{Cmd|# rc-service networking --quiet start &amp;amp;}}&lt;br /&gt;
To add networking service so that it starts on boot: {{Cmd|# rc-update add networking boot}}&lt;br /&gt;
&lt;br /&gt;
== Advanced network configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Busybox ifupdown ===&lt;br /&gt;
&lt;br /&gt;
If the default [[ifupdown-ng]] is uninstalled, the [[Busybox]] ifupdown gets used. Busybox ifupdown syntax is slightly different from ifupdown-ng, but [[ifupdown-ng]] fully supports Busybox ifupdown syntax.&lt;br /&gt;
&lt;br /&gt;
The CIDR notation &#039;&#039;&#039;203.0.113.2/24 &#039;&#039;&#039; is not supported by BusyBox ifupdown, so for IP address use subnet mask notation i.e &#039;&#039;&#039;203.0.113.2/255.255.255.0&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The interface configuration file {{Path|/etc/network/interfaces}} for DHCP with Busybox ifupdown syntax appears as follows:&lt;br /&gt;
{{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp}}&lt;br /&gt;
For static IP address, use the word {{ic|static}} instead of {{ic|dhcp}} and provide ip address as shown:&lt;br /&gt;
{{cat|/etc/network/interfaces|...&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 203.0.113.2	&lt;br /&gt;
netmask 255.255.255.0}}&lt;br /&gt;
&lt;br /&gt;
=== Change network interface name ===&lt;br /&gt;
&lt;br /&gt;
To change interface names from default &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;, refer appropriate device manager pages i.e  [[Eudev#Predictable_network_interface_names|eudev]] or [[Mdev#Custom_network_interface_name|mdev]].&lt;br /&gt;
&lt;br /&gt;
Alternately, if [[ifupdown-ng]] is used, to set network interface name as {{ic|dmz}} for a MAC address {{ic|00:11:22:33:44:55}} add the following {{ic|pre-up}} command to your file {{Path|/etc/network/interfaces}} as follows:&lt;br /&gt;
{{Cat|/etc/network/interfaces|...&lt;br /&gt;
&amp;lt;nowiki&amp;gt;auto dmz&lt;br /&gt;
iface dmz inet dhcp&lt;br /&gt;
    pre-up nameif -s dmz 00:11:22:33:44:55&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Change MAC or hw address ===&lt;br /&gt;
&lt;br /&gt;
If [[ifupdown-ng]] is used, to set the MAC or hw address as {{ic|de:ad:be:ef:ca:fe}} for {{ic|wlan0}} interface, add the following {{ic|pre-up}} command to the relevant interface configuration stanza in the file {{Path|/etc/network/interfaces}} as follows:&lt;br /&gt;
{{Cat|/etc/network/interfaces|...&lt;br /&gt;
&amp;lt;nowiki&amp;gt;auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp&lt;br /&gt;
   pre-up ip link set $IFACE addr de:ad:be:ef:ca:fe&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Connectivity testing ===&lt;br /&gt;
&lt;br /&gt;
Test if networking is configured properly by attempting to ping out:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;$ ping www.google.com&lt;br /&gt;
PING www.l.google.com (74.125.47.103) 56(84) bytes of data.&lt;br /&gt;
64 bytes from yw-in-f103.1e100.net (74.125.47.103): icmp_seq=1 ttl=48 time=58.5 ms&lt;br /&gt;
64 bytes from yw-in-f103.1e100.net (74.125.47.103): icmp_seq=2 ttl=48 time=56.4 ms&lt;br /&gt;
64 bytes from yw-in-f103.1e100.net (74.125.47.103): icmp_seq=3 ttl=48 time=57.0 ms&lt;br /&gt;
64 bytes from yw-in-f103.1e100.net (74.125.47.103): icmp_seq=4 ttl=48 time=60.2 ms&lt;br /&gt;
^C&lt;br /&gt;
--- www.l.google.com ping statistics ---&lt;br /&gt;
4 packets transmitted, 4 received, 0% packet loss, time 3007ms&lt;br /&gt;
rtt min/avg/max/mdev = 56.411/58.069/60.256/1.501 ms&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
For an IPv6 traceroute run &amp;lt;code&amp;gt;traceroute6&amp;lt;/code&amp;gt;:&lt;br /&gt;
{{Cmd|$ traceroute6 ipv6.google.com&lt;br /&gt;
traceroute to ipv6.l.google.com (2001:4860:8009::67) from 2001:470:ffff:ff::2, 30 hops max, 16 byte packets&lt;br /&gt;
 1  2001:470:ffff:ff::1 (2001:470:ffff:ff::1)  3.49 ms  0.62 ms  0.607 ms&lt;br /&gt;
 2  *  *  *&lt;br /&gt;
 3  *  *  *&lt;br /&gt;
 4  pr61.iad07.net.google.com (2001:504:0:2:0:1:5169:1)  134.313 ms  95.342 ms  88.425 ms&lt;br /&gt;
 5  2001:4860::1:0:9ff (2001:4860::1:0:9ff)  100.759 ms  100.537 ms  89.907 ms&lt;br /&gt;
 6  2001:4860::1:0:5db (2001:4860::1:0:5db)  115.563 ms  102.946 ms  106.191 ms&lt;br /&gt;
 7  2001:4860::2:0:a7 (2001:4860::2:0:a7)  101.754 ms  100.475 ms  100.512 ms&lt;br /&gt;
 8  2001:4860:0:1::c3 (2001:4860:0:1::c3)  99.272 ms  111.989 ms  99.835 ms&lt;br /&gt;
 9  yw-in-x67.1e100.net (2001:4860:8009::67)  101.545 ms  109.675 ms  99.431 ms&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== iproute2 ===&lt;br /&gt;
&lt;br /&gt;
Install the {{pkg|iproute2}} package which provides the &#039;ss&#039; command which is an alternate to netstat.: {{Cmd|# apk add iproute2}}&lt;br /&gt;
&lt;br /&gt;
Show listening tcp ports:{{Cmd|$ ss -tl}}&lt;br /&gt;
Show listening tcp ports and associated processes:{{Cmd|$ ss -ptl}}&lt;br /&gt;
Show listening and established tcp connections:{{Cmd|$ ss -ta}}&lt;br /&gt;
Show socket usage summary:{{Cmd|$ ss -s}}&lt;br /&gt;
Show more options:{{Cmd|$ ss -h}}&lt;br /&gt;
&lt;br /&gt;
=== drill ===&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|drill}} (it will also install the &#039;ldns&#039; package) which is a superior replacement for nslookup and dig etc: {{Cmd|# apk add drill}}&lt;br /&gt;
&lt;br /&gt;
Then use it as you would for dig: {{Cmd|$ drill alpinelinux.org @8.8.8.8}}&lt;br /&gt;
To perform a reverse lookup (get a name from an IP) use the following syntax: {{Cmd|$ drill -x 8.8.8.8 @208.67.222.222}}&lt;br /&gt;
&lt;br /&gt;
=== Missing interface === &lt;br /&gt;
&lt;br /&gt;
To list your available network interfaces use the commands {{ic|ip link}} or {{ic|ip a}}. Refer to [[Wi-Fi#Troubleshooting|Wifi troubleshooting]] page for issues related to wireless interfaces. If nothing works, you may have to use an alternate interface (e.g. a usb to ethernet adapter).&lt;br /&gt;
&lt;br /&gt;
=== Connectivity failing / &amp;quot;ping: bad address&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
If pings fail, a possible reason may have been improper permissions or ownership of {{Path|/etc/resolv.conf}}, perhaps due to a backup being restored without these being set correctly.&lt;br /&gt;
Test for these:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls /etc/resolv.conf&lt;br /&gt;
-rw-r--r--    1 root  root    845 Oct 24 23:58 /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above output is appropriate: {{ic|-rw-r--r--}} permissions, with {{ic|root:root}} ownership.  Otherwise, one would need to reset whatever is required:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
doas chmod 644 /etc/resolv.conf&lt;br /&gt;
doas chown root:root /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although in many cases {{ic|-rw----r--}} may appear to work ({{ic|chmod 604}}), having &#039;&amp;lt;i&amp;gt;group read denied&amp;lt;/i&amp;gt;&#039; for this file could be insufficient in some environments e.g. for Docker, Nomad and container environments, etc.&lt;br /&gt;
&lt;br /&gt;
The file may have been made immutable/unwritable, in which case its immutability will have to be temporarily suspended in order to correct the permissions and/or ownership settings.  To test for immutability:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsattr /etc/resolv.conf&lt;br /&gt;
----i--------e- /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The output in such an installation demonstrates an &#039;&amp;lt;i&amp;gt;i&amp;lt;/i&amp;gt;&#039;, which confirms immutability.  In such cases:  &lt;br /&gt;
# Remove immutability temporarily with {{ic|doas chattr -i /etc/resolv.conf}} &lt;br /&gt;
# Reset permissions and/or ownership, as per the above&lt;br /&gt;
# Restore immutability:  {{ic|doas chattr +i /etc/resolv.conf}} &lt;br /&gt;
Regarding immutability, the aforementioned [[udhcpc]] page delves deeper on the matter of overwriting {{Path|resolv.conf}}.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
You may also wish to review the following network related articles:&lt;br /&gt;
* [[Ifupdown-ng|Ifupdown-ng]] Basic networking Device Manager in Alpine Linux&lt;br /&gt;
* [[NetworkManager]] - Alternate Front-end to Networking&lt;br /&gt;
* [[VLAN]]&lt;br /&gt;
* [https://github.com/ifupdown-ng/ifupdown-ng/blob/main/doc/interfaces-vxlan.scd vxlan]&lt;br /&gt;
* [[Bonding|Bonding setup]]&lt;br /&gt;
* [[Bridge|Network bridge setup]]&lt;br /&gt;
* [[udhcpc|udhcpc configuration]]&lt;br /&gt;
* [[Wifi#wpa_supplicant|wpa_supplicant]] - Default wifi daemon&lt;br /&gt;
* [[Iwd|iwd]] - An alternate wifi daemon&lt;br /&gt;
* [[Tutorials and Howtos#Firewall|List of Firewall software]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32315</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32315"/>
		<updated>2026-04-12T03:27:14Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Filesystem support */ link directly to overview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands core utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in the GNU core utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages (see below), so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The standard file pager &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; is not actually provided by {{pkg|coreutils}} or {{pkg|util-linux}}, but rather by the standalone package {{pkg|less}}.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Filesystem support ==&lt;br /&gt;
{{Main|Filesystems}}&lt;br /&gt;
&lt;br /&gt;
Alpine supports [[Filesystems#Overview|a variety of filesystems]]. Support (and tooling) for them may be had through their various packages: {{pkg|dosfstools}}, {{pkg|exfatprogs}}, {{pkg|zfs}}, etc...&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
&lt;br /&gt;
[[File management#Udisks|udisks]] and [[File management#GVfs|GVfs]] make managing (removable) disks much easier.&lt;br /&gt;
{{cmd|# apk add {{pkg|udisks2}} {{pkg|gvfs-fuse}}}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling codebases in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}} (providing &amp;lt;code&amp;gt;ld&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;readelf&amp;lt;/code&amp;gt;, etc...), {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}}, etc...&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux. It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|cmake}} may be desirable to have installed.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32314</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32314"/>
		<updated>2026-04-12T03:26:37Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Add section on filesystem support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands core utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in the GNU core utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages (see below), so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The standard file pager &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; is not actually provided by {{pkg|coreutils}} or {{pkg|util-linux}}, but rather by the standalone package {{pkg|less}}.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Filesystem support ==&lt;br /&gt;
{{Main|Filesystems}}&lt;br /&gt;
&lt;br /&gt;
Alpine supports [[Filesystems|a variety of filesystems]]. Support (and tooling) for them may be had through their various packages: {{pkg|dosfstools}}, {{pkg|exfatprogs}}, {{pkg|zfs}}, etc...&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
&lt;br /&gt;
[[File management#Udisks|udisks]] and [[File management#GVfs|GVfs]] make managing (removable) disks much easier.&lt;br /&gt;
{{cmd|# apk add {{pkg|udisks2}} {{pkg|gvfs-fuse}}}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling codebases in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}} (providing &amp;lt;code&amp;gt;ld&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;readelf&amp;lt;/code&amp;gt;, etc...), {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}}, etc...&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux. It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|cmake}} may be desirable to have installed.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32313</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32313"/>
		<updated>2026-04-12T03:25:26Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Disk management */ cleanup and mention gvfs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands core utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in the GNU core utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages (see below), so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The standard file pager &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; is not actually provided by {{pkg|coreutils}} or {{pkg|util-linux}}, but rather by the standalone package {{pkg|less}}.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
&lt;br /&gt;
[[File management#Udisks|udisks]] and [[File management#GVfs|GVfs]] make managing (removable) disks much easier.&lt;br /&gt;
{{cmd|# apk add {{pkg|udisks2}} {{pkg|gvfs-fuse}}}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling codebases in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}} (providing &amp;lt;code&amp;gt;ld&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;readelf&amp;lt;/code&amp;gt;, etc...), {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}}, etc...&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux. It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|cmake}} may be desirable to have installed.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Filesystems&amp;diff=32312</id>
		<title>Filesystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Filesystems&amp;diff=32312"/>
		<updated>2026-04-12T03:17:46Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Overview */ Add mention of ZFS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the Alpine Linux supported filesystems needed for various storage media. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the packages and tools related to various filesystems available along with the &#039;&#039;&#039;command&#039;&#039;&#039; to format.&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#333333; color:#ffffff; font-size: 1.2em; text-align:center;&amp;quot;&lt;br /&gt;
|width=&amp;quot;18%&amp;quot; | Tool &lt;br /&gt;
|width=&amp;quot;18%&amp;quot;| Filesystem&lt;br /&gt;
|width=&amp;quot;15%&amp;quot;|Formatting command &lt;br /&gt;
|Brief Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|btrfs-progs}}||[[Btrfs]]||mkfs.btrfs||Combines copy-on-write and volume management, similar to ZFS.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|dosfstools}} ||FAT12/FAT16/FAT32||mkfs.vfat||Widely-used DOS filesystems. Also used for [[UEFI|EFI]] partitions.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|e2fsprogs}} ||ext2/ext3/ext4||mkfs.ext4||Journaling filesystems. ext4 is the current default on Linux.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|exfatprogs}} ||exfat||mkfs.exfat||Commonly used on USB flash drives and SD cards.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|f2fs-tools}} ||[[F2FS]]||mkfs.f2fs||&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|hfsprogs}} ||HFS/HFS+||mkfs.hfsplus||Used in older Apple/Mac products before APFS.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|jfsutils}} ||JFS||mkfs.jfs||&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|ntfs-3g-progs}} ||NTFS ||mkfs.ntfs||Full-featured, Microsoft/Windows FUSE driver.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|squashfs-tools}} ||[[SquashFS]]||mksquashfs||Compressed read-only file system.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|xfsprogs}} ||XFS||mkfs.xfs||&lt;br /&gt;
|}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additionally, Alpine has [[ZFS|excellent support]] for [https://en.wikipedia.org/wiki/ZFS ZFS], a highly robust copy-on-write filesystem / volume manager.&lt;br /&gt;
&lt;br /&gt;
== Filesystem labels == &lt;br /&gt;
&lt;br /&gt;
Most of the commonly used filesystems store the &#039;&#039;&#039;volume label&#039;&#039;&#039; or &#039;&#039;&#039;filesystem label&#039;&#039;&#039; in their metadata/superblock. &lt;br /&gt;
&lt;br /&gt;
Labels can be set during filesystem creation or at a later time. The below table lists the commands for both. The commands are non-destructive as long as the filesystem is &#039;&#039;&#039;Unmounted&#039;&#039;&#039;, except for [[btrfs]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#333333; color:#ffffff; font-size: 1.2em; text-align:center;&amp;quot;&lt;br /&gt;
|width=&amp;quot;8%&amp;quot; | Filesystem &lt;br /&gt;
|width=&amp;quot;18%&amp;quot;| Tool&lt;br /&gt;
|width=&amp;quot;25%&amp;quot;| Filesystem creation&lt;br /&gt;
|width=&amp;quot;35%&amp;quot;| Existing filesystem&lt;br /&gt;
|Mounted/Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|[[btrfs]]||{{Pkg|btrfs-progs}}||mkfs.btrfs -L &amp;quot;label&amp;quot; /dev/sdXY||btrfs filesystem label /mount/point &amp;quot;newlabel&amp;quot;||Mounted&lt;br /&gt;
|-&lt;br /&gt;
|FAT32||{{Pkg|dosfstools}} ||mkfs.fat -n &amp;quot;LABEL&amp;quot; /dev/sdXY ||fatlabel /dev/sdXY &amp;quot;NEWLABEL&amp;quot;||Unmounted &lt;br /&gt;
|-&lt;br /&gt;
|ext4||{{Pkg|e2fsprogs-extra}} ||mkfs.ext4 -L &amp;quot;label&amp;quot; /dev/sdXY||tune2fs -L &amp;quot;newlabel&amp;quot; /dev/sdXY||Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|NTFS ||{{Pkg|ntfs-3g-progs}} ||mkfs.ntfs -L &amp;quot;label&amp;quot; /dev/sdXY||ntfslabel /dev/sdXY &amp;quot;newlabel&amp;quot;||Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|XFS||{{Pkg|xfsprogs}} ||mkfs.xfs -L &amp;quot;label&amp;quot; /dev/sdXY||xfs_admin -L &amp;quot;newlabel&amp;quot; /dev/sdXY||Unmounted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_up_disks_manually#Manual_partitioning|Manual partitioning]]&lt;br /&gt;
* [https://www.nico.schottelius.org/blog/2024-10-10-how-to-enable-encrypted-swap-in-alpine-linux/ How to enable encrypted swap in Alpine Linux]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Filesystems]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Filesystems&amp;diff=32311</id>
		<title>Filesystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Filesystems&amp;diff=32311"/>
		<updated>2026-04-12T03:08:46Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Remove empty Filesystem tools section and add information to filesystem tools table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the Alpine Linux supported filesystems needed for various storage media. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The following table lists the packages and tools related to various filesystems available along with the &#039;&#039;&#039;command&#039;&#039;&#039; to format.&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#333333; color:#ffffff; font-size: 1.2em; text-align:center;&amp;quot;&lt;br /&gt;
|width=&amp;quot;18%&amp;quot; | Tool &lt;br /&gt;
|width=&amp;quot;18%&amp;quot;| Filesystem&lt;br /&gt;
|width=&amp;quot;15%&amp;quot;|Formatting command &lt;br /&gt;
|Brief Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|btrfs-progs}}||[[Btrfs]]||mkfs.btrfs||Combines copy-on-write and volume management, similar to ZFS.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|dosfstools}} ||FAT12/FAT16/FAT32||mkfs.vfat||Widely-used DOS filesystems. Also used for [[UEFI|EFI]] partitions.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|e2fsprogs}} ||ext2/ext3/ext4||mkfs.ext4||Journaling filesystems. ext4 is the current default on Linux.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|exfatprogs}} ||exfat||mkfs.exfat||Commonly used on USB flash drives and SD cards.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|f2fs-tools}} ||[[F2FS]]||mkfs.f2fs||&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|hfsprogs}} ||HFS/HFS+||mkfs.hfsplus||Used in older Apple/Mac products before APFS.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|jfsutils}} ||JFS||mkfs.jfs||&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|ntfs-3g-progs}} ||NTFS ||mkfs.ntfs||Full-featured, Microsoft/Windows FUSE driver.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|squashfs-tools}} ||[[SquashFS]]||mksquashfs||Compressed read-only file system.&lt;br /&gt;
|-&lt;br /&gt;
|{{Pkg|xfsprogs}} ||XFS||mkfs.xfs||&lt;br /&gt;
|}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Filesystem labels == &lt;br /&gt;
&lt;br /&gt;
Most of the commonly used filesystems store the &#039;&#039;&#039;volume label&#039;&#039;&#039; or &#039;&#039;&#039;filesystem label&#039;&#039;&#039; in their metadata/superblock. &lt;br /&gt;
&lt;br /&gt;
Labels can be set during filesystem creation or at a later time. The below table lists the commands for both. The commands are non-destructive as long as the filesystem is &#039;&#039;&#039;Unmounted&#039;&#039;&#039;, except for [[btrfs]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#333333; color:#ffffff; font-size: 1.2em; text-align:center;&amp;quot;&lt;br /&gt;
|width=&amp;quot;8%&amp;quot; | Filesystem &lt;br /&gt;
|width=&amp;quot;18%&amp;quot;| Tool&lt;br /&gt;
|width=&amp;quot;25%&amp;quot;| Filesystem creation&lt;br /&gt;
|width=&amp;quot;35%&amp;quot;| Existing filesystem&lt;br /&gt;
|Mounted/Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|[[btrfs]]||{{Pkg|btrfs-progs}}||mkfs.btrfs -L &amp;quot;label&amp;quot; /dev/sdXY||btrfs filesystem label /mount/point &amp;quot;newlabel&amp;quot;||Mounted&lt;br /&gt;
|-&lt;br /&gt;
|FAT32||{{Pkg|dosfstools}} ||mkfs.fat -n &amp;quot;LABEL&amp;quot; /dev/sdXY ||fatlabel /dev/sdXY &amp;quot;NEWLABEL&amp;quot;||Unmounted &lt;br /&gt;
|-&lt;br /&gt;
|ext4||{{Pkg|e2fsprogs-extra}} ||mkfs.ext4 -L &amp;quot;label&amp;quot; /dev/sdXY||tune2fs -L &amp;quot;newlabel&amp;quot; /dev/sdXY||Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|NTFS ||{{Pkg|ntfs-3g-progs}} ||mkfs.ntfs -L &amp;quot;label&amp;quot; /dev/sdXY||ntfslabel /dev/sdXY &amp;quot;newlabel&amp;quot;||Unmounted&lt;br /&gt;
|-&lt;br /&gt;
|XFS||{{Pkg|xfsprogs}} ||mkfs.xfs -L &amp;quot;label&amp;quot; /dev/sdXY||xfs_admin -L &amp;quot;newlabel&amp;quot; /dev/sdXY||Unmounted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Setting_up_disks_manually#Manual_partitioning|Manual partitioning]]&lt;br /&gt;
* [https://www.nico.schottelius.org/blog/2024-10-10-how-to-enable-encrypted-swap-in-alpine-linux/ How to enable encrypted swap in Alpine Linux]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:Filesystems]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32310</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32310"/>
		<updated>2026-04-12T02:45:28Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Development environment */ Note some examples of what binutils provides&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands core utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in the GNU core utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages (see below), so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The standard file pager &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; is not actually provided by {{pkg|coreutils}} or {{pkg|util-linux}}, but rather by the standalone package {{pkg|less}}.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling codebases in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}} (providing &amp;lt;code&amp;gt;ld&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;readelf&amp;lt;/code&amp;gt;, etc...), {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}}, etc...&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux. It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|cmake}} may be desirable to have installed.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32309</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32309"/>
		<updated>2026-04-12T02:36:41Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Stick Subpackages section below the Linux utilities section (which references it) + minor wording changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands core utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in the GNU core utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages (see below), so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The standard file pager &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; is not actually provided by {{pkg|coreutils}} or {{pkg|util-linux}}, but rather by the standalone package {{pkg|less}}.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=32308</id>
		<title>Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=32308"/>
		<updated>2026-04-12T02:21:08Z</updated>

		<summary type="html">&lt;p&gt;Apropos: link to nonexistent header for aesthetics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux has two wireless daemons ([[#wpa_supplicant|wpa_supplicant]] and [[iwd]]) and both are fully supported. This page describes how to set up a wireless network connection using the default daemon, {{Pkg|wpa_supplicant}}. {{Note|Do not use both wireless daemons ([[#wpa_supplicant|wpa_supplicant]] and [[iwd]]) simultaneously, as it leads to conflicts.}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
A working wireless [[#Device driver|device driver]]. Use the commands {{ic|ip link}} or {{ic|ip a}} to list your available network interfaces {{Path|wlan0}}, if you don&#039;t see any, refer to [[#Troubleshooting|Troubleshooting]] section.&lt;br /&gt;
&lt;br /&gt;
== Setup-interfaces ==&lt;br /&gt;
&lt;br /&gt;
The [[Configure_Networking#setup-interfaces|setup-interfaces]] script automates the installation and configuration of&lt;br /&gt;
&amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt; daemon to use Wi-Fi. [[NetworkManager]] can then be used to manage your Wi-Fi  using various gui/tui tools.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
&lt;br /&gt;
To get started install {{Pkg|wpa_supplicant}} package: {{Cmd|# apk add wpa_supplicant}}&lt;br /&gt;
&lt;br /&gt;
Use this command to add your Wi-Fi network to wpa_supplicant: {{Cmd|# wpa_passphrase &#039;ExampleWifiSSID&#039; &#039;ExampleWifiPassword&#039; &amp;gt; /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&#039;&#039;(Access point not broadcasting its SSID requires additional line &amp;lt;code&amp;gt;scan_ssid=1&amp;lt;/code&amp;gt; in the file {{Path|/etc/wpa_supplicant/wpa_supplicant.conf}})&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|the Wi-Fi SSID and password are case sensitive and the single quote before and after the SSID and password need to be there}}&lt;br /&gt;
&lt;br /&gt;
Start wpa_supplicant in the foreground to check if wireless connection succeeds.{{Cmd|# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional security precaution:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default {{Pkg|wpa_supplicant}} will store your Wi-Fi password in plain text:{{Cat|/etc/wpa_supplicant/wpa_supplicant.conf|&amp;lt;nowiki&amp;gt;network={&lt;br /&gt;
    ssid=&amp;quot;&amp;lt;YourSSIDShouldBeHere&amp;gt;&amp;quot;&lt;br /&gt;
        #psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&lt;br /&gt;
    psk=&amp;lt;RandomLettersAndNumbersShouldBeHere&amp;gt;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
If you don&#039;t want your password stored in plain text, delete the line with &amp;lt;code&amp;gt;#psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; on it.&lt;br /&gt;
&lt;br /&gt;
If all is well, run it as a daemon in the background by setting the {{Path|-B}} option. {{Cmd|# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
Configure the interface with an IP address.{{Cmd|# udhcpc -i wlan0}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: the interface should have a {{Path|inet}} address. {{Cmd|$ ip addr show wlan0}}&lt;br /&gt;
&lt;br /&gt;
Add a entry for the desired interface (e.g. &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;) in the file as follows:{{Cat|/etc/network/interfaces|auto lo&lt;br /&gt;
auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Don&#039;t remove or comment out the &#039;&#039;&#039;auto lo&#039;&#039;&#039; entry}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: Make sure {{Path|/etc/wpa_supplicant/wpa_supplicant.conf}} is the correct configuration for the wireless access point you want to connect to.&lt;br /&gt;
&lt;br /&gt;
Bring the interface down. {{Cmd|# ip link set wlan0 down}}&lt;br /&gt;
&lt;br /&gt;
Manually restart (or &#039;&#039;&#039;start&#039;&#039;&#039;) &#039;&#039;&#039;networking&#039;&#039;&#039;.{{Cmd|# rc-service networking --quiet restart &amp;amp;}}&lt;br /&gt;
&lt;br /&gt;
Perform [[Configure_Networking#Connectivity_testing|sanity checks]]. For issues related to name resolution, refer [[Configure_Networking#Configuring_DNS|Networking]] section.&lt;br /&gt;
&lt;br /&gt;
=== Service configuration ===&lt;br /&gt;
{{Seealso|NetworkManager}}&lt;br /&gt;
&lt;br /&gt;
Proceed to configure wpa_supplicant service to start automatically on boot, if networking works properly: {{Cmd|# rc-update add wpa_supplicant boot}}&lt;br /&gt;
Also ensure that &#039;&#039;&#039;networking&#039;&#039;&#039; is set to automatically start on boot: {{Cmd|# rc-update add networking boot}}&lt;br /&gt;
&lt;br /&gt;
Manage wpa_supplicant service using the standard &#039;&#039;&#039;start&#039;&#039;&#039;, &#039;&#039;&#039;stop&#039;&#039;&#039; and &#039;&#039;&#039;restart&#039;&#039;&#039; options. For eg: to start wpa_supplicant service: {{Cmd|# rc-service wpa_supplicant start}}&lt;br /&gt;
&lt;br /&gt;
=== Launching udhcpc through wpa_cli actions ===&lt;br /&gt;
&lt;br /&gt;
With the above configuration, udhcpc will only run once at boot. If the Wifi isn&#039;t available then, or the network changes after booting, udhcpc needs to be notified. You can automatically notify udhcpc of network changes by using a wpa_cli action file, such as the one installed by default at {{Path|/etc/wpa_supplicant/wpa_cli.sh}}.&lt;br /&gt;
&lt;br /&gt;
To manually start a wpa_cli daemon with an action file, use the `-a` option: {{Cmd|# wpa_cli -a /etc/wpa_supplicant/wpa_cli.sh}}&lt;br /&gt;
&lt;br /&gt;
To do this automatically, use the `wpa_cli` service included in {{Pkg|wpa_supplicant-openrc}}: {{Cat|/etc/conf.d/wpa_cli|&amp;lt;nowiki&amp;gt;WPACLI_OPTS=&amp;quot;-a /etc/wpa_supplicant/wpa_cli.sh&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Add the service to start at boot: {{Cmd|# rc-update add wpa_cli boot}}&lt;br /&gt;
&lt;br /&gt;
== Device driver ==&lt;br /&gt;
&lt;br /&gt;
Wireless networking devices require device drivers and some chipsets also require firmware, in addition to a corresponding driver. In most cases the packaged [[Kernels#Firmware|firmware]] should get you the required drivers. The following section provides more information for various chipsets like [[#Broadcom_Wi-Fi_Chipset_Users|&#039;&#039;&#039;Broadcom&#039;&#039;&#039;]] and some of these out-of-tree kernel drivers use [[Alpine kernel module support]].&lt;br /&gt;
&lt;br /&gt;
=== Intel wireless devices ===&lt;br /&gt;
&lt;br /&gt;
Intel wireless users seeking a minimal set of firmware packages need to ensure that the following firmware packages are installed:  the {{Pkg|linux-firmware-none}} meta package and {{Pkg|linux-firmware-other}}.  Additionally, the {{ic|iwlwifi}} command is provided by a further package beginning from Alpine Linux v3.23 and Edge: such installations will [https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/65712 also require] {{Pkg|linux-firmware-intel}}, which now supplies {{Path|iwlwifi*.ucode.zst}}. Earlier supported versions of Alpine Linux had the {{ic|iwlwifi}} command bundled in {{Pkg|linux-firmware-other}}.{{Pill||text=v3.23.x}}&lt;br /&gt;
&lt;br /&gt;
=== Broadcom Wi-Fi Chipset ===&lt;br /&gt;
&lt;br /&gt;
The Broadcom chipset is quite popular among older computers. The b43 driver is included in the default kernel packages. However, you might need to compile the firmware manually for this chipset as it is not included in {{pkg|linux-firmware}} for some cards. To check what broadcom chip you have using lspci: {{Cmd|$ lspci -nn -d 14e4:}}&lt;br /&gt;
&lt;br /&gt;
Check what driver you need on the [https://wireless.docs.kernel.org/en/latest/en/users/drivers/b43.html#list-of-hardware b43 compatibility page].&lt;br /&gt;
&lt;br /&gt;
====B43==== &lt;br /&gt;
&lt;br /&gt;
Download firmware cutter. {{Cmd|$ apk add b43-fwcutter}}&lt;br /&gt;
&lt;br /&gt;
Now we have everything to download the proprietary driver and extract the firmware from it: {{Cmd|&amp;lt;nowiki&amp;gt;# export FIRMWARE_INSTALL_DIR=&amp;quot;/lib/firmware&amp;quot;&lt;br /&gt;
$ wget https://mirror2.openwrt.org/sources/broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
$ tar xjf broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
$ b43-fwcutter -w &amp;quot;$FIRMWARE_INSTALL_DIR&amp;quot; broadcom-wl-5.100.138/linux/wl_apsta.o&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
More information can be found [https://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#Other_distributions_not_mentioned_above here].&lt;br /&gt;
&lt;br /&gt;
Now you need to use modprobe so the device will show up: {{Cmd|# modprobe b43}}&lt;br /&gt;
&lt;br /&gt;
Reboot and you have a working b43 driver. Now continue with the normal instructions.&lt;br /&gt;
&lt;br /&gt;
==== wl ====&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;wl&#039;&#039;&#039; chipset, you can download the APKBUILD from [https://codeberg.org/NeYurii/broadcom-wl here]. The site has necessary instructions and the it  uses [[Alpine kernel module support]] for automatic building and updating driver for new kernel versions.&lt;br /&gt;
&lt;br /&gt;
Commonly when building the APK with these instructions, you will get a &amp;quot;Permission denied&amp;quot; error for a specific line in the APKBUILD.&lt;br /&gt;
&lt;br /&gt;
To fix this, edit the APKBUILD by changing the line: {{Cmd|ln -s /sys/kernel/btf/vmlinux /usr/src/linux-headers-&amp;quot;$(uname -r)&amp;quot;/}}&lt;br /&gt;
&lt;br /&gt;
to: {{Cmd|doas ln -s /sys/kernel/btf/vmlinux /usr/src/linux-headers-&amp;quot;$(uname -r)&amp;quot;/}}&lt;br /&gt;
&lt;br /&gt;
After that, it should build with no problems.&lt;br /&gt;
&lt;br /&gt;
Alternately, install the software to build a driver: {{Cmd|apk add git alpine-sdk linux-headers linux-lts-dev}}&lt;br /&gt;
&lt;br /&gt;
Then install the driver build repo (this is archived, however it&#039;s legacy so that doesn&#039;t matter): {{Cmd|git clone https://github.com/antoineco/broadcom-wl&lt;br /&gt;
cd broadcom-wl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then follow the build instructions listed in the git repo: {{Cmd|make&lt;br /&gt;
doas make install&lt;br /&gt;
doas depmod -A&lt;br /&gt;
doas modprobe wl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Reboot and you have a working wl driver. Now continue with the normal instructions.&lt;br /&gt;
&lt;br /&gt;
=== Realtek wireless devices ===&lt;br /&gt;
&lt;br /&gt;
A number of out-of-tree kernel drivers for &#039;&#039;&#039;Realtek chipset&#039;&#039;&#039; are packaged and found here &#039;&#039;&#039;{{pkg|rtl*src*}}&#039;&#039;&#039;.  These drivers can be installed using [[Alpine kernel module support]].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
In most cases the packaged [[Kernels#Firmware|firmware]] should get you the required drivers.  To list your available network interfaces use the commands: {{Cmd|$ ip link}} or {{Cmd|$ ip a}} &lt;br /&gt;
&lt;br /&gt;
If the above command shows {{Path|wlan0}} interface, proceed to bring it up using the command: {{Codeline|# ip link set wlan0 up}}.  &#039;&#039;&#039;If no network interface is displayed, you probably need to load and/or install a [[#Device driver|device driver]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== checking network cards ===&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ cat /proc/net/dev }} lists the network interfaces that are detected. If the expected interfaces are not available, check what network hardware chip you have using builtin {{ic|lsusb}} command. If the output lacks sufficient information, install additional packages referred in [[How to get regular stuff working#Hardware_Management| hardware management]] to use below commands:&lt;br /&gt;
{{Cmd|$ lspci -nn }} &lt;br /&gt;
{{Cmd|$ lsusb}} &lt;br /&gt;
&lt;br /&gt;
Check what [[#Device driver|device driver]] the card uses and modprobe it. Check that the card is in master mode.&lt;br /&gt;
&lt;br /&gt;
=== Check dmesg ===&lt;br /&gt;
&lt;br /&gt;
Run dmesg and check for errors related to the wireless interface. Usually, dmesg gives maximum information related to network and all other hardware.&lt;br /&gt;
{{Cmd|# dmesg}}&lt;br /&gt;
&lt;br /&gt;
=== Rfkill ===&lt;br /&gt;
&lt;br /&gt;
An error message &amp;lt;code&amp;gt;ioctl 0x8914 failed: No error information&amp;lt;/code&amp;gt;, is the &amp;lt;code&amp;gt;busybox ip&amp;lt;/code&amp;gt;&#039;s way of saying your wireless radio is rfkilled, which means the wireless card is blocked by kernel. This can be changed using rfkill. To show the current status of your Wi-Fi: &lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; rfkill list&lt;br /&gt;
0: phy0: wlan&lt;br /&gt;
    Soft blocked: no&lt;br /&gt;
    Hard blocked: no&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the card is hard-blocked, use the hardware button or switch to unblock it. If the card is not hard-blocked but soft-blocked, use the following command: {{Cmd|# rfkill unblock wifi}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Configure_Networking| Networking in Alpine Linux]]&lt;br /&gt;
* [[Iwd|iwd]] - An alternate to wpa_supplicant&lt;br /&gt;
* [[NetworkManager]] - Front-end to Networking&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/WiFi PostmarketOS Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Network_configuration/Wireless Archwiki]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Wi-Fi Gentoo Wiki]&lt;br /&gt;
* [[Alpine kernel module support]] - A fully automated solution for building kernel modules&lt;br /&gt;
* [https://unix.stackexchange.com/questions/606073/how-to-build-kernel-modules-in-alpine-3-12 Build kernel modules manually]&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=32307</id>
		<title>Wi-Fi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Wi-Fi&amp;diff=32307"/>
		<updated>2026-04-12T02:18:25Z</updated>

		<summary type="html">&lt;p&gt;Apropos: minor grammar tweaks, some rewording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux has two wireless daemons ([[Wi-Fi|wpa_supplicant]] and [[iwd]]) and both are fully supported. This page describes how to set up a wireless network connection using the default daemon, {{Pkg|wpa_supplicant}}. {{Note|Do not use both wireless daemons ([[Wi-Fi|wpa_supplicant]] and [[iwd]]) simultaneously, as it leads to conflicts.}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
A working wireless [[#Device driver|device driver]]. Use the commands {{ic|ip link}} or {{ic|ip a}} to list your available network interfaces {{Path|wlan0}}, if you don&#039;t see any, refer to [[#Troubleshooting|Troubleshooting]] section.&lt;br /&gt;
&lt;br /&gt;
== Setup-interfaces ==&lt;br /&gt;
&lt;br /&gt;
The [[Configure_Networking#setup-interfaces|setup-interfaces]] script automates the installation and configuration of&lt;br /&gt;
&amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt; daemon to use Wi-Fi. [[NetworkManager]] can then be used to manage your Wi-Fi  using various gui/tui tools.&lt;br /&gt;
&lt;br /&gt;
== Manual configuration ==&lt;br /&gt;
&lt;br /&gt;
To get started install {{Pkg|wpa_supplicant}} package: {{Cmd|# apk add wpa_supplicant}}&lt;br /&gt;
&lt;br /&gt;
Use this command to add your Wi-Fi network to wpa_supplicant: {{Cmd|# wpa_passphrase &#039;ExampleWifiSSID&#039; &#039;ExampleWifiPassword&#039; &amp;gt; /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&#039;&#039;(Access point not broadcasting its SSID requires additional line &amp;lt;code&amp;gt;scan_ssid=1&amp;lt;/code&amp;gt; in the file {{Path|/etc/wpa_supplicant/wpa_supplicant.conf}})&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|the Wi-Fi SSID and password are case sensitive and the single quote before and after the SSID and password need to be there}}&lt;br /&gt;
&lt;br /&gt;
Start wpa_supplicant in the foreground to check if wireless connection succeeds.{{Cmd|# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional security precaution:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default {{Pkg|wpa_supplicant}} will store your Wi-Fi password in plain text:{{Cat|/etc/wpa_supplicant/wpa_supplicant.conf|&amp;lt;nowiki&amp;gt;network={&lt;br /&gt;
    ssid=&amp;quot;&amp;lt;YourSSIDShouldBeHere&amp;gt;&amp;quot;&lt;br /&gt;
        #psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&lt;br /&gt;
    psk=&amp;lt;RandomLettersAndNumbersShouldBeHere&amp;gt;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
If you don&#039;t want your password stored in plain text, delete the line with &amp;lt;code&amp;gt;#psk=&amp;quot;&amp;lt;YourPasswordShouldBeHereInPlainText&amp;gt;&amp;quot;&amp;lt;/code&amp;gt; on it.&lt;br /&gt;
&lt;br /&gt;
If all is well, run it as a daemon in the background by setting the {{Path|-B}} option. {{Cmd|# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf}}&lt;br /&gt;
&lt;br /&gt;
Configure the interface with an IP address.{{Cmd|# udhcpc -i wlan0}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: the interface should have a {{Path|inet}} address. {{Cmd|$ ip addr show wlan0}}&lt;br /&gt;
&lt;br /&gt;
Add a entry for the desired interface (e.g. &amp;lt;code&amp;gt;wlan0&amp;lt;/code&amp;gt;) in the file as follows:{{Cat|/etc/network/interfaces|auto lo&lt;br /&gt;
auto wlan0&lt;br /&gt;
iface wlan0 inet dhcp}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|Don&#039;t remove or comment out the &#039;&#039;&#039;auto lo&#039;&#039;&#039; entry}}&lt;br /&gt;
&lt;br /&gt;
Sanity check: Make sure {{Path|/etc/wpa_supplicant/wpa_supplicant.conf}} is the correct configuration for the wireless access point you want to connect to.&lt;br /&gt;
&lt;br /&gt;
Bring the interface down. {{Cmd|# ip link set wlan0 down}}&lt;br /&gt;
&lt;br /&gt;
Manually restart (or &#039;&#039;&#039;start&#039;&#039;&#039;) &#039;&#039;&#039;networking&#039;&#039;&#039;.{{Cmd|# rc-service networking --quiet restart &amp;amp;}}&lt;br /&gt;
&lt;br /&gt;
Perform [[Configure_Networking#Connectivity_testing|sanity checks]]. For issues related to name resolution, refer [[Configure_Networking#Configuring_DNS|Networking]] section.&lt;br /&gt;
&lt;br /&gt;
=== Service configuration ===&lt;br /&gt;
{{Seealso|NetworkManager}}&lt;br /&gt;
&lt;br /&gt;
Proceed to configure wpa_supplicant service to start automatically on boot, if networking works properly: {{Cmd|# rc-update add wpa_supplicant boot}}&lt;br /&gt;
Also ensure that &#039;&#039;&#039;networking&#039;&#039;&#039; is set to automatically start on boot: {{Cmd|# rc-update add networking boot}}&lt;br /&gt;
&lt;br /&gt;
Manage wpa_supplicant service using the standard &#039;&#039;&#039;start&#039;&#039;&#039;, &#039;&#039;&#039;stop&#039;&#039;&#039; and &#039;&#039;&#039;restart&#039;&#039;&#039; options. For eg: to start wpa_supplicant service: {{Cmd|# rc-service wpa_supplicant start}}&lt;br /&gt;
&lt;br /&gt;
=== Launching udhcpc through wpa_cli actions ===&lt;br /&gt;
&lt;br /&gt;
With the above configuration, udhcpc will only run once at boot. If the Wifi isn&#039;t available then, or the network changes after booting, udhcpc needs to be notified. You can automatically notify udhcpc of network changes by using a wpa_cli action file, such as the one installed by default at {{Path|/etc/wpa_supplicant/wpa_cli.sh}}.&lt;br /&gt;
&lt;br /&gt;
To manually start a wpa_cli daemon with an action file, use the `-a` option: {{Cmd|# wpa_cli -a /etc/wpa_supplicant/wpa_cli.sh}}&lt;br /&gt;
&lt;br /&gt;
To do this automatically, use the `wpa_cli` service included in {{Pkg|wpa_supplicant-openrc}}: {{Cat|/etc/conf.d/wpa_cli|&amp;lt;nowiki&amp;gt;WPACLI_OPTS=&amp;quot;-a /etc/wpa_supplicant/wpa_cli.sh&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Add the service to start at boot: {{Cmd|# rc-update add wpa_cli boot}}&lt;br /&gt;
&lt;br /&gt;
== Device driver ==&lt;br /&gt;
&lt;br /&gt;
Wireless networking devices require device drivers and some chipsets also require firmware, in addition to a corresponding driver. In most cases the packaged [[Kernels#Firmware|firmware]] should get you the required drivers. The following section provides more information for various chipsets like [[#Broadcom_Wi-Fi_Chipset_Users|&#039;&#039;&#039;Broadcom&#039;&#039;&#039;]] and some of these out-of-tree kernel drivers use [[Alpine kernel module support]].&lt;br /&gt;
&lt;br /&gt;
=== Intel wireless devices ===&lt;br /&gt;
&lt;br /&gt;
Intel wireless users seeking a minimal set of firmware packages need to ensure that the following firmware packages are installed:  the {{Pkg|linux-firmware-none}} meta package and {{Pkg|linux-firmware-other}}.  Additionally, the {{ic|iwlwifi}} command is provided by a further package beginning from Alpine Linux v3.23 and Edge: such installations will [https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/65712 also require] {{Pkg|linux-firmware-intel}}, which now supplies {{Path|iwlwifi*.ucode.zst}}. Earlier supported versions of Alpine Linux had the {{ic|iwlwifi}} command bundled in {{Pkg|linux-firmware-other}}.{{Pill||text=v3.23.x}}&lt;br /&gt;
&lt;br /&gt;
=== Broadcom Wi-Fi Chipset ===&lt;br /&gt;
&lt;br /&gt;
The Broadcom chipset is quite popular among older computers. The b43 driver is included in the default kernel packages. However, you might need to compile the firmware manually for this chipset as it is not included in {{pkg|linux-firmware}} for some cards. To check what broadcom chip you have using lspci: {{Cmd|$ lspci -nn -d 14e4:}}&lt;br /&gt;
&lt;br /&gt;
Check what driver you need on the [https://wireless.docs.kernel.org/en/latest/en/users/drivers/b43.html#list-of-hardware b43 compatibility page].&lt;br /&gt;
&lt;br /&gt;
====B43==== &lt;br /&gt;
&lt;br /&gt;
Download firmware cutter. {{Cmd|$ apk add b43-fwcutter}}&lt;br /&gt;
&lt;br /&gt;
Now we have everything to download the proprietary driver and extract the firmware from it: {{Cmd|&amp;lt;nowiki&amp;gt;# export FIRMWARE_INSTALL_DIR=&amp;quot;/lib/firmware&amp;quot;&lt;br /&gt;
$ wget https://mirror2.openwrt.org/sources/broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
$ tar xjf broadcom-wl-5.100.138.tar.bz2&lt;br /&gt;
$ b43-fwcutter -w &amp;quot;$FIRMWARE_INSTALL_DIR&amp;quot; broadcom-wl-5.100.138/linux/wl_apsta.o&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
More information can be found [https://linuxwireless.sipsolutions.net/en/users/Drivers/b43/#Other_distributions_not_mentioned_above here].&lt;br /&gt;
&lt;br /&gt;
Now you need to use modprobe so the device will show up: {{Cmd|# modprobe b43}}&lt;br /&gt;
&lt;br /&gt;
Reboot and you have a working b43 driver. Now continue with the normal instructions.&lt;br /&gt;
&lt;br /&gt;
==== wl ====&lt;br /&gt;
&lt;br /&gt;
For &#039;&#039;&#039;wl&#039;&#039;&#039; chipset, you can download the APKBUILD from [https://codeberg.org/NeYurii/broadcom-wl here]. The site has necessary instructions and the it  uses [[Alpine kernel module support]] for automatic building and updating driver for new kernel versions.&lt;br /&gt;
&lt;br /&gt;
Commonly when building the APK with these instructions, you will get a &amp;quot;Permission denied&amp;quot; error for a specific line in the APKBUILD.&lt;br /&gt;
&lt;br /&gt;
To fix this, edit the APKBUILD by changing the line: {{Cmd|ln -s /sys/kernel/btf/vmlinux /usr/src/linux-headers-&amp;quot;$(uname -r)&amp;quot;/}}&lt;br /&gt;
&lt;br /&gt;
to: {{Cmd|doas ln -s /sys/kernel/btf/vmlinux /usr/src/linux-headers-&amp;quot;$(uname -r)&amp;quot;/}}&lt;br /&gt;
&lt;br /&gt;
After that, it should build with no problems.&lt;br /&gt;
&lt;br /&gt;
Alternately, install the software to build a driver: {{Cmd|apk add git alpine-sdk linux-headers linux-lts-dev}}&lt;br /&gt;
&lt;br /&gt;
Then install the driver build repo (this is archived, however it&#039;s legacy so that doesn&#039;t matter): {{Cmd|git clone https://github.com/antoineco/broadcom-wl&lt;br /&gt;
cd broadcom-wl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then follow the build instructions listed in the git repo: {{Cmd|make&lt;br /&gt;
doas make install&lt;br /&gt;
doas depmod -A&lt;br /&gt;
doas modprobe wl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Reboot and you have a working wl driver. Now continue with the normal instructions.&lt;br /&gt;
&lt;br /&gt;
=== Realtek wireless devices ===&lt;br /&gt;
&lt;br /&gt;
A number of out-of-tree kernel drivers for &#039;&#039;&#039;Realtek chipset&#039;&#039;&#039; are packaged and found here &#039;&#039;&#039;{{pkg|rtl*src*}}&#039;&#039;&#039;.  These drivers can be installed using [[Alpine kernel module support]].&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
In most cases the packaged [[Kernels#Firmware|firmware]] should get you the required drivers.  To list your available network interfaces use the commands: {{Cmd|$ ip link}} or {{Cmd|$ ip a}} &lt;br /&gt;
&lt;br /&gt;
If the above command shows {{Path|wlan0}} interface, proceed to bring it up using the command: {{Codeline|# ip link set wlan0 up}}.  &#039;&#039;&#039;If no network interface is displayed, you probably need to load and/or install a [[#Device driver|device driver]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== checking network cards ===&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ cat /proc/net/dev }} lists the network interfaces that are detected. If the expected interfaces are not available, check what network hardware chip you have using builtin {{ic|lsusb}} command. If the output lacks sufficient information, install additional packages referred in [[How to get regular stuff working#Hardware_Management| hardware management]] to use below commands:&lt;br /&gt;
{{Cmd|$ lspci -nn }} &lt;br /&gt;
{{Cmd|$ lsusb}} &lt;br /&gt;
&lt;br /&gt;
Check what [[#Device driver|device driver]] the card uses and modprobe it. Check that the card is in master mode.&lt;br /&gt;
&lt;br /&gt;
=== Check dmesg ===&lt;br /&gt;
&lt;br /&gt;
Run dmesg and check for errors related to the wireless interface. Usually, dmesg gives maximum information related to network and all other hardware.&lt;br /&gt;
{{Cmd|# dmesg}}&lt;br /&gt;
&lt;br /&gt;
=== Rfkill ===&lt;br /&gt;
&lt;br /&gt;
An error message &amp;lt;code&amp;gt;ioctl 0x8914 failed: No error information&amp;lt;/code&amp;gt;, is the &amp;lt;code&amp;gt;busybox ip&amp;lt;/code&amp;gt;&#039;s way of saying your wireless radio is rfkilled, which means the wireless card is blocked by kernel. This can be changed using rfkill. To show the current status of your Wi-Fi: &lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; rfkill list&lt;br /&gt;
0: phy0: wlan&lt;br /&gt;
    Soft blocked: no&lt;br /&gt;
    Hard blocked: no&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the card is hard-blocked, use the hardware button or switch to unblock it. If the card is not hard-blocked but soft-blocked, use the following command: {{Cmd|# rfkill unblock wifi}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Configure_Networking| Networking in Alpine Linux]]&lt;br /&gt;
* [[Iwd|iwd]] - An alternate to wpa_supplicant&lt;br /&gt;
* [[NetworkManager]] - Front-end to Networking&lt;br /&gt;
* [https://wiki.postmarketos.org/wiki/WiFi PostmarketOS Wiki]&lt;br /&gt;
* [https://wiki.archlinux.org/title/Network_configuration/Wireless Archwiki]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Wi-Fi Gentoo Wiki]&lt;br /&gt;
* [[Alpine kernel module support]] - A fully automated solution for building kernel modules&lt;br /&gt;
* [https://unix.stackexchange.com/questions/606073/how-to-build-kernel-modules-in-alpine-3-12 Build kernel modules manually]&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32306</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32306"/>
		<updated>2026-04-12T02:05:45Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Search utilities */ clean up wording and mention ripgrep. deciding not to mention fd (find alternative) as ripgrep is much more widely used&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
The standard search tools &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; are provided by the {{pkg|findutils}} package:{{Cmd|# apk add {{pkg|findutils}}}}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is available as the {{pkg|grep}} package. The {{pkg|ripgrep}} package is also available and provides &amp;lt;code&amp;gt;rg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32305</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32305"/>
		<updated>2026-04-12T00:28:11Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Note the usefulness of apk info when dealing with utilities packages / meta packages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Many utilities on this page are provided either by a package containing multiple collected utilities, or through a meta package. The [[Alpine Package Keeper|apk info]] command and its various flags (&amp;lt;code&amp;gt;--provides&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--depends&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--who-owns&amp;lt;/code&amp;gt;, etc) is useful for determining exactly what is provided by what.&lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32304</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32304"/>
		<updated>2026-04-11T23:55:56Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Rename &amp;quot;Util-linux&amp;quot; section to &amp;quot;Linux utilities&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Linux utilities ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32303</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32303"/>
		<updated>2026-04-11T23:54:35Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Rewrite prose in Subpackages and missing functionality&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Util-linux ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made as to what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. As such, the user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For example, the {{pkg|networkmanager}} package for [[NetworkManager]] has 20+ subpackages based on features. If the user installs the {{pkg|networkmanager}} package, &#039;&#039;only&#039;&#039; the NetworkManager utility will get installed. To manage Wi-Fi networks, use commands like &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt;, or launch the GTK applet, the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}}, {{pkg|networkmanager-tui}}, and {{pkg|network-manager-applet}} respectively.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to many other Linux distributions, where when NetworkManager is installed all the above functionality plus that of {{pkg|networkmanager-bluetooth}}, {{pkg|networkmanager-adsl}}, {{pkg|networkmanager-wwan}}, {{pkg|networkmanager-openvpn}}, {{pkg|networkmanager-l2tp}}, {{pkg|networkmanager-ppp}}, and the like are automatically installed, along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32302</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32302"/>
		<updated>2026-04-11T22:32:21Z</updated>

		<summary type="html">&lt;p&gt;Apropos: tweak appearance of link to musl libc page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl| musl libc]] and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Util-linux ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. The user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For eg: The {{pkg|networkmanager}} package for [[NetworkManager]], the standard network configuration tool has 20+ subpackages based on features. If the user installs {{pkg|networkmanager}} package or {{pkg|network-manager-applet}} only the NetworkManager utility and the applet will get installed. To manage Wifi networks or to use commands like &amp;lt;Code&amp;gt;nmcli&amp;lt;/Code&amp;gt; and &amp;lt;Code&amp;gt;nmtui&amp;lt;/Code&amp;gt; the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}} and {{pkg|networkmanager-tui}} respectively. &lt;br /&gt;
&lt;br /&gt;
In other Linux distributions when NetworkManager is installed, all the above features plus bluetooth, adsl, wwan, vpn, l2tp, ppp etc are automatically installed along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer_Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32301</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32301"/>
		<updated>2026-04-11T22:29:54Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Development environment */ link to musl wiki page here instead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl]] libc and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Util-linux ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. The user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For eg: The {{pkg|networkmanager}} package for [[NetworkManager]], the standard network configuration tool has 20+ subpackages based on features. If the user installs {{pkg|networkmanager}} package or {{pkg|network-manager-applet}} only the NetworkManager utility and the applet will get installed. To manage Wifi networks or to use commands like &amp;lt;Code&amp;gt;nmcli&amp;lt;/Code&amp;gt; and &amp;lt;Code&amp;gt;nmtui&amp;lt;/Code&amp;gt; the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}} and {{pkg|networkmanager-tui}} respectively. &lt;br /&gt;
&lt;br /&gt;
In other Linux distributions when NetworkManager is installed, all the above features plus bluetooth, adsl, wwan, vpn, l2tp, ppp etc are automatically installed along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer_Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [[Musl|musl instead of glibc]]. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32300</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32300"/>
		<updated>2026-04-11T22:28:37Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Development environment */ oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl]] libc and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Util-linux ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. The user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For eg: The {{pkg|networkmanager}} package for [[NetworkManager]], the standard network configuration tool has 20+ subpackages based on features. If the user installs {{pkg|networkmanager}} package or {{pkg|network-manager-applet}} only the NetworkManager utility and the applet will get installed. To manage Wifi networks or to use commands like &amp;lt;Code&amp;gt;nmcli&amp;lt;/Code&amp;gt; and &amp;lt;Code&amp;gt;nmtui&amp;lt;/Code&amp;gt; the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}} and {{pkg|networkmanager-tui}} respectively. &lt;br /&gt;
&lt;br /&gt;
In other Linux distributions when NetworkManager is installed, all the above features plus bluetooth, adsl, wwan, vpn, l2tp, ppp etc are automatically installed along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer_Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [https://musl.libc.org/ musl] instead of glibc. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32299</id>
		<title>How to get regular stuff working</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_get_regular_stuff_working&amp;diff=32299"/>
		<updated>2026-04-11T22:27:39Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Development environment */ fix link to musl&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alpine Linux is built around [[Musl]] libc and [[BusyBox]] and software packages are thinned out and split into [[#Subpackages and missing functionality|subpackages]]. This makes it small and very resource efficient. The [[BusyBox#BusyBox applets|utilities in BusyBox]] tend to only implement standard options and lack GNU-specific extensions. This page explains how to get the utilities typically found in GNU/Linux distributions. &lt;br /&gt;
&lt;br /&gt;
== Core utilities ==&lt;br /&gt;
{{Main|GNU core utilities}}&lt;br /&gt;
&lt;br /&gt;
Most of the basic file, shell and text manipulation utilities commonly grouped under [https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands Core Utilities] are provided by [[BusyBox]]. To replace it with GNU {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}}&lt;br /&gt;
&lt;br /&gt;
== Util-linux ==&lt;br /&gt;
&lt;br /&gt;
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as &amp;lt;code&amp;gt;mount&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cfdisk&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;more&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt; are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. The {{pkg|util-linux}} package is split into multiple subpackages, so it is possible to install only some of them individually. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}}&lt;br /&gt;
&lt;br /&gt;
The full featured file pager utility &amp;lt;code&amp;gt;less&amp;lt;/code&amp;gt; can be installed from the {{pkg|less}} package.&lt;br /&gt;
&lt;br /&gt;
== Search utilities  ==&lt;br /&gt;
&lt;br /&gt;
Standard search tools &amp;lt;code&amp;gt;xargs&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; can be installed by via the {{pkg|findutils}} package as follows:{{Cmd|# apk add {{pkg|findutils}} }}&lt;br /&gt;
&lt;br /&gt;
GNU Grep is also available as the {{pkg|grep}} package.&lt;br /&gt;
&lt;br /&gt;
== Shell management == &lt;br /&gt;
{{Main|Shell management}}&lt;br /&gt;
The default shell used by Alpine Linux is the Busybox variant of the [[Shell_management#Ash_shell|ash shell]]. This is a POSIX compliant shell. All popular shells are available in Alpine Linux and the [[Shell_management#Change_default_shell|default shell can be changed]], if desired.&lt;br /&gt;
&lt;br /&gt;
== Hardware management ==&lt;br /&gt;
&lt;br /&gt;
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}}&lt;br /&gt;
&lt;br /&gt;
The packages {{pkg|hwdata-pci}} and {{pkg|hwdata-usb}} are dependencies for the above utilities and they are installed automatically. These packages can be removed once the hardware configuration has been completed.&lt;br /&gt;
&lt;br /&gt;
== Disk management ==&lt;br /&gt;
{{Main|File management}}&lt;br /&gt;
Managing disks including removable disks is much easier with udisks.{{Cmd|# apk add {{pkg|udisks2}}}} To see the mounted disks:{{Cmd|# udisksctl status}}&lt;br /&gt;
&lt;br /&gt;
== Network management ==&lt;br /&gt;
{{Main|Configure Networking}}&lt;br /&gt;
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} &lt;br /&gt;
&lt;br /&gt;
== Locale and key management ==&lt;br /&gt;
* [[Locale|Locales]], including keyboards, languages and date and time formats are typically configured with the [[Alpine_configuration_management_scripts#setup-alpine|setup-alpine]] and like scripts, and within desktop environment settings.&lt;br /&gt;
&lt;br /&gt;
* Consult the [[Compose_key|Compose Key]] wikipage to create foreign currency symbols, accents and diacritics, endashes (–) and emdashes (—), etc.&lt;br /&gt;
&lt;br /&gt;
== Subpackages and missing functionality  ==&lt;br /&gt;
&lt;br /&gt;
When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so [[Alpine_Package_Keeper#Subpackages|subpackages]] are not installed by default. The user might get a false impression of missing functionality.&lt;br /&gt;
&lt;br /&gt;
For eg: The {{pkg|networkmanager}} package for [[NetworkManager]], the standard network configuration tool has 20+ subpackages based on features. If the user installs {{pkg|networkmanager}} package or {{pkg|network-manager-applet}} only the NetworkManager utility and the applet will get installed. To manage Wifi networks or to use commands like &amp;lt;Code&amp;gt;nmcli&amp;lt;/Code&amp;gt; and &amp;lt;Code&amp;gt;nmtui&amp;lt;/Code&amp;gt; the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}} and {{pkg|networkmanager-tui}} respectively. &lt;br /&gt;
&lt;br /&gt;
In other Linux distributions when NetworkManager is installed, all the above features plus bluetooth, adsl, wwan, vpn, l2tp, ppp etc are automatically installed along with their dependencies.&lt;br /&gt;
&lt;br /&gt;
== Development environment ==&lt;br /&gt;
{{Main|Developer_Documentation}}&lt;br /&gt;
Compiling in Alpine Linux may be more challenging because it uses [https://musl.libc.org/ musl] instead of glibc. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc..&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|build-base}}}&lt;br /&gt;
&lt;br /&gt;
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux.  It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|alpine-sdk}}}}&lt;br /&gt;
&lt;br /&gt;
To install CMake:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. &lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
[[category: System Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Apropos&amp;diff=32170</id>
		<title>User:Apropos</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Apropos&amp;diff=32170"/>
		<updated>2026-03-22T23:32:55Z</updated>

		<summary type="html">&lt;p&gt;Apropos: Created page with &amp;quot;Hello, I&amp;#039;m ~apropos on the internet. I&amp;#039;ve got Alpine Linux running on a little Thinkpad X61 (dual-booting w/ 9front thru Grub atm, and planning on adding FreeBSD once I get around to it). I really like it! I love that Alpine is small enough to understand in most all its entirety. I&amp;#039;ve made this account here to contribute little fixes and notes and things from my messing around with Alpine.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello, I&#039;m ~apropos on the internet. I&#039;ve got Alpine Linux running on a little Thinkpad X61 (dual-booting w/ 9front thru Grub atm, and planning on adding FreeBSD once I get around to it). I really like it! I love that Alpine is small enough to understand in most all its entirety. I&#039;ve made this account here to contribute little fixes and notes and things from my messing around with Alpine.&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Package_Keeper&amp;diff=32169</id>
		<title>Alpine Package Keeper</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Package_Keeper&amp;diff=32169"/>
		<updated>2026-03-22T03:22:28Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* World */ fix relative link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--For searching: apk, APK--&amp;gt;&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
This page documents the Alpine Package Keeper(APK), the package manager in Alpine Linux. Refer to the excellent guide [https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html Working with APK] from Alpine Linux documentation project to learn the basics quickly. &lt;br /&gt;
&lt;br /&gt;
[[Software management#Graphical software manager|Graphical software managers]] can be used for certain basic package management tasks like adding/removing and upgrading packages.&lt;br /&gt;
&lt;br /&gt;
Package management in RAM-based installs like [[Installation#Diskless_Mode|Diskless]] mode and [[Data Disk Mode|Data disk]] mode require [[#Package management in Diskless mode|additional step using lbu]]. &lt;br /&gt;
&lt;br /&gt;
== apk v3 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Add {{Pill_Clickable||v3 only|green|palegreen|right|Alpine Package Keeper#apk_v3}} in every section which deals with apk v3 only feature.This section and associated pill templates are needed until v3.22 reaches EOL on 2027-05-01. --&amp;gt;&lt;br /&gt;
{{Pill_clickable||v3 only|green|palegreen|right|Release Notes for Alpine 3.23.0#apk-tools_v3}}&lt;br /&gt;
With the release of Alpine Linux [[Release Notes for Alpine 3.23.0|v3.23]], the Alpine package manager has transitioned to [https://gitlab.alpinelinux.org/alpine/apk-tools/-/releases/v3.0.0 apk-tools v3], but the index and package formats are still at v2. apk v3 targets backwards compatibility and new features are flagged on the relevant sections of this page as seen on the right side. The diff output of the documentation between V2 and V3 is [[Apk/apkv3 doc diff|available here]] for reference.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The {{pkg|apk-tools}} provides &#039;&#039;&#039;apk&#039;&#039;&#039; and it supports the following operations:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |Package installation and removal&lt;br /&gt;
|-&lt;br /&gt;
|[[#Add a Package|add]]  || Add or modify constraints in [[#World|WORLD]] and commit changes&lt;br /&gt;
|-&lt;br /&gt;
|[[#Remove a Package|del]] || Remove constraints from [[#World|WORLD]] and commit changes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |System maintenance&lt;br /&gt;
|-&lt;br /&gt;
|[[#apk fix|fix ]]    || Fix, reinstall or upgrade packages without modifying [[#World|WORLD]]&lt;br /&gt;
|-&lt;br /&gt;
|[[#Update Package list|update]]|| Update repository indexes&lt;br /&gt;
|-&lt;br /&gt;
|[[#Upgrade a Running System|upgrade]]|| Install upgrades available from repositories&lt;br /&gt;
|-&lt;br /&gt;
|[[#Local Cache|cache]]  || Manage the local package cache&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |Querying package information&lt;br /&gt;
|-&lt;br /&gt;
|[[#apk query|query]]   || Query information about packages by various criteria&lt;br /&gt;
|-&lt;br /&gt;
|[[#Listing installed packages|list]] || List packages matching a pattern or other criteria&lt;br /&gt;
|-&lt;br /&gt;
|[[#apk dot|dot]]   || Render dependencies as [https://graphviz.org/ graphviz] graphs&lt;br /&gt;
|-&lt;br /&gt;
|[[#apk policy|policy]]|| Show repository policy for packages&lt;br /&gt;
|-&lt;br /&gt;
|[[#Search for Packages|search]]  || Search for packages by name or description&lt;br /&gt;
|-&lt;br /&gt;
|[[#Information on Packages|info]]  || Give detailed information about packages or repositories&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |Repository and package maintenance&lt;br /&gt;
|-&lt;br /&gt;
|mkndx    || Create repository index (v3) file from packages&lt;br /&gt;
|-&lt;br /&gt;
|mkpkg  || Create package (v3)&lt;br /&gt;
|-&lt;br /&gt;
|index   || Create repository index (v2) file from packages&lt;br /&gt;
|-&lt;br /&gt;
|fetch  || Download packages from repositories to a local directory&lt;br /&gt;
|-&lt;br /&gt;
|manifest|| Show checksums of package contents&lt;br /&gt;
|-&lt;br /&gt;
|extract || Extract package file contents&lt;br /&gt;
|-&lt;br /&gt;
|verify   || Verify package integrity and signature&lt;br /&gt;
|-&lt;br /&gt;
|adbsign || Sign, resign or recompress v3 packages and indexes&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |Miscellaneous&lt;br /&gt;
|-&lt;br /&gt;
|[[#apk audit|audit]]|| Audit system for changes&lt;br /&gt;
|-&lt;br /&gt;
|stats  || Show statistics about repositories and installations&lt;br /&gt;
|-&lt;br /&gt;
|version|| Compare package versions or perform tests on version strings&lt;br /&gt;
|-&lt;br /&gt;
|adbdump|| Dump v3 files in textual representation&lt;br /&gt;
|-&lt;br /&gt;
|adbgen  || Generate v3 files from text representation&lt;br /&gt;
|-&lt;br /&gt;
|convdb  || Convert v2 installed database to v3 format&lt;br /&gt;
|-&lt;br /&gt;
|convndx || Convert v2 indexes to v3 format&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Packages and Repositories  ==&lt;br /&gt;
{{Main|Repositories}}&lt;br /&gt;
Official software packages for Alpine Linux have the extension &amp;lt;code&amp;gt;.apk&amp;lt;/code&amp;gt;, and are often called &amp;quot;a-packs&amp;quot;. Packages in Alpine Linux are organized into [[Repositories|&#039;&#039;&#039;repositories&#039;&#039;&#039;]] and are defined in the {{Path|/etc/apk/repositories}} file. [[Apk spec#Package Format V2|apk v2]] packages are digitally signed tar.gz archives containing programs, configuration files, and dependency metadata. &lt;br /&gt;
&lt;br /&gt;
=== Subpackages ===&lt;br /&gt;
&lt;br /&gt;
In Alpine Linux, software packages are thinned out and split into subpackages to give more control over what features are installed and keeps the installation as small and efficient as possible. &lt;br /&gt;
&lt;br /&gt;
Subpackages related to service files, documentation and shell completions are installed automatically by the package manager using &#039;&#039;&#039;auto-install&#039;&#039;&#039; rule based on [[APKBUILD_Reference#install_if|install_if]] directive. For example, if {{pkg|zsh}} is already installed, on installing any package with {{pkg|*zsh-completion*}} subpackage, apk automatically installs the associated subpackage. The {{pkg|docs}} meta package for pulling in [[Alpine_Linux:FAQ#Why_don&#039;t_I_have_man_pages_or_where_is_the_&#039;man&#039;_command?|all documentation]] works the same way.&lt;br /&gt;
&lt;br /&gt;
Alpine Linux [https://pkgs.alpinelinux.org package database] page shows the list of available subpackages for any package.&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
&lt;br /&gt;
At {{Path|/etc/apk/world}}, apk maintains the world, that is, a list of constraints the package selection needs to fulfill. World describes the desired system state. {{Path|/etc/apk/world}} is a plaintext file with one constraint using dependency notation per line. Each line has the format:&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;[!]NAME{@tag}{[&amp;lt;&amp;gt;~=]version}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
There can be only one line with a given package NAME in the file and except the package NAME, all the other options are optional.&lt;br /&gt;
&lt;br /&gt;
*  &#039;&#039;&#039;!&#039;&#039;&#039; is used for [[#Package masking|masking a specific package]] &lt;br /&gt;
*  &#039;&#039;&#039;@tag&#039;&#039;&#039; allows apk to use the [[Repositories#Tagged_repository|tagged repository]] for the named package &lt;br /&gt;
*  &#039;&#039;&#039;[&amp;lt;&amp;gt;~=]version&#039;&#039;&#039; are used for [[#Package pinning|package pinning]].&lt;br /&gt;
&lt;br /&gt;
The commands {{ic|apk add foo}} and {{ic|apk del bar}} manipulate the desired state by adding or removing packages &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; respectively as a dependency constraint in {{Path|/etc/apk/world}}. If the {{Path|/etc/apk/world}} is edited manually, run the command [[#apk fix|apk fix]] to apply the changes. &lt;br /&gt;
&lt;br /&gt;
{{Warning|When manually editing world file, do not remove the meta package entry &#039;&#039;&#039;alpine-base&#039;&#039;&#039; or other important entries like &#039;&#039;&#039;linux-*&#039;&#039;&#039; etc. Doing so may render the system unbootable.}}&lt;br /&gt;
&lt;br /&gt;
Every constraint listed in {{Path|/etc/apk/world}} must be solvable in order for the system to be considered correct, and no transaction may be committed that is incorrect. If apk cannot verify the correctness of the requested change, it will back out adding the constraint before attempting to change what packages are actually installed on the system. Thus apk will never [[#ERROR:_unsatisfiable_constraints|commit]] a change to the system that leaves it unbootable. &lt;br /&gt;
&lt;br /&gt;
{{Warning|The option {{ic|force-broken-world}}, will delete world constraints until a solution without conflicts is found to boot. This does not allow installation of packages with unjustifiable dependencies. Using this will likely result in unexpected removal of some packages.}}&lt;br /&gt;
&lt;br /&gt;
== Update Package list ==&lt;br /&gt;
&lt;br /&gt;
Alpine Linux [[Repositories|&#039;&#039;&#039;repositories&#039;&#039;&#039;]] change as packages are added and upgraded. To get the latest list of available packages, use the &#039;&#039;update&#039;&#039; command.  This command downloads the {{Path|APKINDEX.tar.gz}} from each repository and stores it in the local cache, typically {{Path|/var/cache/apk/}}, {{Path|/var/lib/apk/}} or {{Path|/etc/apk/cache/}}. {{Cmd|# apk update}}&lt;br /&gt;
&lt;br /&gt;
Adding the &amp;lt;code&amp;gt;--update-cache&amp;lt;/code&amp;gt;, or for short &amp;lt;code&amp;gt;-U&amp;lt;/code&amp;gt; switch to another apk command, as in &amp;lt;code&amp;gt;apk --update-cache upgrade&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;apk -U add ...&amp;lt;/code&amp;gt;, the command has the same effect as first running &amp;lt;code&amp;gt;apk update&amp;lt;/code&amp;gt; before the other apk command.&lt;br /&gt;
&lt;br /&gt;
It is a good idea to always do an &#039;&#039;&#039;update&#039;&#039;&#039; right &#039;&#039;&#039;before&#039;&#039;&#039; doing an &#039;&#039;&#039;upgrade or add&#039;&#039;&#039; command. That way the command will install the latest available packages from the repositories.&lt;br /&gt;
&lt;br /&gt;
== Add a Package ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;add&#039;&#039;&#039; to install packages from a [[Repositories|&#039;&#039;&#039;repository&#039;&#039;&#039;]]. Any necessary dependencies are also installed. If you have multiple repositories, the &#039;&#039;&#039;add&#039;&#039;&#039; command installs the newest package. {{Cmd|&amp;lt;nowiki&amp;gt;# apk add openssh&lt;br /&gt;
# apk add openssh openntp vim &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Packages from a [[Repositories#Tagged repository|tagged repository]] can be installed by adding tags to them:{{cmd|# apk add wireguard-go@testing}}&lt;br /&gt;
&lt;br /&gt;
A specific package can also be [[#Package pinning|held back or pinned]] at a specific level or version. &lt;br /&gt;
&lt;br /&gt;
=== Add a local Package ===&lt;br /&gt;
&lt;br /&gt;
To install a locally available apk package, for example if this device has no internet access but you can upload apk packages directly to it, use the &#039;&#039;&#039;--allow-untrusted&#039;&#039;&#039; flag: {{cmd|# apk add --allow-untrusted /path/to/file.apk}}&lt;br /&gt;
&lt;br /&gt;
Note that multiple packages can be given.  When installing a local package, all dependencies should also be specified. For example:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add --allow-untrusted /var/tig-2.2-r0.apk /var/git-2.11.1-20.apk}}&lt;br /&gt;
&lt;br /&gt;
When a non-repository package is added, a version constraint is added with the package identity hash in the World file. &lt;br /&gt;
&lt;br /&gt;
{{Note|If {{ic|&#039;&#039;&#039;--available&#039;&#039;&#039;}} option is used with [[#Upgrade a Running System|apk upgrade]] command, local packages are upgraded or downgraded back to a repository version.}}&lt;br /&gt;
&lt;br /&gt;
== Remove a Package  ==&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;del&#039;&#039;&#039; to remove a package along with dependencies that are no longer needed.{{cmd|&amp;lt;nowiki&amp;gt;# apk del openssh&lt;br /&gt;
# apk del openssh openntp vim&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Upgrade a Running System ==&lt;br /&gt;
{{Seealso|Upgrading Alpine Linux to a new release branch}}&lt;br /&gt;
To get the latest security upgrades and bugfixes available for all the installed packages from the [[Repositories#Release_Branches|current release branch]] of a running system, always [[#Update Package list| update the packages list]] before issuing the &#039;&#039;&#039;upgrade&#039;&#039;&#039; command as shown below:{{cmd|&amp;lt;nowiki&amp;gt;# apk update&lt;br /&gt;
# apk upgrade &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Or, combining the same into one single command:{{cmd|# apk -U upgrade}}&lt;br /&gt;
&lt;br /&gt;
To upgrade only &#039;&#039;specific&#039;&#039; packages, use the &#039;&#039;&#039;upgrade&#039;&#039;&#039; command and specify them: {{cmd|&amp;lt;nowiki&amp;gt;# apk update&lt;br /&gt;
# apk upgrade busybox&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
When upgrading packages, the package manager may create &amp;lt;var&amp;gt;apk-new&amp;lt;/var&amp;gt; files to avoid overwriting configuration files. Once the packages are updated, remember to [[#Handling apk-new files|handle such &amp;lt;var&amp;gt;apk-new&amp;lt;var&amp;gt;]] files.&lt;br /&gt;
&lt;br /&gt;
Here is an example, showing the procedure on a system that has [[Repositories#Using testing repository|testing repository tagged]]:&lt;br /&gt;
&amp;lt;Pre&amp;gt;&lt;br /&gt;
 # apk update&lt;br /&gt;
 fetch &amp;lt;nowiki&amp;gt;https://dl-3.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 fetch &amp;lt;nowiki&amp;gt;https://dl-3.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 fetch &amp;lt;nowiki&amp;gt;https://dl-3.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 v3.6.2-191-gf98d79930f &amp;lt;nowiki&amp;gt;[https://dl-3.alpinelinux.org/alpine/v3.6/main]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 v3.6.2-190-ga5d68c47df &amp;lt;nowiki&amp;gt;[https://dl-3.alpinelinux.org/alpine/v3.6/community]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 v3.6.0-4624-g11f1b9c8ab &amp;lt;nowiki&amp;gt;[https://dl-3.alpinelinux.org/alpine/edge/testing]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 OK: 20118 distinct packages available&lt;br /&gt;
 &lt;br /&gt;
 # apk upgrade&lt;br /&gt;
 (1/2) Upgrading extra-cmake-modules@testing (5.38.0-r0 -&amp;gt; 5.39.0-r0)&lt;br /&gt;
 (2/2) Upgrading extra-cmake-modules-doc@testing (5.38.0-r0 -&amp;gt; 5.39.0-r0)&lt;br /&gt;
 Executing mdocml-apropos-1.14.1-r0.trigger&lt;br /&gt;
 OK: 2635 MiB in 803 packages&lt;br /&gt;
&amp;lt;/Pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Upgrading &amp;quot;diskless&amp;quot; and &amp;quot;data&amp;quot; disk mode installs ===&lt;br /&gt;
&lt;br /&gt;
When upgrading packages, the kernel and firmware packages are &#039;&#039;&#039;not&#039;&#039;&#039; upgraded. Upgrading them requires [[Diskless Mode#update-kernel script|&#039;&#039;&#039;update-kernel&#039;&#039;&#039;]] script.&lt;br /&gt;
&lt;br /&gt;
=== Handling apk-new files ===&lt;br /&gt;
&lt;br /&gt;
apk avoids overwriting configuration files in the {{path|/etc}} directory. Whenever apk installs a file there, but realizes a potentially edited one is already present, it will write its file to that filename with {{path|.apk-new}} appended. When upgrading, you see a message like below: {{Cmd|# apk upgrade &lt;br /&gt;
(1/2) Upgrading openrc-user-pam (0.62.2-r2 -&amp;gt; 0.62.2-r3)&lt;br /&gt;
(2/2) Upgrading openrc (0.62.2-r2 -&amp;gt; 0.62.2-r3)&lt;br /&gt;
openrc-0.62.2-r3: installing file to etc/rc.conf.apk-new&lt;br /&gt;
openrc-0.62.2-r3.post-upgrade: Executing script}} &lt;br /&gt;
&lt;br /&gt;
You may handle these by hand, or use the [[Alpine configuration management scripts#update-conf|update-conf]] utility:- &lt;br /&gt;
&lt;br /&gt;
* To list files where changes to configurations from the new packages exist: {{Cmd|# update-conf -l}}&lt;br /&gt;
:Paths appear to locations, possibly using double-slash (&#039;&#039;&amp;quot;//&amp;quot;&#039;&#039;) unix notation, where both the old file and the new file with the {{Path|.apk-new}} extension exist.&lt;br /&gt;
* Simply invoking {{ic|update-conf}} will present you with the difference between the two files and offer various choices for dealing with the conflicts.{{Cmd|# update-conf}}&lt;br /&gt;
:&#039;&#039;&#039;Be very careful&#039;&#039;&#039; not to choose &#039;&#039;&amp;quot;u&amp;quot;&#039;&#039; to &#039;&#039;use&#039;&#039; the new file versions for files such as {{Path|passwd}}, {{Path|doas.conf}}, {{Path|shadow}}, {{Path|hosts}}, etc., because otherwise the existing password hashes, user doas settings, etc. &#039;&#039;&#039;&#039;&#039;would be wiped, and lockouts would occur!&#039;&#039;&#039;&#039;&#039; Instead, one could choose to compare the new lines (shown with a &#039;&#039;&amp;quot;+&amp;quot;&#039;&#039;) with the lines that would be removed (&#039;&#039;&amp;quot;-&amp;quot;&#039;&#039;) and edit (&#039;&#039;&amp;quot;e&amp;quot;&#039;&#039;) the files if so wished, or zap (&#039;&#039;&amp;quot;z&amp;quot;&#039;&#039;) the new version – i.e. delete the new version – if no essential changes are required. &lt;br /&gt;
:Therefore, &#039;&#039;&#039;update-conf&#039;&#039;&#039; does not currently have a merge function set up by default to preserve essential data unlike, say, Debian&#039;s &#039;&#039;&#039;update-passwd&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;!-- Editors - there is a need to elaborate on update-conf merge rules functionality that is reportedly available;  this could be elaborated under Alpine_configuration_management_scripts#update-conf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autoupdate tool for apk ===&lt;br /&gt;
&lt;br /&gt;
Alpine Linux [https://github.com/jirutka/apk-autoupdate tool for automatic updates] is available as {{pkg|apk-autoupdate}} package. It can be used with [[Cron]] to enable unattended, automatic upgrades of packages.&lt;br /&gt;
&lt;br /&gt;
== Package management in Diskless mode ==&lt;br /&gt;
&lt;br /&gt;
Besides using [[#Local Cache|Local Cache]], all package management tasks in [[Diskless Mode|diskless]] and [[Data Disk Mode|Data disk]] mode systems like adding, removing and [[#Upgrading &amp;quot;diskless&amp;quot; and &amp;quot;data&amp;quot; disk mode installs|upgrading]] packages requires running the command: {{Cmd|&#039;&#039;&#039;# [[Alpine_local_backup#Committing changes|lbu commit]]&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
Only when the above command is run, the changes will take effect on next reboot.&lt;br /&gt;
&lt;br /&gt;
== apk audit ==&lt;br /&gt;
&lt;br /&gt;
The audit applet examines the system or specified directories for changes compared to the package database. The purpose of audit is to detect unauthorized modifications or to identify files/paths to [[Alpine_local_backup#Include_special_files/folders_to_the_apkovl|include them in apkovl]]. &lt;br /&gt;
&lt;br /&gt;
These flags determine the &#039;&#039;&#039;scope&#039;&#039;&#039; of the audit i.e which files are examined: &lt;br /&gt;
    --backup (Default): Files flagged as configuration/protected &lt;br /&gt;
    --system: Files provided by packages but ignores new/untracked files and configuration files.&lt;br /&gt;
    --full: All package tracked files and all newly added files/directories.&lt;br /&gt;
&lt;br /&gt;
When the audit exits with code 99 but produces no output, change the scope and re-run the audit with option --full --details to reveal the output.&lt;br /&gt;
&lt;br /&gt;
The following flags modify the output and provide additional information:&lt;br /&gt;
 --details: Shows the exact metadata differences using + and - symbols.&lt;br /&gt;
 --check-permissions: Includes UID, GID, and Mode in the comparison.&lt;br /&gt;
 --packages: Prints only the packages with changed files. &lt;br /&gt;
&lt;br /&gt;
The packages flag is useful to repair all packages with modified files, by using the command:{{Cmd|&amp;lt;nowiki&amp;gt;# apk audit --packages -q | xargs apk fix&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
By default, the output format is one file per line, for each modified file. A character is printed indicating the line type, followed by a space, then either the affected path or the metadata details. The metadata details appear above the relevant file/path. &lt;br /&gt;
&lt;br /&gt;
An optional &amp;lt;path&amp;gt; can be added to limit the audit to a specific directory. The example output below illustrates most of the options explained above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# chmod 777 /etc/init.d/networking&lt;br /&gt;
# apk audit --check-permissions --details /etc/init.d/networking&lt;br /&gt;
# echo $?&lt;br /&gt;
99 &lt;br /&gt;
# apk audit --check-permissions --details --full |grep -C 3 networking&lt;br /&gt;
- mode=755 uid=0 gid=0 hash=9fe622bd6d06ed19eb53c1a665343b98f864c5cd&lt;br /&gt;
+ mode=777 uid=0 gid=0 hash=9fe622bd6d06ed19eb53c1a665343b98f864c5cd&lt;br /&gt;
M etc/init.d/networking&lt;br /&gt;
# apk fix openrc&lt;br /&gt;
# apk audit --check-permissions --details --full |grep -C 3 networking&lt;br /&gt;
# echo $?&lt;br /&gt;
1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the changes detected and displayed by the audit command.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;width:100%; border:1px #0771a6 solid; background:#f9f9f9; text-align:left; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:black; color:white&amp;quot;  colspan=2 align=center |Audit command output&lt;br /&gt;
|-&lt;br /&gt;
| - || Details as per Database record (shown only with --details flag)&lt;br /&gt;
|-&lt;br /&gt;
| + ||  Details as per On-disk record (shown only with --details flag)&lt;br /&gt;
|-&lt;br /&gt;
| A ||  File added &lt;br /&gt;
|-&lt;br /&gt;
| d ||  Directory added &lt;br /&gt;
|-  &lt;br /&gt;
| D ||  Directory added (with non-listed files/subdirs) &lt;br /&gt;
|-  &lt;br /&gt;
| e ||  error occured during audit (e.g. no permissions to read file) &lt;br /&gt;
|-&lt;br /&gt;
|  M ||  File metadata changed (uid, gid, or mode) &lt;br /&gt;
|-&lt;br /&gt;
|  m ||  Directory metadata changed &lt;br /&gt;
|-&lt;br /&gt;
|  U ||  File contents modified &lt;br /&gt;
|-&lt;br /&gt;
|  X ||  File deleted &lt;br /&gt;
|-&lt;br /&gt;
|  x || xattrs changed&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== apk query ==&lt;br /&gt;
{{Pill_clickable||v3 only|green|palegreen|right|Alpine Package Keeper#apk_v3}}&lt;br /&gt;
The query applet is a superset of [[#Information on Packages|info]], [[#Listing installed packages|list]] and [[#Search for Packages|search]] commands to interrogate the installed database and indexes for information related to packages. The command outputs human readable format in addition to json and yaml output.&lt;br /&gt;
&lt;br /&gt;
== Search for Packages ==&lt;br /&gt;
&lt;br /&gt;
{{Tip|Alpine Linux provides a specialized [https://pkgs.alpinelinux.org web interface] dedicated to looking through various available packages.}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;search&#039;&#039;&#039; command searches the repository Index files for installable packages. &lt;br /&gt;
&lt;br /&gt;
The return format is &#039;&#039;&#039;Package&#039;&#039;&#039;-&#039;&#039;&#039;Version&#039;&#039;&#039;. Omit &#039;&#039;&#039;Version&#039;&#039;&#039; for &#039;&#039;apk add &#039;&#039;&#039;Package&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* To list all packages available, along with their descriptions: {{cmd|$ apk search -v}}&lt;br /&gt;
* To list all packages are part of the ACF system: {{cmd|$ apk search -v &#039;acf*&#039; }}&lt;br /&gt;
* To list all packages that list NTP as part of their description, use the &#039;&#039;-d&#039;&#039; or &#039;&#039;--description&#039;&#039; option: {{cmd|$ apk search -v --description &#039;NTP&#039; }}&lt;br /&gt;
* To list all packages that provide the &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; command: {{cmd|$ apk search -v &#039;cmd:git&#039;}}&lt;br /&gt;
&lt;br /&gt;
== Information on Packages ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;info&#039;&#039;&#039; command provides information on the contents of packages, their dependencies, and which files belong to a package.&lt;br /&gt;
&lt;br /&gt;
For a given package, each element can be chosen (for example, &#039;&#039;-w&#039;&#039; to show just the webpage information), or all information displayed with the &#039;&#039;-a&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Example: {{cmd|$ apk info -a zlib}}&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 description:&#039;&#039;&#039;&lt;br /&gt;
 A compression/decompression Library&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 webpage:&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://zlib.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 installed size:&#039;&#039;&#039;&lt;br /&gt;
 94208&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 depends on:&#039;&#039;&#039;&lt;br /&gt;
 libc0.9.32&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 is required by:&#039;&#039;&#039;&lt;br /&gt;
 libcrypto1.0-1.0.0-r0&lt;br /&gt;
 apk-tools-2.0.2-r4&lt;br /&gt;
 openssh-client-5.4_p1-r2&lt;br /&gt;
 openssh-5.4_p1-r2&lt;br /&gt;
 libssl1.0-1.0.0-r0&lt;br /&gt;
 freeswitch-1.0.6-r6&lt;br /&gt;
 atop-1.25-r0 &lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 contains:&#039;&#039;&#039;&lt;br /&gt;
 lib/libz.so.1.2.5&lt;br /&gt;
 lib/libz.so.1&lt;br /&gt;
 lib/libz.so &lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;zlib-1.2.5-r1 triggers:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As shown in the example you can determine&lt;br /&gt;
* The &#039;&#039;&#039;description&#039;&#039;&#039; of the package (&#039;&#039;-d&#039;&#039; or &#039;&#039;--description&#039;&#039;)&lt;br /&gt;
* The &#039;&#039;&#039;webpage&#039;&#039;&#039; where the application is hosted (&#039;&#039;-w&#039;&#039; or &#039;&#039;--webpage&#039;&#039;)&lt;br /&gt;
* The &#039;&#039;&#039;size&#039;&#039;&#039; the package will require once installed (in bytes) (&#039;&#039;-s&#039;&#039; or &#039;&#039;--size&#039;&#039;)&lt;br /&gt;
* What packages are required to use this one  (&#039;&#039;&#039;depends&#039;&#039;&#039;) (&#039;&#039;-R&#039;&#039; or &#039;&#039;--depends&#039;&#039;)&lt;br /&gt;
* What packages require this one to be installed (&#039;&#039;&#039;required by&#039;&#039;&#039;) (&#039;&#039;-r&#039;&#039; or &#039;&#039;--rdepends&#039;&#039;)&lt;br /&gt;
* The &#039;&#039;&#039;contents&#039;&#039;&#039; of the package, that is, which files it installs (&#039;&#039;-L&#039;&#039; or &#039;&#039;--contents&#039;&#039;)&lt;br /&gt;
* Any &#039;&#039;&#039;triggers&#039;&#039;&#039; this package sets. (&#039;&#039;-t&#039;&#039; or &#039;&#039;--triggers&#039;&#039;) Listed here are directories that are watched; if a change happens to the directory, then the trigger script is run at the end of the apk add/delete. For example, doing a depmod once after installing all packages that add kernel modules.&lt;br /&gt;
&lt;br /&gt;
===  Check file ownership ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;info&#039;&#039;&#039; command is also useful to determine which package a file belongs to when used with the {{ic|--who-owns}} option, or simply {{ic|-W}}.  For example: {{cmd|$ apk info --who-owns /sbin/lbu}} &lt;br /&gt;
will display&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/sbin/lbu is owned by alpine-conf-x.x-rx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Check Dependencies ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;info&#039;&#039;&#039; command specific to check package dependency and reverse dependency is explained below:&lt;br /&gt;
&lt;br /&gt;
The option &#039;&#039;&#039;-R&#039;&#039;&#039; or &#039;&#039;&#039;--depends&#039;&#039;&#039; lists the dependencies of the package: {{Cmd|$ apk info --depends pipewire}} &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pipewire-1.0.6-r1 depends on:&lt;br /&gt;
/bin/sh&lt;br /&gt;
so:libc.musl-x86_64.so.1&lt;br /&gt;
so:libpipewire-0.3.so.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option &#039;&#039;&#039;-r&#039;&#039;&#039; or  &#039;&#039;&#039;--rdepends&#039;&#039;&#039; lists the  reverse dependencies of the package (all other packages which depend on the package). {{Cmd|$ apk info --rdepends pipewire}}  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pipewire-1.0.6-r1 is required by:&lt;br /&gt;
xdg-desktop-portal-wlr-0.7.1-r0&lt;br /&gt;
pipewire-pulse-1.0.6-r1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Listing installed packages ===&lt;br /&gt;
&lt;br /&gt;
To list all installed packages, use: {{Cmd|$ apk info}}&lt;br /&gt;
&lt;br /&gt;
To list all installed packages in alphabetical order, with a description of each, do:{{Cmd|$ apk -vv info|sort}}&lt;br /&gt;
&lt;br /&gt;
To list packages locally installed that are not longer available in repositories, use {{Cmd|$ apk list --orphaned}}&lt;br /&gt;
&lt;br /&gt;
To browse details of installed package in a &amp;quot;TUI&amp;quot; with:{{Cmd|&amp;lt;nowiki&amp;gt;$ apk list --installed -q | fzf --preview &#039;apk query {1}&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
To list subpackages for a package, for e.g {{pkg|util-linux}}:{{Cmd|$ apk list --quiet --origin util-linux}}&lt;br /&gt;
&lt;br /&gt;
The apk tool does not have a subcommand to list manually-installed packages that do not have reverse dependencies. To get this information on a traditional system that is not using [[Alpine local backup|lbu]], try this script. Note that this approach will also list core packages like alpine-base that should not be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
apk info | grep -ve &#039;-doc$&#039; | sort | while read pkg&lt;br /&gt;
        do&lt;br /&gt;
                rdep=`apk info -qr &amp;quot;$pkg&amp;quot;`&lt;br /&gt;
                [ -z &amp;quot;$rdep&amp;quot; ] &amp;amp;&amp;amp; echo $pkg&lt;br /&gt;
        done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List packages by installed size ===&lt;br /&gt;
{{Pill_clickable||v3 only|green|palegreen|right|Alpine Package Keeper#apk query}}&lt;br /&gt;
The below command lists all installed packages by installed size. It requires {{pkg|jq}} package and uses [[#apk query|query]] option. Use the below command with &amp;lt;Code&amp;gt;less&amp;lt;/Code&amp;gt; or &amp;lt;Code&amp;gt;head&amp;lt;/Code&amp;gt; command:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;$ apk --installed query --format json --fields name,installed-size &#039;*&#039;|jq -r &#039;.[] | [.&amp;quot;installed-size&amp;quot;, .&amp;quot;name&amp;quot;] | @tsv&#039; | sort -nr&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Local Cache ==&lt;br /&gt;
{{Seealso|Local APK cache}}&lt;br /&gt;
APK can keep a cache of installed packages on a local disk. HDD or [[Installation#System_Disk_Mode|sys mode]] installs don&#039;t need an apk cache, it still allows to serve packages over the network, though, e.g. to get installed by other local machines.&lt;br /&gt;
&lt;br /&gt;
{{Note|For [[Diskless Mode|diskless]] installations, [[Local APK cache|local package cache]] is needed to automatically (re-)install packages when booting.}} &lt;br /&gt;
&lt;br /&gt;
When newer packages are added to the cache over time, the older versions of the packages default to remain in the cache directory.  The older versions of packages can be removed with the &#039;&#039;&#039;clean&#039;&#039;&#039; command.  {{cmd|# apk cache clean}} Or to see what is deleted include the verbose switch: {{cmd|# apk -v cache clean}}&lt;br /&gt;
&lt;br /&gt;
If packages got deleted accidentally from the cache directory, then use the &#039;&#039;&#039;download&#039;&#039;&#039; command, {{cmd|# apk cache download}}&lt;br /&gt;
&lt;br /&gt;
The above two steps can be combined  into one with the &#039;&#039;&#039;sync&#039;&#039;&#039; command - this cleans out old packages and downloads missing packages. {{cmd|# apk cache -v sync}}&lt;br /&gt;
&lt;br /&gt;
== apk dot ==&lt;br /&gt;
&lt;br /&gt;
The dot option renders package dependencies as {{pkg|graphviz}} graphs.[[File:Seatd dependencies.png|800px|center|alt=Seatd dependencies|Seatd dependencies]] Steps to use the dot option is documented below:&lt;br /&gt;
# Save the output of apk dot option to a dot file.{{Cmd|$ apk dot seatd &amp;gt; seatd_dependencies.dot}}&lt;br /&gt;
# Use &amp;lt;code&amp;gt;dot&amp;lt;/code&amp;gt; utility from {{pkg|graphviz}} package to convert the {{Path|seatd_dependencies.dot}} file into a graphical format such as PNG, PDF, or SVG. {{Cmd|$ dot -Tpng seatd_dependencies.dot -o seatd_dependencies.png}}&lt;br /&gt;
&lt;br /&gt;
== apk fix ==&lt;br /&gt;
&lt;br /&gt;
If a package is specified, the &#039;&#039;&#039;fix&#039;&#039;&#039; subcommand applies repair strategies to correct errors in the installation of the specified packages. If no packages are specified, this command synchronizes all the installed packages with the [[#World|desired system state]].&lt;br /&gt;
&lt;br /&gt;
However, if the currently installed &#039;&#039;&#039;&#039;&#039;version&#039;&#039;&#039;&#039;&#039; of the package (say, &amp;lt;var&amp;gt;foo&amp;lt;/var&amp;gt; version &amp;lt;var&amp;gt;1.2.3-r4&amp;lt;/var&amp;gt;) is no longer available in the operating system&#039;s repositories (i.e. the repos specified in {{Path|/etc/apk/repositories}}) following the latest system update, then &#039;&#039;&#039;apk fix&#039;&#039;&#039; will not fix the package and will report &#039;&#039;&amp;quot;[APK unavailable, skipped]&amp;quot;&#039;&#039; instead:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ doas apk fix &amp;lt;var&amp;gt;foo&amp;lt;/var&amp;gt;&lt;br /&gt;
(1/1) [APK unavailable, skipped] Reinstalling foo (1.2.3-r4)}}&lt;br /&gt;
&lt;br /&gt;
This outcome applies both with &#039;&#039;&#039;apk v3&#039;&#039;&#039; and &#039;&#039;&#039;v2&#039;&#039;&#039;, and includes cases where either a higher or lower version of the package is found in the employed repos.  In such cases where a different version exists, consider replacing the package using the [[Alpine_Package_Keeper#Add_a_local_Package|{{ic|apk upgrade --available}}]] command, which will either upgrade or downgrade &#039;&#039;all packages&#039;&#039; to the versions currently offered. &lt;br /&gt;
&lt;br /&gt;
== apk policy ==&lt;br /&gt;
&lt;br /&gt;
To display the repository a package was installed from and will be updated from, plus any [[#Repository_pinning|tagged]] or enabled repositories where it is also offered, if any, for this architecture - its &#039;&#039;&#039;policy&#039;&#039;&#039;: {{Cmd|$ apk policy &#039;&#039;package&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ apk policy vlc&lt;br /&gt;
 vlc policy:&lt;br /&gt;
  2.2.6-r1:&lt;br /&gt;
    lib/apk/db/installed&lt;br /&gt;
    https://dl-3.alpinelinux.org/alpine/v3.7/community&lt;br /&gt;
  3.0.0_rc2-r1:&lt;br /&gt;
    @edgecommunity https://dl-3.alpinelinux.org/alpine/edge/community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration file ==&lt;br /&gt;
{{Pill_clickable||v3 only|green|palegreen|right|Alpine Package Keeper#apk_v3}}&lt;br /&gt;
Support for config file for setting  default global options has been enabled. The user defined config file {{path|/etc/config/apk}}, if present overrides the {{path|/lib/apk/config}}, intended for distribution default options. To override the default config file name, the environment variable {{ic|APK_CONFIG}} can be used.&lt;br /&gt;
&lt;br /&gt;
The configuration file contains one long option per line as shown here for reference:{{Cat|/etc/config/apk|no-cache &lt;br /&gt;
timeout 120}}&lt;br /&gt;
&lt;br /&gt;
The following aliases are available: {{ic|cache}} equals {{ic|cache yes}} and {{ic|no-cache}} equals {{ic|cache no}}.&lt;br /&gt;
&lt;br /&gt;
== Transaction logs == &lt;br /&gt;
{{Pill_clickable||v3 only|green|palegreen|right|Alpine Package Keeper#apk_v3}}&lt;br /&gt;
All apk commands which modify the database i.e write transactions are logged to {{Path|/var/log/apk.log}}. To disable the writing of the log file, the configuration option {{ic|logfile}} in the [[#Configuration file|configuration file]] must be set as follows:{{Cat|/etc/config/apk|logfile no}}&lt;br /&gt;
&lt;br /&gt;
== Advanced APK Usage ==&lt;br /&gt;
&lt;br /&gt;
=== Commandline repository options ===&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;&#039;apk&#039;&#039;&#039; utility will use the system repositories for all operations. This behavior can be overridden by the following options:&lt;br /&gt;
{|&lt;br /&gt;
| --repositories-file REPOFILE&lt;br /&gt;
| Override the system repositories by specifying a repositories file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;-X|--repository REPO&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Specify a supplemental repository that will be used in addition to the system repositories. This option can be provided multiple times.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add cherokee --update-cache --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted}}&lt;br /&gt;
&lt;br /&gt;
=== apk Command Line Parsing ===&lt;br /&gt;
&lt;br /&gt;
==== Use of Single Quotes ====&lt;br /&gt;
Advanced use of &#039;&#039;&#039;apk&#039;&#039;&#039; could require the use of single quotes around its argument (e.g. {{ic|apk &amp;lt;var&amp;gt;add&amp;lt;/var&amp;gt; &#039;&amp;lt;var&amp;gt;argument&amp;lt;/var&amp;gt;&#039;}}) when certain characters are being employed, since Unix shells – including the default &#039;&#039;&#039;sh&#039;&#039;&#039; (&#039;&#039;&#039;ash&#039;&#039;&#039;/&#039;&#039;&#039;busybox&#039;&#039;&#039;) shell, &#039;&#039;&#039;bash&#039;&#039;&#039; or &#039;&#039;&#039;zsh&#039;&#039;&#039;/&#039;&#039;&#039;fish&#039;&#039;&#039; – will attempt to interpret the argument if it is not enveloped in single quotes:-&lt;br /&gt;
* {{ic|&amp;lt;}} in an argument would be unintendedly interpreted as &amp;quot;input redirection&amp;quot;; {{ic|asterisk&amp;lt;1.6.1}} without quotes would prompt the shell to attempt to read from an {{Path|asterisk}} file;   similarly, {{ic|&amp;gt;}} would be interpreted unintendedly as &amp;quot;output redirection&amp;quot;&lt;br /&gt;
* {{ic|~}} would attempt to expand the argument to include the user’s home directory path&lt;br /&gt;
* {{ic|*}}, {{ic|?}}, {{ic|[0-9]}} without single quotes around the argument could cause globbing, meaning that the shell would try to expand the package name using the meaning of those characters ({{ic|*}} meaning any string of alphanumeric characters, for example) and then try to apply &#039;&#039;&#039;apk&#039;&#039;&#039; to any &#039;&#039;file&#039;&#039; fitting that name in the current working directory as an unintended interpretation&lt;br /&gt;
* {{ic|!}} in a &#039;&#039;&#039;bash&#039;&#039;&#039; or &#039;&#039;&#039;zsh&#039;&#039;&#039; shell without using quotes would be interpreted as &amp;quot;history expansion&amp;quot; as opposed to [[#Package_masking|&amp;quot;negate installation&amp;quot;]], as intended.   Note that, if using &#039;&#039;&#039;ash&#039;&#039;&#039; (Alpine Linux’s default), the lack of single quotes is not problematic there as that shell does not support history expansion.  History expansion is &#039;&#039;disabled by default&#039;&#039; in &#039;&#039;&#039;fish&#039;&#039;&#039;.&lt;br /&gt;
Therefore, the use of single quotes is typically required in various shells to enclose the package name/version, with or with any &#039;!&#039; symbol, to be handed directly to the &#039;&#039;&#039;apk&#039;&#039;&#039; tool so that it is not attempted to be interpreted by the shell.&lt;br /&gt;
&lt;br /&gt;
=== Package pinning ===&lt;br /&gt;
{{Seealso|Repositories#Tagged repository}}&lt;br /&gt;
&lt;br /&gt;
In certain cases, you may want to upgrade a system, but keep a specific package at a specific level or version by pinning a Package. It is possible to add &amp;quot;sticky&amp;quot; or versioned dependencies. &lt;br /&gt;
&lt;br /&gt;
{{Warning| If you desire deterministic, repeatable package installation (such as with containerized environments) via package pinning, it is important to understand your package repo&#039;s version retention rules. Always pin to a package version that is intended for your [[Repositories#Release_Branches|release branch]]. Pinning to a version on the [[Repositories#Edge|edge]] branch may stop working after the package version is revoked from the repo.}}&lt;br /&gt;
&lt;br /&gt;
For instance, to hold the &#039;&#039;asterisk&#039;&#039; package to the 1.6.2 level or lower:{{cmd|&amp;lt;nowiki&amp;gt;# apk add asterisk=1.6.0.21-r0&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
or – note the need for [[#Use_of_Single_Quotes|single quotes]]:{{cmd|# apk add &#039;asterisk&amp;lt;1.6.1&#039;}}&lt;br /&gt;
&lt;br /&gt;
To upgrade the entire system, keeping the asterisk package at the 1.6.0 or lower level:{{cmd|# apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
To later upgrade to the current version, and ensure that 1.6.1 is the minimum version used. {{cmd|# apk add &#039;asterisk&amp;gt;1.6.1&#039;}}&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;quot;fuzzy&amp;quot; version matching to pin the version to a major/minor release. To match any version of asterisk that starts with 1.6 (such as 1.6.0.21-r0 or 1.6.9.31-r9) use the command: {{cmd|&amp;lt;nowiki&amp;gt;# apk add &#039;asterisk=~1.6&#039;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== Holding a specific package back ====&lt;br /&gt;
See [[#Package pinning|Package pinning]]&lt;br /&gt;
&lt;br /&gt;
=== Package masking ===&lt;br /&gt;
&lt;br /&gt;
In case a package is pulled in yet is superfluous or unwanted, or if it were to be installed and conflict with another, one could &#039;&#039;mask&#039;&#039; it i.e. &#039;&#039;exclude it&#039;&#039; from being installed unless &#039;&#039;&#039;apk&#039;&#039;&#039; is later instructed &#039;&#039;explicitly&#039;&#039; to add it.  To mask/exclude an unwanted package hypothetically called &#039;&#039;foo&#039;&#039;:&lt;br /&gt;
{{Cmd|# apk add &#039;!foo&#039;}}&lt;br /&gt;
Beforehand, ensure that the &#039;&#039;&#039;&#039;&#039;package is not installed&#039;&#039;&#039;&#039;&#039;.  If so, &#039;&#039;uninstall it first&#039;&#039;, as otherwise, it would become an &#039;&#039;&amp;quot;orphaned package&amp;quot;&#039;&#039;:  installed, yet not being managed by the &#039;&#039;&#039;apk&#039;&#039;&#039; package keeper, which could cause an obfuscated problem(s) if it or its dependencies linger and later conflict with another package;  it could be harder to trace the issue(s) then.&lt;br /&gt;
&lt;br /&gt;
The exclamation mark (!) is often used in logic and IT to express negation.&lt;br /&gt;
&lt;br /&gt;
As [[#Use_of_Single_Quotes|detailed above]], be sure to employ the single quotes (&#039;) if using certain shells &#039;&#039;other than&#039;&#039; the unaffected &#039;&#039;&#039;ash&#039;&#039;&#039; shell so as to avoid an unintended interpretation by the shell interpreter.&lt;br /&gt;
&lt;br /&gt;
The package then appears negated in &#039;&#039;world&#039;&#039;:&lt;br /&gt;
{{Cat|/etc/apk/world|fon&lt;br /&gt;
!foo&lt;br /&gt;
fop}}&lt;br /&gt;
&lt;br /&gt;
==== Unmasking a specific package ====&lt;br /&gt;
&lt;br /&gt;
Simply install it &#039;&#039;explicitly&#039;&#039; using &#039;&#039;&#039;apk&#039;&#039;&#039;.  Say:&lt;br /&gt;
{{Cmd|# apk add foo}}&lt;br /&gt;
Uninstall it afterwards, if not required.&amp;lt;/br&amp;gt;&lt;br /&gt;
Alternatively, delete the line in {{Path|/etc/apk/world}} where the package is negated.  Be sure not to leave any spurious character.&lt;br /&gt;
&lt;br /&gt;
=== Commit hooks ===&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to trigger an action or run a certain script on every commit made by apk, there&#039;s a built-in method for that. On every commit apk looks for executables located in the &amp;quot;/etc/apk/commit_hooks.d/&amp;quot; directory, and executes them both before and after the commit. To provide some way to selectively run hooks either before or after a change is commited by apk, the scripts are called with &amp;quot;pre-commit&amp;quot; or &amp;quot;post-commit&amp;quot; as argument 1.&lt;br /&gt;
This is an example of a hook to do different things before and after commit:&lt;br /&gt;
&lt;br /&gt;
{{cmd|1=#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;pre-commit&amp;quot; ]; then&lt;br /&gt;
    do_something&lt;br /&gt;
&lt;br /&gt;
elif [ &amp;quot;$1&amp;quot; = &amp;quot;post-commit&amp;quot; ]; then&lt;br /&gt;
    do_something_else&lt;br /&gt;
fi}}&lt;br /&gt;
&lt;br /&gt;
Commit hooks are $PATH-aware, so for the sake of security it&#039;s recommended to specify absolute paths to executables.&lt;br /&gt;
&lt;br /&gt;
==  Rosetta Stone ==&lt;br /&gt;
	&lt;br /&gt;
[[Comparison with other distros#Comparison chart/Rosetta Stone|Rosetta Stone]] or a Comparison chart shows how standard things related to package management are done in Alpine Linux compared to other popular distributions. &lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR: unable to select packages ===&lt;br /&gt;
&lt;br /&gt;
This error typically indicates that the package manager cannot find a suitable package to install. On issuing a command to add a package for eg: {{ic|# apk add labwc}}, you may receive below error message:&lt;br /&gt;
&amp;lt;Pre&amp;gt;&lt;br /&gt;
ERROR: unable to select packages:&lt;br /&gt;
 labwc (no such package):&lt;br /&gt;
 required by: world[labwc]&lt;br /&gt;
&amp;lt;/Pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above error indicates {{pkg|labwc}} does not exist in the [[Repositories|repositories]] currently configured in {{Path|/etc/apk/repositories}}. Ensure that &amp;lt;code&amp;gt;community&amp;lt;/code&amp;gt; repository is [[Repositories#Managing_repositories|enabled]], as by default only &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; repository is enabled. You may also want to check [https://pkgs.alpinelinux.org/packages packages database] to identify the correct package name and the [[Repositories|repository]] in which the package is available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Pre&amp;gt;&lt;br /&gt;
ERROR: unable to select packages:&lt;br /&gt;
  so:libxml2.so.2 (no such package):&lt;br /&gt;
    required by: llvm19-libs-19.1.7-r1[so:libxml2.so.2]&lt;br /&gt;
&amp;lt;/Pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above error message may occur in [[Edge|Edge]] branch in certain other situations, even if all the necessary [[Repositories|repositories]] are enabled. Temporary non-availability of the packages from the repositories can occur, when software packages are [https://build.alpinelinux.org/ rebuilt]. You may want to wait for some time to try again.&lt;br /&gt;
&lt;br /&gt;
=== ERROR: unsatisfiable constraints === &lt;br /&gt;
&lt;br /&gt;
This error signifies a dependency conflict. It means that the package you&#039;re trying to install has dependencies that cannot be simultaneously satisfied within the current package repository. &lt;br /&gt;
&lt;br /&gt;
You may want to check [https://pkgs.alpinelinux.org/packages packages database] to identify the correct package name and version and the [[Repositories|repository]] in which the package is available. &lt;br /&gt;
&lt;br /&gt;
=== WARNING: This apk-tools is OLD! ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;apk update&#039;&#039;&#039;, &#039;&#039;&#039;apk upgrade&#039;&#039;&#039; or &#039;&#039;&#039;apk add&#039;&#039;&#039; may report the following: &lt;br /&gt;
 WARNING: This apk-tools is OLD! Some packages might not function properly&lt;br /&gt;
&lt;br /&gt;
This may happen if you are running Alpine Linux stable version with a [[Repositories#Edge|Edge]] package(s) also installed.  One resolution is to consider upgrading {{pkg|apk-tools}}. If edge/main is already [[Repositories#Tagged repository|tagged]] as &#039;&#039;@edgemain&#039;&#039; in your {{Path|/etc/apk/repositories}} file, then try: {{Cmd|# apk add --upgrade apk-tools@edgemain}}&lt;br /&gt;
&lt;br /&gt;
=== ERROR:  UNTRUSTED signature ===&lt;br /&gt;
&lt;br /&gt;
This happens when the release version changes. You need to update the local apk keys.&lt;br /&gt;
&lt;br /&gt;
If you have already updated your repositories, allow them to update without the trusted key:&lt;br /&gt;
{{Cmd|# apk update --allow-untrusted}}&lt;br /&gt;
&lt;br /&gt;
Then install the keys upgrade:&lt;br /&gt;
{{Cmd|# apk fix --upgrade --allow-untrusted alpine-keys}}&lt;br /&gt;
&lt;br /&gt;
Now updates and upgrades should proceed normally.&lt;br /&gt;
&lt;br /&gt;
Alternative, the updated alpine-keys package may be obtained, verified, installed directly, as covered earlier, prior to a repository update.&lt;br /&gt;
&lt;br /&gt;
=== ERROR: unable to select packages: breaks: world ===&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;# apk add vim&lt;br /&gt;
ERROR: unable to select packages:&lt;br /&gt;
  vim-common-9.1.1566-r0:&lt;br /&gt;
    breaks: world[!vim-common]&lt;br /&gt;
    satisfies: vim-9.1.1566-r0[vim-common=9.1.1566-r0]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
When issuing package management commands, the above error will arise, if the command cannot be solved without breaking the [[#World|World]]. &amp;lt;!-- This probaly has to be added to it&#039;s own section for package exclusion&lt;br /&gt;
If the {{Path|/etc/apk/world}} file has a constraint {{ic|!vim-common}}, then issuing the command to install {{pkg|vim}} will fail, as {{pkg|vim}} has a dependency on {{pkg|vim-common}} as shown [[#ERROR: unable to select packages: breaks: world|below]]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== World updated but the following packages are not removed === &lt;br /&gt;
&lt;br /&gt;
On issuing a command to remove a package for eg: {{ic|# apk del btrfs-progs}}, you may receive below error message:&lt;br /&gt;
&amp;lt;Pre&amp;gt;&lt;br /&gt;
World updated, but the following packages are not removed due to:&lt;br /&gt;
  btrfs-progs: btrbk&lt;br /&gt;
&amp;lt;/Pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, the removal of package {{Pkg|btrfs-progs}} affects another package {{Pkg|btrbk}} in the constraints file [[#World|/etc/apk/world]]. So the package {{Pkg|btrfs-progs}} will be removed from the constraints file, but not removed from the system. The {{Pkg|btrfs-progs}} will remain in the system, until the constraint i.e {{Pkg|btrbk}} which depends on {{Pkg|btrfs-progs}} is removed. &lt;br /&gt;
&lt;br /&gt;
If {{ic|apk del btrbk}} is issued, the package {{Pkg|btrfs-progs}} will be automatically removed from system as the constraint {{Pkg|btrfs-progs}} does not exist in {{Path|/etc/apk/world}}.&lt;br /&gt;
&lt;br /&gt;
=== Huh? Error reporter did not find the broken constraints===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Pre&amp;gt;&lt;br /&gt;
ERROR: unable to select packages:&lt;br /&gt;
Huh? Error reporter did not find the broken constraints.&lt;br /&gt;
&amp;lt;/Pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above message can be due to version conflicts caused by a software package present in the [[#World|world]] file and appears when [[Upgrading Alpine Linux to a new release branch]]. When apk-tools solver returns above message, that is always a bug. Please file a bug report [https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues here].&lt;br /&gt;
&lt;br /&gt;
To identify the offending software package, take a backup of the world file, then take stuff out of world until the upgrade works. Or alternatively, begin with a minimal version of world file and add things until it breaks again. &lt;br /&gt;
&lt;br /&gt;
Once the upgrade is done, you may be able to add back the offending software package, if supported in the newer version.&lt;br /&gt;
&lt;br /&gt;
Check the [https://irclogs.alpinelinux.org/%23alpine-linux-2026-02.log IRC logs] dated 2026-02-18 for an example on how this error was temporarily resolved.&lt;br /&gt;
&lt;br /&gt;
=== Issues due to /usr merge ===&lt;br /&gt;
&lt;br /&gt;
Further to the [https://alpinelinux.org/posts/2025-10-01-usr-merge.html /usr merge] announcement, for users who have migrated to the [[Repositories#Message_on_/usr_merge|merged /usr]], there are certain known issues like {{Issue|17624|apk audit does not work}}. &lt;br /&gt;
&amp;lt;!-- This entire  section has to be removed at a future date once the issues related to /usr merge are fixed completely --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ERROR:Could not find owner package ====&lt;br /&gt;
&lt;br /&gt;
The {{ic|apk info --who-owns}} command is currently subject to requiring the declaration of a file&#039;s path to be updated in the case where &#039;&#039;&#039;[[Repositories#Message_on_/usr_merge|/usr merge]]&#039;&#039;&#039; had been previously applied and where, additionally, the file was originally assigned to paths under {{Path|/lib}}, {{Path|/bin}} or {{Path|/sbin}}.  Otherwise, an error is returned, seeing how these are now soft-linked into {{Path|/usr}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ apk info --who-owns /sbin/lbu&lt;br /&gt;
ERROR: /sbin/lbu: Could not find owner package&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order for this facility to function in such cases, {{Path|/usr}} currently needs to be prepended to the declaration of the path for all such files, seeing how those files are now soft-linked to {{Path|/usr/lib}}, {{Path|/usr/bin}} or {{Path|/usr/sbin}}:  {{cmd|$ apk info --who-owns /usr/sbin/lbu}} &lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://git.alpinelinux.org/apk-tools/tree/doc/apk.8.scd Manual for apk(8)]&lt;br /&gt;
* [https://git.alpinelinux.org/apk-tools/tree/doc/apk-world.5.scd Manual for apk-world(5)]&lt;br /&gt;
* [https://pkgs.alpinelinux.org Official web interface for packages] &lt;br /&gt;
* [[Software management]]&lt;br /&gt;
* [https://ariadne.space/2021/04/24/why-apktools-is-different-than.html  Why apk-tools is different than other package managers]&lt;br /&gt;
* [https://ariadne.space/2021/10/30/spelunking-through-the-apktools-dependency.html spelunking through the apk-tools dependency solver]&lt;br /&gt;
* [https://whynothugo.nl/journal/2023/02/18/in-praise-of-alpine-and-apk/ In praise of alpine and apk]&lt;br /&gt;
* [https://www.cyberciti.biz/faq/10-alpine-linux-apk-command-examples/ 10 Alpine Linux apk Command Examples]&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category:System_Administration]]&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:FAQ&amp;diff=32168</id>
		<title>Alpine Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Alpine_Linux:FAQ&amp;diff=32168"/>
		<updated>2026-03-22T03:18:05Z</updated>

		<summary type="html">&lt;p&gt;Apropos: /* Why don&amp;#039;t I have man pages or where is the &amp;#039;man&amp;#039; command? */ Note interaction of MANPATH environment variable with man page lookup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:filetypes.svg|64px|left|link=]]&lt;br /&gt;
&lt;br /&gt;
Alpine Linux is an independent, non-commercial, general purpose Linux distribution designed for power users who appreciate security, simplicity and resource efficiency. &lt;br /&gt;
&lt;br /&gt;
This is a list of &#039;&#039;&#039;frequently asked questions&#039;&#039;&#039; about Alpine Linux. If your question is not answered on this page, check the available [[Alpine Linux:Support|support]] options. &lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
=== Where to start? ===&lt;br /&gt;
&lt;br /&gt;
The [[Installation]] page and the [[Installation#Post-Installation|Post Installation]] section on that page, provide a basic orientation.&lt;br /&gt;
&lt;br /&gt;
A broader overview may be found on the official [https://alpinelinux.org/about About] page and at the [[Alpine Linux:Overview|wiki overview]].&lt;br /&gt;
&lt;br /&gt;
Please note that testing is safer on your own virtual machine.&lt;br /&gt;
&lt;br /&gt;
=== I have found a bug, where can I report it? ===&lt;br /&gt;
You can report it on the [https://gitlab.alpinelinux.org/groups/alpine/-/issues bugtracker], but search it first to see if the issue has already been reported.&lt;br /&gt;
&lt;br /&gt;
=== Are there any details about the releases available? ===&lt;br /&gt;
Please check the [https://alpinelinux.org/releases/ Release Branches] page for more information.&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between edge and stable release branch? ===&lt;br /&gt;
&lt;br /&gt;
[[Repositories#Edge|&#039;&#039;&#039;Edge&#039;&#039;&#039;]] is the name given to the current [[Aports tree|development tree]] of Alpine Linux.  &#039;&#039;edge&#039;&#039; can be considered as &#039;&#039;&#039;rolling release version&#039;&#039;&#039; of Alpine Linux. This version contains the latest build of all available Alpine Linux packages. Those packages are updated on a regular basis. &lt;br /&gt;
&lt;br /&gt;
[[Repositories#Release Branches|Stable release branches]] are just what they sound like: initially a point-in-time snapshot of the package archives, but then maintained with bugfixes only in order to keep a stable environment. Occasionally, snapshot ISO images of the then-current state of edge are made and are available for download. Typically these are made when there are major kernel upgrades or package upgrades that require initramfs rebuilds.&lt;br /&gt;
&lt;br /&gt;
=== What architectures does Alpine Linux support? ===&lt;br /&gt;
The table below lists the architectures that are officially supported.&lt;br /&gt;
{{:Include:Architecture support matrix}}&lt;br /&gt;
Please check [https://alpinelinux.org/downloads Downloads] page for media availability on each one.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Note: Please update the above link for Architecture information . The below content to be removed later, if this redirection is acceptable to all&lt;br /&gt;
* &#039;&#039;&#039;aarch64&#039;&#039;&#039;: 64-bit ARM processors (e.g. Raspberry Pi 4)&lt;br /&gt;
* &#039;&#039;&#039;armhf&#039;&#039;&#039;: 32-bit ARMv6 processors with a floating point unit (e.g. Raspberry Pi 1) (armv6hf)&lt;br /&gt;
* &#039;&#039;&#039;armv7&#039;&#039;&#039;: 32-bit ARMv7 processors with a floating point unit (armv7hf)&lt;br /&gt;
* &#039;&#039;&#039;s390x&#039;&#039;&#039;: IBM mainframes using the z/Architecture (z196 minimum)&lt;br /&gt;
* &#039;&#039;&#039;ppc64le&#039;&#039;&#039;: 64-bit little-endian POWER devices (e.g. Raptor Talos II) (POWER8 minimum)&lt;br /&gt;
* &#039;&#039;&#039;x86&#039;&#039;&#039;: 32-bit Intel and AMD processors commonly found in older personal computers (e.g. Pentium M+). Can also run on x86_64 machines (not recommended). Requires SSE2 and CMOV.&lt;br /&gt;
* &#039;&#039;&#039;x86_64&#039;&#039;&#039;: 64-bit Intel and AMD processors commonly found in personal computers (e.g. Core i7, Ryzen 7)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How can I contribute? ===&lt;br /&gt;
You can contribute by:&lt;br /&gt;
* Using the software and giving [https://gitlab.alpinelinux.org/groups/alpine/-/issues feedback].&lt;br /&gt;
* Documenting your [https://www.alpinelinux.org Alpine Linux] experiences on this [[Main_Page|wiki]].&lt;br /&gt;
* Flag packages as outdated in the [https://pkgs.alpinelinux.org/packages package database], or even better enable release monitoring in [https://release-monitoring.org/ Anitya] for them.&lt;br /&gt;
* In many other ways.&lt;br /&gt;
Please visit the [[Contribute|Contribute page]] to read more about this topic.&lt;br /&gt;
&lt;br /&gt;
=== Why don&#039;t I have man pages or where is the &#039;man&#039; command? ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; command, the {{pkg|man-pages}} and the system&#039;s &#039;&#039;core&#039;&#039; manual pages are not installed by default. Since binary packages are thinned out and split, documentation sub-packages in the format &#039;&#039;&#039;packagename-doc&#039;&#039;&#039; are not installed by default. &lt;br /&gt;
The core utilities provided by [[BusyBox]] – e.g. {{ic|ls}}, {{ic|traceroute}} and {{ic|poweroff}} – do not have individual man pages in keeping with BusyBox&#039;s minimalist design.  Instead, the man page package for BusyBox, {{pkg|busybox-doc}}, supplies a single &#039;&#039;&#039;busybox&#039;&#039;&#039; man page that lists all the available switches for those utility applets;  once &#039;&#039;&#039;busybox-doc&#039;&#039;&#039; is installed, the switches for each utility can be listed using the {{ic|--help}} option – e.g. {{ic|ls --help}} – or by scrolling through {{ic|$ man busybox}}. &lt;br /&gt;
&lt;br /&gt;
Install the &#039;&#039;man pages reader&#039;&#039; called {{pkg|mandoc}}.  It is the default reader since Alpine Linux v3.12, preferred over {{pkg|man-db}} or {{pkg|man-pages}}, as it supplies a smaller, faster, and more secure &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; command:&lt;br /&gt;
{{cmd|# apk add {{pkg|mandoc}}}}&lt;br /&gt;
&lt;br /&gt;
Once {{pkg|mandoc}} is installed, add documentation for the package where you need it. For example, say you installed &#039;&#039;&#039;nftables&#039;&#039;&#039;, and you now require its man page: &lt;br /&gt;
{{cmd|# apk add {{pkg|nftables-doc}}}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, the {{pkg|docs}} meta package will immediately install the documentation sub-package for all of the currently installed packages (plus the {{pkg|mandoc}} reader, if not installed).  {{pkg|docs}} additionally ensures that documentation sub-packages are installed/removed automatically for any packages that one may add/remove in the future. &lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add docs}}&lt;br /&gt;
&lt;br /&gt;
Optionally, to be able to search all &#039;&#039;installed&#039;&#039; man pages for a given command, say, {{ic|&amp;lt;var&amp;gt;password&amp;lt;/var&amp;gt;}}, install {{pkg|mandoc-apropos}}, which supplies the &amp;lt;code&amp;gt;apropos&amp;lt;/code&amp;gt; instruction.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{pkg|mandoc-apropos}}}} &lt;br /&gt;
&lt;br /&gt;
Then, search installed man pages for the command:&lt;br /&gt;
&lt;br /&gt;
 $ apropos &amp;lt;var&amp;gt;password&amp;lt;/var&amp;gt;&lt;br /&gt;
 chage(1) - change user password expiry information&lt;br /&gt;
 expiry(1) - check and enforce password expiration policy&lt;br /&gt;
 git-credential-cache(1) - Helper to temporarily store passwords in memory&lt;br /&gt;
 keepassxc(1) - a modern open-source password manager&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
Keep in mind that not all packages have a corresponding documentation package, and even when it has one, it may not be in the form of man pages. Also ensure that the &amp;lt;code&amp;gt;MANPATH&amp;lt;/code&amp;gt; environment variable, if set, includes &amp;lt;code&amp;gt;/usr/share/man&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/usr/local/share/man&amp;lt;/code&amp;gt;. If not set, &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; will fall back on default man page paths, so there is no need to set it explicitly, unless other &amp;lt;code&amp;gt;man&amp;lt;/code&amp;gt; page locations are added.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between &#039;&#039;sys&#039;&#039;, &#039;&#039;data&#039;&#039;, and &#039;&#039;diskless&#039;&#039; when running &amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;setup-disk&amp;lt;/code&amp;gt;? ===&lt;br /&gt;
&lt;br /&gt;
[[System Disk Mode|&#039;&#039;&#039;sys&#039;&#039;&#039; or &#039;&#039;&#039;system&#039;&#039;&#039; disk]] mode is the traditional hard disk installation. The following partitions will be created on the disk: &#039;&#039;/boot/&#039;&#039;, &#039;&#039;/&#039;&#039; (filesystem root) and &#039;&#039;swap&#039;&#039;, if &amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt; is used, or use &amp;lt;code&amp;gt;setup-disk&amp;lt;/code&amp;gt; script for custom partitioning. This mode may be used for development boxes, desktops, virtual servers, etc.&lt;br /&gt;
&lt;br /&gt;
In [[Data Disk Mode|&#039;&#039;&#039;data&#039;&#039;&#039; disk]] mode, disk(s) are used for data storage, not for the operating system. Runs from the media and only a &#039;&#039;/var/&#039;&#039; is created on disk.  The system itself will run from a &#039;&#039;tmpfs&#039;&#039; (RAM).  Use this mode if you only want to use the disk(s) for data, like &#039;&#039;mailspool&#039;&#039;, &#039;&#039;databases&#039;&#039;, &#039;&#039;logs&#039;&#039;, etc.&lt;br /&gt;
&lt;br /&gt;
In [[Diskless Mode|&#039;&#039;&#039;diskless&#039;&#039;&#039;]] mode, no disks are to be used. Here the entire system run from a &#039;&#039;tmpfs&#039;&#039; (RAM). [[Alpine local backup]] may still be used in this mode.&lt;br /&gt;
&lt;br /&gt;
=== How do I upgrade Alpine? ===&lt;br /&gt;
&lt;br /&gt;
To upgrade to a new stable release or edge refer to [[Upgrading Alpine Linux to a new release branch]].&lt;br /&gt;
&lt;br /&gt;
=== Why don&#039;t my cron jobs run? ===&lt;br /&gt;
{{Main|Cron}}&lt;br /&gt;
Start service &#039;&#039;crond&#039;&#039; and add it to the default runlevel:{{cmd|rc-service crond start &amp;amp;&amp;amp; rc-update add crond}}&lt;br /&gt;
&lt;br /&gt;
After that the cron daemon is started automatically on system boot and executes the scripts placed in the folders under &#039;&#039;/etc/periodic/&#039;&#039; - there are folders for &#039;&#039;15min&#039;&#039;, &#039;&#039;hourly&#039;&#039;, &#039;&#039;daily&#039;&#039;, &#039;&#039;weekly&#039;&#039; and &#039;&#039;monthly&#039;&#039; scripts.&lt;br /&gt;
&lt;br /&gt;
To check whether your scripts are likely to run, use the &#039;&#039;run-parts&#039;&#039; command, for example:{{cmd|run-parts --test /etc/periodic/15min}}&lt;br /&gt;
&lt;br /&gt;
This command will tell you what should run but will not actually execute the scripts.&lt;br /&gt;
&lt;br /&gt;
If the results of the test are not as expected, check the following:&lt;br /&gt;
&lt;br /&gt;
* Make sure the script is executable - if unsure, issue the command {{cmd|chmod +x /etc/periodic/[path/scriptname]}}&lt;br /&gt;
* Make sure the first line of your script is &amp;lt;code&amp;gt;#!/bin/sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Do not use periods on your script file names - this stops them from working; for example: {{Path|/etc/periodic/daily/myscript}} will run, but {{Path|/etc/periodic/daily/myscript.sh}} won&#039;t.&lt;br /&gt;
&lt;br /&gt;
== Time and timezones ==&lt;br /&gt;
&lt;br /&gt;
=== How do I set the local timezone? ===&lt;br /&gt;
&lt;br /&gt;
If you wish to edit the &#039;&#039;timezone&#039;&#039; (TZ) after installation, run the [[Alpine_setup_scripts#setup-timezone|setup-timezone]] script.&lt;br /&gt;
&lt;br /&gt;
== Packages ==&lt;br /&gt;
&lt;br /&gt;
=== Can you build an APK package for ...? ===&lt;br /&gt;
Please create an [https://gitlab.alpinelinux.org/alpine/aports/issues/new issue] in the [https://gitlab.alpinelinux.org bugtracker]. Prefix it with &amp;quot;package request:&amp;quot; in the title and include a short description (one-line), a URL for the home page, why you need it, and a URL for the source package.&lt;br /&gt;
&lt;br /&gt;
=== How can I build my own package? ===&lt;br /&gt;
Please see the [[Creating an Alpine package]] page.&lt;br /&gt;
&lt;br /&gt;
=== What does &amp;quot;required by: world[$pkgname]&amp;quot; mean? ===&lt;br /&gt;
&lt;br /&gt;
It means that the package you tried to install does not exist in the [[Alpine Package Keeper#Packages and Repositories|repositories]] you have configured. &lt;br /&gt;
&lt;br /&gt;
Ensure that the [[Repositories#Managing_repositories|community repository is enabled]] in the {{path|/etc/apk/repositories}} file.&lt;br /&gt;
&lt;br /&gt;
Or is the package in a [[Repositories#Tagged_repository|tagged repository]] and you forgot to suffix the package with the repo tag? Example:{{cmd|# apk add experimental-package@testing}}&lt;br /&gt;
&lt;br /&gt;
=== How can I find out if a certain package exists in Alpine? ===&lt;br /&gt;
&lt;br /&gt;
If you want to only search repositories you have configured in /etc/apk/repositories, then &amp;lt;code&amp;gt;apk search $pkgname&amp;lt;/code&amp;gt; should get you sorted. If you want to search all repositories have a look at the [https://pkgs.alpinelinux.org/ online pkg oracle]&lt;br /&gt;
&lt;br /&gt;
=== WARNING: Ignoring APKINDEX.xxxx.tar.gz ===&lt;br /&gt;
If you get &amp;lt;code&amp;gt;WARNING: Ignoring APKINDEX.xxxx.tar.gz: No such file or directory&amp;lt;/code&amp;gt; while running [[Alpine_Linux_package_management|package related tools]], check your {{Path|/etc/apk/repositories}} file.&lt;br /&gt;
&lt;br /&gt;
To check the content of the repositories file&lt;br /&gt;
{{Cmd|cat /etc/apk/repositories}}&lt;br /&gt;
&lt;br /&gt;
or &lt;br /&gt;
{{Cmd|setup-apkrepos}}&lt;br /&gt;
&lt;br /&gt;
== Dynamic DNS ==&lt;br /&gt;
=== How do I schedule a regular dynamic DNS update? ===&lt;br /&gt;
You&#039;ll want to install the {{pkg|ez-ipupdate}} package:&lt;br /&gt;
{{cmd|apk add ez-ipupdate}}&lt;br /&gt;
&lt;br /&gt;
After that, create a new file at {{path|/etc/ez-ipupdate.conf}} with contents similar to:&lt;br /&gt;
 service-type=dyndns&lt;br /&gt;
 user=myusername:mypassword&lt;br /&gt;
 interface=eth1&lt;br /&gt;
 host=myhostname.dyndns.org&lt;br /&gt;
&lt;br /&gt;
Make the new ip cache directory:&lt;br /&gt;
{{cmd|mkdir /var/cache/ez-ipupdate&lt;br /&gt;
lbu add /var/cache/ez-ipupdate}}&lt;br /&gt;
&lt;br /&gt;
Then schedule a new cron job with this command:&lt;br /&gt;
{{cmd|echo &amp;gt;&amp;gt; /var/log/ez-ipupdate &amp;amp;&amp;amp; \&amp;lt;br /&amp;gt;/bin/date &amp;gt;&amp;gt; /var/log/ez-ipupdate &amp;amp;&amp;amp; \&amp;lt;br /&amp;gt;ez-ipupdate --config-file /etc/ez-ipupdate.conf -f -F /var/run/ez-ipupdate.pid \&amp;lt;br /&amp;gt;  --cache-file /var/cache/ez-ipupdate/ipcache --quiet &amp;gt;&amp;gt; /var/log/ez-ipupdate 2&amp;gt;&amp;amp;1}}&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to backup your settings!&lt;br /&gt;
{{cmd|lbu ci}}&lt;br /&gt;
&lt;br /&gt;
== Terminal ==&lt;br /&gt;
&lt;br /&gt;
=== How to enable/fix colors for git? ===&lt;br /&gt;
&lt;br /&gt;
The problem is not in git itself or terminal, but in the &amp;lt;tt&amp;gt;less&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
Busybox’s &amp;lt;tt&amp;gt;less&amp;lt;/tt&amp;gt; doesn’t support &amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;--raw-control-chars&amp;lt;/tt&amp;gt;) and &amp;lt;tt&amp;gt;-R&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;--RAW-CONTROL-CHARS&amp;lt;/tt&amp;gt;) options.&lt;br /&gt;
&lt;br /&gt;
The simplest (yet not ideal) solution is to install GNU less:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add less}}&lt;br /&gt;
&lt;br /&gt;
Additionally, for colorized diff while using verbose commit (&amp;lt;tt&amp;gt;git commit -v&amp;lt;/tt&amp;gt;), add this to shell init scripts (e.g.: {{Path|~/.profile}}):&lt;br /&gt;
&lt;br /&gt;
{{Cat|~/.profile|&amp;lt;nowiki&amp;gt;export GIT_EDITOR=vim&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Fix lacking lsusb / lspci output ===&lt;br /&gt;
{{Main|How to get regular stuff working}}&lt;br /&gt;
If you launch {{ic|lsusb}} or {{ic|lspci}} on a default installation, there&#039;s no device descriptions, and the latter doesn&#039;t exist. &lt;br /&gt;
&lt;br /&gt;
This can be fixed by installing the &#039;&#039;&#039;{{pkg|usbutils}}&#039;&#039;&#039; and &#039;&#039;&#039;{{pkg|hwdata}}&#039;&#039;&#039; tables.&lt;br /&gt;
&lt;br /&gt;
== Old questions, no longer frequently asked ==&lt;br /&gt;
&lt;br /&gt;
=== Alpine freezes during boot from Compact Flash, how can I fix? ===&lt;br /&gt;
Most Compact Flash card readers do not support proper DMA.&amp;lt;br /&amp;gt;&lt;br /&gt;
You should append &#039;&#039;&#039;nodma&#039;&#039;&#039; to the &#039;&#039;append&#039;&#039; line in {{path|syslinux.cfg}}.&lt;br /&gt;
&lt;br /&gt;
=== How do I remove the CD-ROM? ===&lt;br /&gt;
Since the modloop loopback device is on CD-ROM you cannot just run &amp;lt;code&amp;gt;eject&amp;lt;/code&amp;gt;. You need to unmount the modloop first.&amp;lt;br /&amp;gt;&lt;br /&gt;
Unmounting both the modloop and the CDROM in one step can be done by executing:&lt;br /&gt;
{{Cmd|/etc/init.d/modloop stop}}&lt;br /&gt;
&lt;br /&gt;
Then it&#039;s possible to eject the CD-ROM:&lt;br /&gt;
{{Cmd|eject}}&lt;br /&gt;
&lt;br /&gt;
=== How can I install custom firmware in a diskless system? ===&lt;br /&gt;
&lt;br /&gt;
The modules and firmware are both special images which are mounted as read-only.&amp;lt;br /&amp;gt;&lt;br /&gt;
To fix this issue you can copy the firmware directory to your writeable media (cf/usb) and copy your custom firmware to it.&amp;lt;br /&amp;gt;&lt;br /&gt;
After reboot Alpine should automatically use the directory on your local storage instead of the loopback device.&lt;br /&gt;
&lt;br /&gt;
=== OpenNTPD reports an error with &amp;quot;adjtime&amp;quot; ===&lt;br /&gt;
Your log contains something like:&lt;br /&gt;
 reply from 85.214.86.126: offset 865033148.784255 delay 0.055466, next query 32s&lt;br /&gt;
 reply from 202.150.212.24: offset 865033148.779314 delay 0.400771, next query 3s&lt;br /&gt;
 adjusting local clock by 865033148.779835s                                      &lt;br /&gt;
 adjtime failed: Invalid argument    &lt;br /&gt;
&lt;br /&gt;
{{pkg|openntpd}} is supposed to make small adjustments in the time without causing time jumps.&amp;lt;br /&amp;gt;&lt;br /&gt;
If the adjustment is too big then something is clearly wrong and ntpd gives up. (its actually adjtime(3) that has a limit on how big adjustments are allowed)&lt;br /&gt;
&lt;br /&gt;
You can make ntpd set the time at startup by adding &#039;&#039;-s&#039;&#039; option to ntpd. This is done by setting &#039;&#039;&#039;NTPD_OPTS=&amp;quot;-s&amp;quot;&#039;&#039;&#039; in {{path|/etc/conf.d/ntpd}}.&lt;br /&gt;
&lt;br /&gt;
=== Using a cron job to keep the time in sync ===&lt;br /&gt;
The [[Cron#Basic_example|cron]] page explains how to run the command {{ic|ntpd -d -q -n -p uk.pool.ntp.orgA}} as a cron job.&lt;br /&gt;
&lt;br /&gt;
=== Windows clients reports an error when trying to sync ===&lt;br /&gt;
{{pkg|openntpd}} needs to run for a while before it is satisfied it is in sync.&lt;br /&gt;
Until then it will set a flag &amp;quot;clock not synchronized&amp;quot; and Windows will report an error while trying to sync with your openntpd server.&lt;br /&gt;
&lt;br /&gt;
Only thing to do is wait, do something else for 15-20mins and then check.&lt;/div&gt;</summary>
		<author><name>Apropos</name></author>
	</entry>
</feed>