Package format

Last updated

Package format is a type of archive containing computer programs and additional metadata needed by package managers; [1] an instance of this type of archive is called a package. While the archive file format itself may be unchanged, package formats carry additional metadata, such as a manifest file or certain directory layouts. Packages may contain either source code or executable files.

Contents

Packages may be converted from one type to another with software such as Alien.

Software supply chain and security

Packages are an important component in managing the security and integrity of the software supply chain. Packages containing executables and configuration can be digitally signed to establish the integrity of running software and protect against tampering. [2]

Package formats that support code signing include .deb (Debian), .msi (Microsoft Windows), .apk (Android) and .ipa (IOS, IPadOS).

Common formats

Specialized formats

FormatConsumed by
AIR Adobe AIR
Bottle Homebrew

BSD-based formats

FormatConsumed by
.ipa IOS, IPadOS
Ports (BSD) pkgsrc, FreeBSD, OpenBSD [3]
PKG macOS, iOS, PlayStation 3, Solaris, SunOS, UNIX System V, Symbian, BeOS, Apple Newton

Linux-based formats

FormatConsumed by
AAB Android
APK (Alpine) Alpine Linux [4]
APK (Android) Android
AppImage Linux distribution-agnostic
Deb Debian and its derivatives, such as Raspberry Pi OS, Kali Linux, Ubuntu, and Linux Mint [5]
ebuild Gentoo Linux [6]
eopkg Solus [7]
Nixpkg Nix, NixOS, Home Manager
Portage Gentoo Linux, ChromeOS [8]
Flatpak Linux distribution-agnostic
.app, .hap HarmonyOS, OpenHarmony, Oniro OS and Linux based Unity Operating System
PISI Pardus
.pkg.tar.zst Arch Linux
PUP and PET Puppy Linux (PUP format is deprecated since version 3.0)
RPM Red Hat Enterprise Linux, Fedora, derivatives such as CentOS, [9] and SUSE Linux Enterprise, openSUSE
Snap Linux distribution-agnostic, mainly developed for Ubuntu

Windows formats

FormatConsumed by
APPX and APPXBundle Windows 8 and later, Windows Phone [10]
Windows Installer package / MSI Windows Installer on Microsoft Windows

Generic formats

Arch Linux's Pacman [11] and Slackware [12] use 'tar' archives with generic naming but specific internal structures.

Related Research Articles

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. They are often obtained from the website of each distribution, which are available for a wide variety of systems ranging from embedded devices and personal computers to servers and powerful supercomputers.

<span class="mw-page-title-main">Slackware</span> Linux distribution (operating system)

Slackware is a Linux distribution created by Patrick Volkerding in 1993. Originally based on Softlanding Linux System (SLS), Slackware has been the basis for many other Linux distributions, most notably the first versions of SUSE Linux distributions, and is the oldest distribution that is still maintained.

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

<span class="mw-page-title-main">APT (software)</span> Free software package management system

Advanced package tool, or APT, is a free-software user interface that works with core libraries to handle the installation and removal of software on Debian and Debian-based Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

deb is the format, as well as filename extension of the software package format for the Debian Linux distribution and its derivatives.

Puppy Linux is a family of light-weight Linux distributions that focus on ease of use and minimal memory footprint. The entire system can be run from random-access memory (RAM) with current versions generally taking up about 600 MB (64-bit), 300 MB (32-bit), allowing the boot medium to be removed after the operating system has started. Applications such as AbiWord, Gnumeric and MPlayer are included, along with a choice of lightweight web browsers and a utility for downloading other packages. The distribution was originally developed by Barry Kauler and other members of the community, until Kauler retired in 2013. The tool Woof can build a Puppy Linux distribution from the binary packages of other Linux distributions.

Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security, including how quickly security upgrades are available; ease of package management; and number of packages available.

slapt-get

slapt-get is an APT-like package management system for Slackware. Slapt-get tries to emulate the features of Debian's (apt-get) as closely as possible.

<span class="mw-page-title-main">VectorLinux</span> Linux distribution

