Comparison with other distros

Alpine Linux has some similarities and differences with other distributions. This page helps new Alpine Linux users from other other distributions to quickly come up speed.
= Package management =
Package manager for alpine is Alpine Package Keeper. This section compares how apk is used, in comparison to other tools from Debian,Fedora,Arch and Void.
The following package managers from popular Linux distributions are used for comparison in this section:
* Alpine (apk)
* Arch (pacman)
* Gentoo (emerge)
* Debian/Ubuntu (apt)
* Fedora/RHEL (DNF)
* Void (XBPS)
== Comparison chart/Rosetta Stone ==
This chart shows how some standard things are done in Alpine compared to other distributions. 
Action 	Alpine	Arch	Gentoo	Debian/Ubuntu	Fedora	VoidLinux
Update package database 	 	 	 	 	 	
Showing available updates 	 	 	 	 	 	
Installing packages 	 	 	 	 	 	
Update all installed packages	 	 	 	 	 	
Searching package database 	 	 	 	 	 	
Removing packages 	 	 	 	 	 	
== Updating package database ==
Gentoo will update the build-from-source scripts and the updating of the database takes much more time than updating the database for Debian or Alpine.
Alpine
Arch
Debian
Gentoo
== Showing available updates ==
Show which packages have an update available:
Alpine
or:
Gentoo
Debian
=== Updating a particular package ===
Alpine
or
Debian
Gentoo
== Installing packages ==
Alpine
For source compile, see the Aports tree and the abuild tool.
Gentoo
Debian
Debian source compile:
(optional: customize the build by modifying the debian/rules makefile)
(or set environmental variables like DEB_BUILD_OPTIONS)
(note that this will make your bug reports invalid to the maintainer)
Simplified source compile:
(the packages are automatically generated using the -b switch above)
Note: This process can be used to backport packages from testing and unstable by simply adding their respective source repositories to sources.list, which is similar to adding ~x86 to package.keywords in Gentoo. This is explored further in the "Architectures and repositories" section below.
== Reinstalling particular packages ==
Alpine
or:
Gentoo
Debian
Note: You rarely need to reinstall a package on Debian
== Searching the package database ==
Alpine
Alpine will only search package names.
Gentoo
To search the package names and descriptions:
Note: On Gentoo, it's actually much better to install and use the eix package to do a search. You use them like this:
Debian
Both emerge and apt-cache search support regular expressions.
To get the long package information on Debian (searching only in package names):
== Removing packages ==
Alpine
apk del will remove configuration files when the --purge flag is used. Make sure you have backups of your configuration files.
You will mostly like to take a quick look at the dependencies before you remove packages recursively.
To see dependencies for a package, use:
To see if package is required by other packages (is a dependency for another packages), use:
Gentoo
The correct way to remove packages on gentoo.
In case you know what you're doing, you may skip dependency checks and potentiality leave your system in broken state.
Debian
or to remove along with all configuration files
== Only downloading packages ==
This can be useful e.g. if you're on a dial-up connection and want to download everything first and install later.
Alpine
Gentoo
Debian
== Cleaning up downloaded packages ==
Compressed packages that were downloaded for installation can easily consume gigabytes of storage space.
Alpine
Alpine will clean up packages automatically.
Gentoo
The following command will leave /var/cache/distfiles/ folder intact, while deleting all children.
To only remove outdated packages you will need to install the gentoolkit package and use eclean:
Cleaning temporary files from emerging packages:
Debian
Only remove outdated packages:
==Reverse dependencies==
Alpine
apk-tools will take care of reverse dependencies.
Gentoo
Recent versions of portage include library tracking and preservation with the preserved-libs feature. Portage will notify you to run to help rebuild binaries that might otherwise become broken.
Debian
Reverse dependencies are taken care of by dpkg.
= Runlevel & Initscripts =
== Directories and files ==
In Gentoo, runlevels have the same names, but these are mapped to more self explanatory ones (in /etc/inittab): "boot", "default", "nonetwork", with the option to add more. The directories that represent them are in 
/etc/runlevels/:
* /etc/runlevels/boot
* /etc/runlevels/default
* /etc/runlevels/nonetwork
In Gentoo, if a service is not explicitly started in a runlevel, it is stopped when switching to that runlevel! 
In Gentoo, which things are started (and stopped) in which runlevels is controlled by links in the runlevel directories to scripts in /etc/init.d/, e.g.:
Gentoo
 $ ls -l /etc/runlevels/boot/hostname
 lrwxrwxrwx 1 root root 20 Mar 25 2004 /etc/runlevels/boot/hostname -> /etc/init.d/hostname
