ALPM
This project comprises specifications, as well as Rust libraries and tools for Arch Linux Package Management.
The ALPM project arose from the need for more clearly specifying the interfaces, as well as providing bindings and tools in a memory-safe programming language.
The specifications and implementations are based on ad-hoc implementations in the pacman project.
Currently, this project aims to maintain compatibility with pacman 5.1.0 and onwards.
The scope of this project is to provide robust integration for all relevant package creation and consumption, as well as repository management tasks. As such, the ALPM project also aims at providing drop-in replacements or alternatives for some facilities provided by pacman.
This project has been financed by the Sovereign Tech Agency. Read the official announcement for more information.
Documentation
The latest project documentation can be found at https://alpm.archlinux.page
Documentation for all current ALPM lints is available at https://alpm.archlinux.page/lints/
Overview
The following mindmap attempts to provide a high-level overview of the project and put file types as well as (existing and upcoming) libraries into context.
mindmap
root((ALPM))
π Source
π PKGBUILD
π .SRCINFO
ποΈ alpm-pkgbuild
β¨οΈ/ποΈ alpm-srcinfo
π¦ Package
π .BUILDINFO
π .INSTALL
π .MTREE
π .PKGINFO
β¨οΈ/ποΈ alpm-buildinfo
β¨οΈ/ποΈ alpm-mtree
ποΈ alpm-package
β¨οΈ/ποΈ alpm-pkginfo
β¨οΈ/ποΈ alpm-soname
ποΈ Repository
π desc
π files
β¨οΈ/ποΈ alpm-repo-db
ποΈ Package Management
π desc
π files
β¨οΈ/ποΈ alpm-db
β
οΈ Linting
β¨οΈ/ποΈ alpm-lint
π¬ Language bindings
π python-alpm
π οΈ Utils
ποΈ alpm-common
ποΈ alpm-compress
ποΈ alpm-parsers
For an overview of planned specifications and components, refer to the milestones of the project.
Components
Currently the following software components are available:
- alpm-buildinfo: a library and command line interface to work with BUILDINFO(5) files
- alpm-common: a library for common traits and functionality
- alpm-compress: a library for compression operations in ALPM
- alpm-db: a library and command line interface to work with an alpm-db(7) and its alpm-db-desc(5) and alpm-db-files(5) file formats
- alpm-lint: a linting tool for everything around Arch Linux packaging.
- alpm-mtree: a library and command line interface to work with ALPM-MTREE(5) files
- alpm-package: a library for the creation of alpm-package(7) files
- alpm-parsers: a library for providing various custom parsers/deserializers for file types used in ALPM
- alpm-pkginfo: a library and command line interface to work with PKGINFO(5) files
- alpm-repo-db: a library and command line interface to work with an alpm-repo-db(7) and its alpm-repo-desc(5) and alpm-repo-files(5) file formats
- alpm-soname: a library and command line interface for looking up soname data
- alpm-srcinfo: a library and command line interface to work with SRCINFO(5) files
- alpm-types: a central library for types used by other ALPM libraries and tools
- python-alpm: Python bindings for ALPM crates and the python-alpm Python library
Contributing
Please refer to the contribution guidelines to learn how to contribute to this project.
Releases
Releases of components are created by the developers of this project.
OpenPGP certificates with the following OpenPGP fingerprints can be used to verify signed tags:
991F6E3F0765CF6295888586139B09DA5BF0D338(David Runge <dvzrv@archlinux.org>)165E0FF7C48C226E1EC363A7F83424824B3E4B90(Orhun ParmaksΔ±z <orhun@archlinux.org>)
The above are part of archlinux-keyring and certified by at least three main signing keys of the distribution.
License
This project can be used under the terms of the Apache-2.0 or MIT. Contributions to this project, unless noted otherwise, are automatically licensed under the terms of both of those licenses.