VectorLinux, abbreviated VL, was a Linux distribution for the x86 platform based on the Slackware Linux distribution, originally developed by Canadian developers Robert S. Lange and Darell Stavem. Since version 7 the Standard Edition is also available for the x86-64 platform, known as VLocity64 7.

<span class="mw-page-title-main">Portable application</span> Type of computer program

A portable application, sometimes also called standalone software, is a computer program designed to operate without changing other files or requiring other software to be installed. In this way, it can be easily added to, run, and removed from any compatible computer without setup or side-effects.

<span class="mw-page-title-main">CNR (software)</span>

CNR, or One-Click & Run, was a free one-click software delivery service that was created to make finding and installing Linux software easier. It assisted the user in finding and installing software on their computer, and sat dormant in the system tray when not in use.

A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called "packages".

authbind is an open-source system utility written by Ian Jackson and is distributed under the GNU General Public License. The authbind software allows a program that would normally require superuser privileges to access privileged network services to run as a non-privileged user. authbind allows the system administrator to permit specific users and groups access to bind to TCP and UDP ports below 1024. Ports 0 - 1023 are normally privileged and reserved for programs that are run as the root user. Allowing regular users limited access to privileged ports helps prevent possible privilege escalation and system compromise if the software happens to contain software bugs or is found to be vulnerable to unknown exploits.

<span class="mw-page-title-main">RPM Package Manager</span> Package management system

RPM Package Manager (RPM) is a free and open-source package management system. The name RPM refers to the .rpm file format and the package manager program itself. RPM was intended primarily for Linux distributions; the file format is the baseline package format of the Linux Standard Base.

<span class="mw-page-title-main">Zim (software)</span> Personal wiki software written in Python

Zim is a graphical text editor designed to maintain a collection of locally stored wiki-pages, a personal wiki. It works as a personal knowledge base and note-taking software application that operates on text files using markdown. Each wiki-page can contain things like text with simple formatting, links to other pages, attachments, and images. Additional plugins, such as an equation editor and spell-checker, are also available. The wiki-pages are stored in a folder structure in plain text files with wiki formatting. Zim can be used with the Getting Things Done method.

<span class="mw-page-title-main">OpenZFS</span> Open-source implementation of the ZFS file system

OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems for the Solaris operating system, and is now maintained by the OpenZFS Project. Similar to the original ZFS, the implementation supports features like data compression, data deduplication, copy-on-write clones, snapshots, RAID-Z, and virtual devices that can create filesystems that span multiple disks.

<span class="mw-page-title-main">Snap (software)</span> Software deployment system for Linux by Canonical

Snap is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel and the systemd init system. The packages, called snaps, and the tool for using them, snapd, work across a range of Linux distributions and allow upstream software developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system. Snap was originally released for cloud applications but was later ported to also work for Internet of Things devices and desktop applications.

<span class="mw-page-title-main">Lector (software)</span>

Lector is a free e-book reading application for desktop Linux systems that also has basic collection management features.

References

  1. Justin Angelo Cappos, Stork: Secure Package Management for VM Environments [ permanent dead link ], ProQuest, 2008, p. 128;
  2. Cooper, David; Feldman, Larry; Witte, Gregory (May 23, 2018). "Protecting Software Integrity Through Code Signing". National Institute of Standards and Technology . ITL Bulletin.
  3. "Ports - Working with Ports". OpenBSD.org.
  4. "Alpine package format - Alpine Linux". wiki.alpinelinux.org. Retrieved May 19, 2016.
  5. "InstallingSoftware - Community Ubuntu Documentation". Help.ubuntu.com. Retrieved April 24, 2013.
  6. "ebuild" . Retrieved July 29, 2015.
  7. "Basics to Package Management" . Retrieved May 1, 2020.
  8. "Using Portage to Manage Packages in Gentoo". linode.com. July 15, 2021.
  9. "rpm - Trac" . Retrieved September 29, 2014.
  10. "App packaging" . Retrieved September 29, 2014.
  11. "makepkg.conf(5) Manual Page".
  12. "The Slackware Linux Project: Configuration Help" . Retrieved September 29, 2014.