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.
The latest project documentation can be found at https://alpm.archlinux.page
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-srcinfo*
📦 Package
📄 .BUILDINFO
📄 .PKGINFO
📄 .INSTALL
📄 .MTREE
📚️ alpm-buildinfo
📚️ alpm-pkginfo*
📚️ alpm-mtree*
📚️ alpm-package*
📚️ alpm-package-verify*
📚️ alpm-package-verify-vda*
🗄️ Repository
📄 desc
📄 files
📚️ alpm-repo*
📚️ alpm-repo-desc*
📚️ alpm-repo-files*
🗄️ Package Management
📄 desc
📄 files
📚️ alpm-db*
📚️ alpm-db-desc*
📚️ alpm-db-download*
📚️ alpm-db-files*
📚️ alpm-db-verify*
📚️ alpm-db-verify-vda*
For an overview of planned specifications and components, refer to the milestones of the project.
[*] Not yet implemented, or subject to change.
Currently the following components are available:
- alpm-mtree: a library and commandline interface to work with
.MTREE
andmtree
files - alpm-buildinfo: a library and commandline interface to work with
BUILDINFO
files - alpm-parsers: a library for providing various custom parsers/deserializers for file types used in ALPM
- alpm-types: a central library for types used by other ALPM libraries and tools
Please refer to the contribution guidelines to learn how to contribute to this project.
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.