Skip to content
/ grpm Public

Next-generation package manager for Gentoo Linux. SAT-based dependency resolution, native sync, binary packages, daemon architecture. Drop-in Portage replacement written in Go.

License

Notifications You must be signed in to change notification settings

grpmsoft/grpm

GRPM

GRPM - Go Resource Package Manager

Next-generation Source-based Package Manager

GitHub Release Go Version Go Reference CI Go Report Card License GitHub Stars GitHub Issues

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


Features

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

Quick Start

Install from Binary

# 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

Build from Source

# Requires Go 1.25+
git clone https://github.com/grpmsoft/grpm.git
cd grpm
make build
sudo make install

Basic Usage

# 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 --missing

See docs/CLI_REFERENCE.md for complete command reference.


Architecture

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

Supported Platforms

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.


Documentation

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

Development

make build      # Build binary
make test       # Run tests
make lint       # Run linter
make fmt        # Format code
make ci         # Full CI checks

See CONTRIBUTING.md for development guidelines and AGENTS.md for AI-assisted development.


Roadmap

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.


Security

To report security vulnerabilities, please see SECURITY.md.

Do not open public issues for security reports.


Community


License

GRPM is licensed under the Apache License 2.0.

Copyright 2025 Andrey Kolkov and GRPM contributors

About

Next-generation package manager for Gentoo Linux. SAT-based dependency resolution, native sync, binary packages, daemon architecture. Drop-in Portage replacement written in Go.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages