Package format

Last updated

A package format (AKA Package) is a type of archive containing computer programs and additional metadata needed by package managers. [1] While the archive file format itself may be unchanged, package formats bear 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 Development Lifecycle

Packages are important artifacts produced during the implementation phase of the Software Development Lifecycle (SDLC) . They are the products of the implementation phase, used during Customer Acceptance Testing and Service phases to determine if the software is viable to be put into service.

Package artifacts provide a reproducible configuration, allowing for quality (customer) acceptance teams to validate a software component as ready for service to customers. [2]

Software Supply Chain and Security

Packages are an important component in managing the security and integrity of the software supply chain. Packages containing executables & configuration can be digitally signed (see Code signing) to establish the integrity of running software and protect against tampering. [3]

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

Common formats

Specialized formats

FormatConsumed by
AAB Android
AIR Adobe AIR
APK (Alpine) Alpine Linux [4]
APK (Android) Android
AppImage Linux distribution-agnostic.
APPX and APPXBundle Windows 8 and later, Windows Phone [5]
Bottle Homebrew
Deb Debian and its derivatives, such as Raspberry Pi OS, Kali Linux, Ubuntu, and Linux Mint [6]
ebuild Gentoo Linux [7]
eopkg Solus [8]
.ipa IOS, IPadOS
nixpkgNix, NixOS, Home Manager
Portage Gentoo Linux, ChromeOS [9]
Ports (BSD) OpenBSD [10]
Flatpak Linux distribution-agnostic.
.app, .hap HarmonyOS, OpenHarmony, Oniro OS and Linux based Unity Operating System
PISI Pardus
PKG macOS, iOS, PlayStation 3, Solaris, SunOS, UNIX System V, Symbian, BeOS, Apple Newton
.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, [11] and SUSE Linux Enterprise Server, openSUSE
Snap Linux distribution-agnostic, mainly developed for Ubuntu
Windows Installer package / MSI Windows Installer on Microsoft Windows

Generic formats

Arch Linux's Pacman [12] and Slackware [13] 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. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices and personal computers to 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.

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

<span class="mw-page-title-main">Systems development life cycle</span> Systems engineering terms

In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an information system. The SDLC concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.

Installation of a computer program, is the act of making the program ready for execution. Installation refers to the particular configuration of software or hardware with a view to making it usable with the computer. A soft or digital copy of the piece of software (program) is needed to install it. There are different processes of installing a piece of software (program). Because the process varies for each program and each computer, programs often come with an installer, a specialised program responsible for doing whatever is needed for the installation. Installation may be part of a larger software deployment process.

Puppy Linux is an operating system and 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.

Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by The Apache Software Foundation, where it was formerly part of the Jakarta Project.

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.

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

VectorLinux, abbreviated VL, is 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.

Software deployment is all of the activities that make a software system available for use.

Open-source software development (OSSD) is the process by which open-source software, or similar software whose source code is publicly available, is developed by an open-source software project. These are software products available with its source code under an open-source license to study, change, and improve its design. Examples of some popular open-source software products are Mozilla Firefox, Google Chromium, Android, LibreOffice and the VLC media player.

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

A portable application, sometimes also called standalone, is a 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">Software remastering</span>

Software remastering is software development that recreates system software and applications while incorporating customizations, with the intent that it is copied and run elsewhere for "off-label" usage. The term comes from remastering in media production, where it is similarly distinguished from mere copying.

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".

<span class="mw-page-title-main">Wubi (software)</span> Ubuntu Linux installer for Windows

Wubi is a free software Ubuntu installer, that was the official Windows-based software, from 2008 until 2013, to install Ubuntu from within Windows, to a single file within an existing Windows partition.

Knowledge Discovery Metamodel (KDM) is a publicly available specification from the Object Management Group (OMG). KDM is a common intermediate representation for existing software systems and their operating environments, that defines common metadata required for deep semantic integration of Application Lifecycle Management tools. KDM was designed as the OMG's foundation for software modernization, IT portfolio management and software assurance. KDM uses OMG's Meta-Object Facility to define an XMI interchange format between tools that work with existing software as well as an abstract interface (API) for the next-generation assurance and modernization tools. KDM standardizes existing approaches to knowledge discovery in software engineering artifacts, also known as software mining.

Microsoft Application Virtualization is an application virtualization and application streaming solution from Microsoft. It was originally developed by Softricity, a company based in Boston, Massachusetts, acquired by Microsoft on July 17, 2006. App-V represents Microsoft's entry to the application virtualization market, alongside their other virtualization technologies such as Hyper-V, Microsoft User Environment Virtualization (UE-V), Remote Desktop Services, and System Center Virtual Machine Manager.

XZ Utils is a set of free software command-line lossless data compressors, including the programs lzma and xz, for Unix-like operating systems and, from version 5.0 onwards, Microsoft Windows. For compression/decompression the Lempel–Ziv–Markov chain algorithm (LZMA) is used. XZ Utils started as a Unix port of Igor Pavlov's LZMA-SDK that has been adapted to fit seamlessly into Unix environments and their usual structure and behavior.

<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. "What is the software development lifecycle (SDLC)? Phases and models".
  3. "Protecting Software Integrity Through Code Signing". nist.gov.
  4. "Alpine package format - Alpine Linux". wiki.alpinelinux.org. Retrieved May 19, 2016.
  5. "App packaging" . Retrieved September 29, 2014.
  6. "InstallingSoftware - Community Ubuntu Documentation". Help.ubuntu.com. Retrieved April 24, 2013.
  7. "ebuild" . Retrieved July 29, 2015.
  8. "Basics to Package Management" . Retrieved May 1, 2020.
  9. "Using Portage to Manage Packages in Gentoo". linode.com.
  10. "Ports - Working with Ports". OpenBSD.org.
  11. "rpm - Trac" . Retrieved September 29, 2014.
  12. "makepkg.conf(5) Manual Page".
  13. "The Slackware Linux Project: Configuration Help" . Retrieved September 29, 2014.