How to get regular stuff working: Difference between revisions
Prabuanand (talk | contribs) m (rephrased sentence) |
|||
(30 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
Alpine Linux is built around [[Musl]] libc and [[BusyBox]]. This makes it small and very resource efficient. The utilities in BusyBox generally have fewer options and hence missing some functionality when used to [[Daily driver guide|daily drive]]. This page explains how to get the regular utilities working as found in other Linux distributions. | |||
== Core utilities == | |||
{{Main|GNU core utilities}} | |||
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 original {{pkg|coreutils}} package:{{Cmd|# apk add {{pkg|coreutils}}}} | |||
== Util-linux == | |||
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as <code>mount</code>, <code>cfdisk</code>, <code>more</code>, <code>lsblk</code> and <code>kill</code> are maintained under [https://en.wikipedia.org/wiki/Util-linux Util-linux]. To have the complete {{pkg|util-linux}} package:{{Cmd|# apk add {{pkg|util-linux}}}} | |||
The full featured file pager utility <code>less</code> can be installed from the {{pkg|less}} package. | |||
== Search utilities == | |||
Standard search tools <code>grep</code> and <code>find</code> can be installed by installing the packages {{pkg|grep}} and {{pkg|findutils}} as follows:{{Cmd|# apk add {{pkg|grep}} {{pkg|findutils}} }} | |||
== Bash shell == | |||
{{Main|Change default shell}} | |||
The default shell used by Alpine Linux is the busybox variant of the [[BusyBox#Ash_shell|ash shell]]. To install {{pkg|bash}} shell: {{Cmd|# apk add {{pkg|bash}} {{pkg|bash-completion}}}} | |||
== | == Hardware Management == | ||
Install {{pkg|pciutils}} and {{pkg|usbutils}} for identifying and configuring PCI and USB hardware using the full featured version of <code>lspci</code> and <code>lsusb</code> commands respectively. {{Cmd|# apk add {{pkg|pciutils}} {{pkg|usbutils}}}} | |||
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. | |||
== Disk Management == | |||
Managing (removable) disks is much easier with udisks. {{Cmd|# apk add {{pkg|udisks2}}}} | |||
To see the mounted disks:{{Cmd|# udisksctl status}} | |||
== Network Management == | |||
For network, you may want to install {{pkg|iproute2}}. {{Cmd|# apk add {{pkg|iproute2}}}} | |||
== Subpackages and missing functionality == | |||
In Alpine Linux, binary 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. When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so the user might get a false impression of missing functionality. | |||
For eg: [https://networkmanager.dev/ NetworkManager], a popular network configuration tool is split into 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 <Code>nmcli</Code> and <Code>nmtui</Code> the user is expected to add the required subpackages {{pkg|networkmanager-wifi}}, {{pkg|networkmanager-cli}} and {{pkg|networkmanager-tui}} respectively. 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. | |||
Use [https://pkgs.alpinelinux.org/packages package database] or {{Codeline|<Code>apk search <pkgname></Code>}} to find subpackages related to a package. | |||
== Development environment == | |||
Compiling in Alpine Linux may be more challenging because it uses [https://musl.libc.org/ musl-libc] instead of glibc. The {{pkg|build-base}} meta package provides regular compiler stuff such as {{pkg|binutils}}, {{pkg|gcc}}, {{pkg|g++}}, {{pkg|make}} etc.. | |||
{{Cmd|# apk add {{pkg|build-base}}}} | |||
The {{pkg|alpine-sdk}} meta package is provided to build packages for Alpine Linux. It includes {{pkg|abuild}}, {{pkg|build-base}}, and {{pkg|git}}. | |||
{{Cmd|# apk add {{pkg|alpine-sdk}}}} | |||
To install CMake: | |||
{{Cmd|# apk add {{pkg|cmake}} {{pkg|extra-cmake-modules}}}} | |||
{{pkg|ccache}} and a lot other tools are also available in Alpine Linux. | |||
[[Category:Installation]] | [[Category:Installation]] | ||
[[category: System Administration]] |
Latest revision as of 15:42, 15 February 2025
Alpine Linux is built around Musl libc and BusyBox. This makes it small and very resource efficient. The utilities in BusyBox generally have fewer options and hence missing some functionality when used to daily drive. This page explains how to get the regular utilities working as found in other Linux distributions.
Core utilities
Most of the basic file, shell and text manipulation utilities commonly grouped under Core Utilities are provided by BusyBox. To replace it with original coreutils package:
# apk add coreutils
Util-linux
A set of approximately 100 basic Linux system utilities not included in GNU Core Utilities, such as mount
, cfdisk
, more
, lsblk
and kill
are maintained under Util-linux. To have the complete util-linux package:
# apk add util-linux
The full featured file pager utility less
can be installed from the less package.
Search utilities
Standard search tools grep
and find
can be installed by installing the packages grep and findutils as follows:
Bash shell
The default shell used by Alpine Linux is the busybox variant of the ash shell. To install bash shell:
# apk add bash bash-completion
Hardware Management
Install pciutils and usbutils for identifying and configuring PCI and USB hardware using the full featured version of lspci
and lsusb
commands respectively.
The packages hwdata-pci and 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.
Disk Management
Managing (removable) disks is much easier with udisks.
# apk add udisks2
To see the mounted disks:
# udisksctl status
Network Management
For network, you may want to install iproute2.
# apk add iproute2
Subpackages and missing functionality
In Alpine Linux, binary packages are thinned out and split into subpackages to give more control over what features are installed and keeps the installation as small and efficient as possible. When a package is installed in Alpine Linux, no assumption is made on what features the user wants, so the user might get a false impression of missing functionality.
For eg: NetworkManager, a popular network configuration tool is split into 20+ subpackages based on features. If the user installs networkmanager package or network-manager-applet only the NetworkManager utility and the applet will get installed. To manage Wifi networks or to use commands like nmcli
and nmtui
the user is expected to add the required subpackages networkmanager-wifi, networkmanager-cli and networkmanager-tui respectively. 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.
Use package database or apk search <pkgname>
to find subpackages related to a package.
Development environment
Compiling in Alpine Linux may be more challenging because it uses musl-libc instead of glibc. The build-base meta package provides regular compiler stuff such as binutils, gcc, g++, make etc..
# apk add build-base
The alpine-sdk meta package is provided to build packages for Alpine Linux. It includes abuild, build-base, and git.
# apk add alpine-sdk
To install CMake:
# apk add cmake extra-cmake-modules
ccache and a lot other tools are also available in Alpine Linux.