Alpine
In Alpine, runlevels work like they do in Gentoo:
* /etc/runlevels/boot
* /etc/runlevels/default
* /etc/runlevels/sysinit
* /etc/runlevels/nonetwork
* /etc/runlevels/shutdown
== Runlevel management ==
To manage which things to start in which runlevels, use the following commands:
Alpine
To see current status of services in runlevels, do:
To add sshd to default runlevel, do:
To remove sshd from all runlevels do:
Gentoo
To add the cupsd to the default runlevel, do:
To remove alsasound from the boot runlevel, do:
Also see this wiki page about gentoo runlevel management with rc-update
= Config Files =
== /etc/portage/make.conf and use flags ==
While in Gentoo there's a large number of configuration files which control the behaviour of the package management system, there are comparatively fewer in Debian, as there is no need to dictate how to compile software which is downloaded and tweak/alter it. In Gentoo, the file /etc/portage/make.conf is used for much configuration; this includes USE flags, which influence which elements of packages are compiled, and which libraries to build support for - common USE flags (USE or -USE to specifically negate support) include 'gtk gnome' for Gnome users (and a corresponding -qt -kde -arts) and 'qt kde arts' for KDE users. A Gentoo user's complete set of use flags may look something like this:
USE="-kde -arts -qt xv truetype bluetooth crypt slang readline gpm berkdb mmx gdbm tcpd pam libwww ssl nls ethereal perl python esd gif imlib sdl oggvorbis mpeg gnome gtk X motif opengl avi png tiff nptl pcmcia nptl ldap eds"
== Architectures and repositories ==
Gentoo
Also in /etc/portage/make.conf is the ACCEPT_KEYWORDS setting, with (for an X86-based processor) two settings, x86 for stabler packages, and ~x86 for bleeding edge packages. It is however not recommended to make this change in /etc/portage/make.conf. Rather configure this per-package in /etc/portage/package.accept_keywords. It's enough to put a line into that file naming the package (for example 'app-foo/bar'). That file might look like this:
 app-crypt/gpg-agent
 app-text/docbook-xsl-stylesheets
 =app-text/docbook-xml-dtd-4.3-r1
The last line says, that only version 4.3-r1 should be unmasked. Older and newer versions will still be ignored.
Note for non-x86 users:
The keywords x86 and ~x86 can of course be replaced by sparc and ~sparc for example.
Debian
Setting this in Debian is slightly more complicated, and is accomplished by setting different 'repositories' in /etc/apt/sources.list - along with which 'tree' to use for packages; in Debian, these are stable, testing, and unstable. An /etc/apt/sources.list file for a debian testing user may look something like this:
 deb https://mirrors.kernel.org/debian testing main non-free contrib
 deb ftp://ftp.nerim.net/debian-marillat testing main
 deb https://security.debian.org testing/updates main contrib non-free
Alternatively, /etc/apt/sources.list can contain any number of repositories for any trees, and a default tree (this can be overridden using the -t switch on the command line) in /etc/apt/apt.conf:
 APT::Default-Release "testing";
Per-package settings go in /etc/apt/preferences, somewhat like Gentoo's /etc/portage/package.keywords.
== Network ==
Alpine
Alpine uses /etc/network/interfaces, similar to Debian. Alpine uses busybox's implementation by default.
/etc/network/interfaces:
 auto eth0
 iface eth0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 broadcast 192.168.0.255
 
 auto eth0:0
 iface eth0:0 inet static
 address 192.168.1.1
 netmask 255.255.255.0
 broadcast 192.168.1.255
 # etc.
Gentoo
Gentoo uses netifrc. This packages is also available in the edge community repository. (Use on Alpine at your own risk.)
/etc/conf.d/net:
 config_eth0="192.168.1.100 netmask 255.255.255.0
 192.168.2.100 netmask 255.255.255.0"
 routes_eth0="default via 192.168.1.1"
Note that this has changed recently. For more information please refer to https://wiki.gentoo.org/wiki/Handbook:X86?part=4
Debian
/etc/network/interfaces:
 auto eth0
 iface eth0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 broadcast 192.168.0.255
 
 auto eth0:0
 iface eth0:0 inet static
 address 192.168.1.1
 netmask 255.255.255.0
 broadcast 192.168.1.255
 # etc.
Category:Package Manager
== External Reference == 
Pacman Rosetta.