Arch Linux

From Infogalactic: the planetary knowledge core
(Redirected from Pacman (package manager))
Jump to: navigation, search
Arch Linux
Arch Linux logo.svg
Developer Aaron Griffin and others[lower-alpha 1]
Written in {{#property:p277}}
OS family Unix-like
Working state Current
Source model Open source
Initial release March 11, 2002; 22 years ago (2002-03-11)
Latest release Rolling release / installation medium 2015.12.01[1]
Marketing target General purpose
Update method pacman
Platforms IA-32,[lower-alpha 2] x86-64 and ARM[lower-alpha 3]
Kernel type Monolithic (Linux)
Userland GNU
Default user interface Bash
License Free software (GPL and other licenses)[2]
Official website www.archlinux.org

Arch Linux (or Arch /ˈɑːr/)[3] is a Linux distribution for computers based on IA-32 and x86-64 architectures.[4][lower-alpha 2][lower-alpha 3] It is composed predominantly of free and open-source software,[5] and supports community involvement.[6]

The design approach of the development team follows the KISS principle ("keep it simple, stupid") as the general guideline, and focuses on elegance, code correctness, minimalism and simplicity, and expects the user to be willing to make some effort to understand the system's operation.[7] A package manager written specifically for Arch Linux, pacman, is used to install, remove and update software packages.

Arch Linux uses a rolling release model, such that a regular system update is all that is needed to obtain the latest Arch software; the installation images released by the Arch team are simply up-to-date snapshots of the main system components.[8]

History

Inspired by CRUX, another minimalist distribution, Judd Vinet started Arch Linux in March 2002. Vinet led the project until 1 October 2007, when he stepped down due to lack of time, transferring control of the project to Aaron Griffin.[9]

Design and principles

Arch is largely based around binary packages. Packages are targeted for IA-32 and x86-64 microprocessors to assist performance on modern hardware. A ports/ebuild-like system is also provided for automated source compilation, known as the Arch Build System.

Arch Linux focuses on simplicity of design, meaning that the main focus involves creating an environment that is straightforward and relatively easy for the user to understand directly, rather than providing polished point-and-click style management tools — the package manager, for example, does not have an official graphical front-end. This is largely achieved by encouraging the use of succinctly commented, clean configuration files that are arranged for quick access and editing.[7] This has earned it a reputation as a distribution for "intermediate and advanced Linux users who aren't afraid of the command line".[10]

<templatestyles src="Template:Blockquote/styles.css" />

Relying on complex tools to manage and build your system is going to hurt the end users. [...] "If you try to hide the complexity of the system, you'll end up with a more complex system". Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

— Aaron Griffin[11]

Installation

The Arch Linux website supplies ISO images that can be run from CD or USB. A simple command line script (pacstrap) is used to install the base system.[12] The installation of additional packages, which are not part of the base system (for example, desktop environments), can be done with either pacstrap, or pacman after booting (or chrooting) into the new installation.

An alternative to using CD or USB images for installation is to use the static version of the package manager Pacman, from within another Linux based operating system.[13] The user can mount their newly formatted drive partition, and use pacstrap (or pacman with the appropriate command-line switch) to install base and additional packages with the mountpoint of the destination device as the root for its operations. This method is useful when installing Arch Linux onto USB flash drives, or onto a temporarily mounted device which belongs to another system.

Regardless of the selected installation type, further actions need to be taken before the new system is ready for use, most notably by installing a bootloader, creating an initramfs, and configuring the new system.

Package management

Pacman

To facilitate regular package changes, pacman (abbreviated from "package manager") was developed by Judd Vinet to provide Arch with its own package manager able to track dependencies.[14]

All packages are managed using the pacman package manager. Pacman handles package installation, upgrades, removal and downgrades, and features automatic dependency resolution. The packages for Arch Linux are obtained from the Arch Linux package tree and are compiled for either IA-32 or x86-64 architectures. It uses binary packages in the tar.xz format,[15] with .pkg placed before this to indicate that it is a pacman package (giving .pkg.tar.xz).[16]

Repositories

Currently, the following basic official binary repositories exist:[17]

  • core, which contains all the packages needed to set up a base system
  • extra, which holds packages not required for the base system, including desktop environments and programs
  • community, which contains packages built and voted on by the community; includes packages that have sufficient votes and have been adopted by a "trusted user".
  • multilib, a centralized repository for x86_64 users to more readily support 32-bit applications in a 64-bit environment.

In addition, there also exist testing repositories that include binary package candidates for other repositories. Currently, the following testing repositories exist:

  • testing, with packages for core and extra.
  • community-testing, with packages for community.
  • multilib-testing, with packages for multilib.

The staging and community-staging repositories are used for some rebuilds to avoid broken packages in testing.

The unstable repository was dropped in July 2008 and most of the packages moved to other repositories.[18] In addition to the official repositories, there are a number of unofficial user repositories.

The most well-known unofficial repository is the Arch User Repository, or AUR, hosted on the Arch Linux site. However, the AUR does not host binary packages, hosting instead a collection of build scripts known as PKGBUILDs.

Repository security

Until pacman version 4.0.0[19] Arch Linux's package manager lacked support for signed packages.[20] Packages and metadata were not verified for authenticity by pacman during the download-install process. Without package authentication checking, tampered-with or malicious repository mirrors can compromise the integrity of a system.[21] Pacman 4 allowed verification of the package database and packages, but it was disabled by default. In November 2011 package signing became mandatory for new package builds, and as of 21 March 2012 every official package is signed.[22]

In June 2012, package signing verification became official and is now enabled by default in the installation process.[23][24]

Arch Build System (ABS)

The Arch Build System (ABS) is a ports-like source packaging system that compiles source tarballs into binary packages, which are installed via Pacman.[25] The Arch Build System provides a directory tree of shell scripts, called PKGBUILDs, that enable any and all official Arch packages to be customized and compiled. Rebuilding the entire system using modified compiler flags is also supported by the Arch Build System. The Arch Build System makepkg tool can be used to create custom pkg.tar.xz packages from third-party sources. The resulting packages are also installable and trackable via Pacman.[26]

Arch User Repository (AUR)

In addition to the repositories, the Arch User Repository (AUR) provides user-made PKGBUILD scripts for packages not included in the repositories. These PKGBUILD scripts simplify building from source by explicitly listing and checking for dependencies and configuring the install to match the Arch architecture.[27] Arch User Repository helper programs can further streamline the downloading of PKGBUILD scripts and associated building process. However, this comes at the cost of executing PKGBUILDs not validated by a trusted person; as a result, Arch developers have stated that the utilities for automatic finding, downloading and executing of PKGBUILDs will never be included in the official repositories.[28]

Users can create packages compatible with pacman using the Arch Build System and custom PKGBUILD scripts.[29] This functionality has helped support the Arch User Repository, which consists of user contributed packages to supplement the official repositories.[30]

The Arch User Repository provides the community with packages that are not included in the repositories. Reasons include:

  • License issues: software that cannot be redistributed, but is free to use, can be included in the Arch User Repository since all that is hosted by the Arch Linux website is a shell script that downloads the actual software from elsewhere. Examples include proprietary freeware such as Google Earth and RealPlayer.
  • Modified official packages: the Arch User Repository also contains many variations on the official packaging as well as beta versions of software that is contained within the repositories as stable releases.
  • Rarity of the software: some new or rarely used programs have not been added to the official repositories (yet).

PKGBUILDs for any software can be contributed by ordinary users and any PKGBUILD that is not confined to the Arch User Repository for policy reasons can be voted into the community repositories.

Derivatives

There are multiple distributions which either build on top of Arch Linux or are based on its repositories, including the following:

  • Antergos – a successor of Cinnarch that defaults to GNOME 3, although being capable of installing multiple desktops environments; it uses the stock Arch Linux repositories
  • Apricity OS – an Arch derivative using the Arch Linux repositories, the Pamac graphical package manager, PushBullet, BTSync, the ICE SSB manager, and a modified GNOME environment
  • Arch Hurd – an Arch derivative using a different kernel, GNU Hurd
  • Arch Linux ARM – an Arch Linux derivative that tries to port the distribution to many ARM computers, originated from the developers at ArchMobile and PlugApps; it has succeeded to do so for a decent list of devices using ARMv5, ARMv6 and ARMv7, e.g. BeagleBoard, CuBox-i, PandaBoard, Raspberry Pi or the TrimSlice
  • ArchBang – a variant that uses Openbox as the desktop environment and emphasises speed
  • Chakra – an Arch Linux derivative with emphasis on KDE
  • Frugalware Linux – a Slackware derivative that uses Pacman as its package manager
  • LinHES (Linux Home Entertainment Server) – designed for use on home theater PCs (HTPCs), providing applications for recording TV and acting as a sound and video center
  • Manjaro – an Arch Linux-based distribution with a graphical installer and custom user interface for package managing; besides providing many preconfigured popular desktop environments, it also has its own package repository
  • PacBSD – a FreeBSD derivative, which builds on top of the package system of Arch Linux
  • Parabola GNU/Linux-libre – an Arch-based community distribution that is fully conformant with the GNU Free System Distribution Guidelines, providing a subset of Arch Linux that excludes all non-free software and uses Linux-libre for its lack of proprietary binary blobs

Versions

Rolling releases

Similar to Gentoo, and unlike other major distributions such as Ubuntu and Fedora, Arch Linux does not schedule releases for specific dates but uses a "rolling release" system, with new packages provided daily. Its package management allows users to keep systems up-to-date easily.[31] Rather than encouraging users to move between discrete releases, Arch Linux releases are simply snapshots of the current set of packages, sometimes with revised installation software. Therefore it usually makes no difference from which release Arch gets installed if updates are installed afterwards, but occasionally manual interventions are required for certain updates, with instructions posted on the news section of the Arch Linux website.

Since version 2009.02, the goal is to bring coordinated releases following the pace of Linux kernel releases, in order to provide optimal hardware support. As a result, there is a new release every three or four months.[32] Monthly updated ISO images are released on every first week of a month. As of December 2015, the latest installation image is 2015.12.01, which was released on 1 December 2015.[1]

Other platforms

There are some projects porting the Arch Linux ideas and tools to other kernels: ArchBSD[33] and Arch Hurd,[34] based on FreeBSD and the GNU Hurd kernel respectively. There is also Arch Linux ARM[35] which aims to port Arch Linux to ARM-based devices, including the Raspberry Pi.

See also

Notes

  1. Aaron Griffin is the lead developer of Arch Linux.
  2. 2.0 2.1 For IA-32, lowest supported is the P6 (i686) microarchitecture.
  3. 3.0 3.1 Support for the ARM architecture is unofficial, provided by an Arch Linux derivative called Arch Linux ARM.

References

  1. 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. 7.0 7.1 Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found.
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.

External links