Next-generation Source-based Package Manager
GRPM (Go Resource Package Manager) is a modern source-based package manager written in Go, inspired by and fully compatible with Gentoo's Portage. It brings SAT-based dependency resolution, transactional updates with filesystem snapshots, and binary package support. While rooted in the Gentoo ecosystem, GRPM is designed to be distribution-agnostic and extensible for any Linux distribution.
Current Version: Latest Release
| Feature | Description |
|---|---|
| SAT-based Dependency Resolution | Boolean satisfiability solver for guaranteed conflict-free resolution |
| Binary Package Support | Full GPKG (.gpkg.tar) and legacy TBZ2 (.tbz2) format support |
| Transactional Updates | Btrfs/ZFS snapshot-based rollbacks for safe system updates |
| Source Building | Complete ebuild execution with autotools, CMake, and Meson |
| Build Systems | cmake.eclass, meson.eclass, toolchain-funcs, flag-o-matic |
| Language Ecosystems | Python (distutils-r1), Rust (cargo.eclass), Go (go-module.eclass) |
| Multilib Support | 32-bit/64-bit library support with ABI management |
| Package Sets | @world, @system, @selected, @preserved-rebuild |
| Distfile Fetching | Automatic source downloading with mirror failover |
| Coverage Analysis | Repository compatibility analysis with grpm analyze |
| Tool Detection | External tool checking with grpm tools |
| Daemon Architecture | gRPC + REST API for background operations |
| Portage-Style Output | Professional colored logging matching emerge output |
| Repository Sync | Native rsync and Git sync with GPG verification |
| Virtual Packages | Provider selection with configuration support |
| Metadata Caching | SQLite-backed cache for fast package lookups |
| Configuration Management | Dynamic make.conf, repos.conf, package.use with full Portage compatibility |
# Download latest release
wget https://github.com/grpmsoft/grpm/releases/latest/download/grpm_linux_amd64.tar.gz
tar -xzf grpm_linux_amd64.tar.gz
sudo install -m 0755 grpm /usr/bin/grpm
# Verify
grpm -V# Requires Go 1.25+
git clone https://github.com/grpmsoft/grpm.git
cd grpm
make build
sudo make install# Sync repository
sudo grpm sync
# Search packages
grpm search firefox
# Show package info
grpm info dev-lang/go
# Download sources (without building)
grpm fetch app-misc/hello
# Build from source (auto-fetches sources)
sudo grpm emerge app-misc/hello
# Build specific version (PMS-compliant atoms)
sudo grpm emerge "=sys-devel/gcc-13.4.1_p20250807"
sudo grpm emerge ">=dev-libs/openssl-3.0"
# Build to alternative root (chroot, stage tarball)
sudo grpm emerge --root /mnt/gentoo app-misc/hello
# Build dependencies only (useful for Docker layer caching)
sudo grpm emerge --onlydeps app-misc/hello
# Install from binary
sudo grpm install --binpkg app-misc/hello
# Remove package
sudo grpm remove app-misc/hello
# Analyze repository coverage
grpm analyze --category app-misc
# Check available tools
grpm tools --missingSee docs/CLI_REFERENCE.md for complete command reference.
See docs/ARCHITECTURE.md for the complete system diagram.
GRPM operates as a single binary in two modes:
grpm
├── CLI Mode (default)
│ ├── Package: resolve, install, emerge, remove, search, info
│ ├── Repository: sync, fetch
│ └── Analysis: analyze, tools
│
└── Daemon Mode (grpm daemon)
├── gRPC Server (unix:///var/run/grpm.sock)
├── REST API (unix:///var/run/grpm-rest.sock)
└── Job Queue with conflict detection
Design Principles:
- Domain-Driven Design — Clean separation of domain, application, and infrastructure
- SAT Solver — Guaranteed conflict-free dependency resolution
- Portage Compatibility — Standard Gentoo paths and formats
- Transactional Safety — Filesystem snapshots before destructive operations
| Platform | Architecture | Status |
|---|---|---|
| Linux | x86_64 (amd64) | Primary |
| Linux | ARM64 | Supported |
| Linux | ARMv7, ARMv6 | Supported |
| Linux | i386 | Supported |
Primary target: Gentoo Linux and compatible distributions (Calculate, Funtoo).
Designed for: Any Linux distribution seeking source-based package management.
| Document | Description |
|---|---|
| Architecture | System architecture diagram |
| Installation Guide | Detailed installation instructions |
| CLI Reference | Complete command documentation |
| PMS Reference | Gentoo Package Manager Specification |
| Contributing | Development guidelines |
| Changelog | Version history |
| Roadmap | Future plans |
make build # Build binary
make test # Run tests
make lint # Run linter
make fmt # Format code
make ci # Full CI checksSee CONTRIBUTING.md for development guidelines and AGENTS.md for AI-assisted development.
Active Development
Rapid development complete. Infrastructure, build quality, and security hardening done. Now focusing on full Portage configuration compatibility. 98.2% tree coverage on real Gentoo!
Completed Features:
- ✅ SAT-based dependency resolution
- ✅ Full ebuild execution (autotools, CMake, Meson)
- ✅ Language ecosystems (Python, Rust, Go)
- ✅ Multilib support (32-bit/64-bit)
- ✅ Binary package support (GPKG, TBZ2)
- ✅ Repository sync (rsync, git) with GPG verification
- ✅ Portage-style logging with colored output
- ✅ Verbose modes (
-v,-vv,-vvv) for debugging - ✅ Dynamic make.conf parsing with variable expansion
- ✅ repos.conf support with Portage fallback chain
- ✅ package.use pattern matching with atom specificity
v1.0.0 — Production ready after community validation (no fixed date).
See CHANGELOG.md for full release history.
To report security vulnerabilities, please see SECURITY.md.
Do not open public issues for security reports.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
GRPM is licensed under the Apache License 2.0.
Copyright 2025 Andrey Kolkov and GRPM contributors
