This guide covers installation of GRPM on Gentoo Linux and compatible distributions.
- Requirements
- Pre-built Binary Installation
- Building from Source
- Post-Installation Setup
- Daemon Configuration
- Verification
- Uninstallation
- Troubleshooting
- Operating System: Linux (Gentoo, Calculate Linux, Funtoo, or compatible)
- Architecture: x86_64 (amd64), ARM64, ARMv7, ARMv6, or i386
- Filesystem: Btrfs or ZFS recommended for snapshot support (optional)
- Disk Space: ~50 MB for binary, ~500 MB for build from source
gpg- Required for repository GPG verificationgit- Required for Git-based repository syncrsync- Optional, for rsync-based repository sync
- Go 1.25 or later
- Git
- Make
- GCC (for race detector tests)
# Set version and architecture
VERSION="0.9.4"
ARCH="x86_64" # Options: x86_64, arm64, armv7, armv6, i386
# Download binary
wget "https://github.com/grpmsoft/grpm/releases/download/v${VERSION}/grpm_${VERSION}_linux_${ARCH}.tar.gz"
# Download checksums
wget "https://github.com/grpmsoft/grpm/releases/download/v${VERSION}/checksums.txt"
# Verify checksum
sha256sum -c checksums.txt --ignore-missing
# Extract
tar -xzf "grpm_${VERSION}_linux_${ARCH}.tar.gz"
# Install binary
sudo install -m 0755 grpm /usr/bin/grpm
# Verify installation
grpm -V| Architecture | Filename | Description |
|---|---|---|
| x86_64 | grpm_*_linux_x86_64.tar.gz |
64-bit Intel/AMD (most common) |
| ARM64 | grpm_*_linux_arm64.tar.gz |
64-bit ARM (Apple Silicon, AWS Graviton) |
| ARMv7 | grpm_*_linux_armv7.tar.gz |
32-bit ARM with hardware float |
| ARMv6 | grpm_*_linux_armv6.tar.gz |
Raspberry Pi Zero/1 |
| i386 | grpm_*_linux_i386.tar.gz |
32-bit Intel/AMD |
# Clone repository
git clone https://github.com/grpmsoft/grpm.git
cd grpm
# Build
make build
# Run tests (recommended)
make test
# Install to /usr/bin
sudo make install
# Verify
grpm -V# Build with version information
make build VERSION=0.1.0
# Build for specific platform
GOOS=linux GOARCH=arm64 make build
# Build with race detector (development)
go build -race -o bin/grpm ./cmd/grpm
# Clean build
make clean && make build# Full development workflow
make dev # fmt, lint, test, build
# Individual steps
make fmt # Format code
make lint # Run linter
make test # Run tests
make build # Build binaryGRPM uses the standard Gentoo repository location:
# Check repository exists
ls /var/db/repos/gentoo
# If not present, sync using traditional emerge
sudo emerge --sync
# Or use GRPM to sync
sudo grpm sync# Import Gentoo release keys
sudo wget -O /usr/share/openpgp-keys/gentoo-release.asc \
https://qa-reports.gentoo.org/output/service-keys.gpg
# Or install via Portage
sudo emerge app-crypt/gentoo-keys# Create binary package cache directory
sudo mkdir -p /var/cache/binpkgs
# Set permissions
sudo chown root:portage /var/cache/binpkgs
sudo chmod 775 /var/cache/binpkgs# Create distfiles directory if needed
sudo mkdir -p /var/cache/distfiles
# Set permissions
sudo chown root:portage /var/cache/distfiles
sudo chmod 775 /var/cache/distfilesGRPM includes a daemon mode for background operations and API access.
Note: The daemon is functional scaffolding. Production hardening (health checks, graceful shutdown, connection pooling) is planned for v0.11.0. For production use, monitor the process externally.
# Start daemon
sudo grpm daemon
# Check status
grpm statusCreate /etc/init.d/grpmd:
#!/sbin/openrc-run
name="GRPM Daemon"
description="Go Resource Package Manager Daemon"
command="/usr/bin/grpm"
command_args="daemon"
command_background=true
pidfile="/var/run/grpm.pid"
depend() {
need localmount
after bootmisc
}Enable and start:
sudo chmod +x /etc/init.d/grpmd
sudo rc-update add grpmd default
sudo rc-service grpmd startCreate /etc/systemd/system/grpmd.service:
[Unit]
Description=GRPM Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/grpm daemon
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl daemon-reload
sudo systemctl enable grpmd
sudo systemctl start grpmd# Version information
grpm -V
# Daemon status
grpm status
# Search for a package
grpm search hello
# Show package info
grpm info app-misc/hello
# Resolve dependencies (dry-run)
grpm resolve --pretend app-misc/hello# Use mock repository for testing
grpm resolve --mock sys-libs/zlib
grpm info --mock app-misc/hello# Test sync (creates backup first)
sudo grpm sync --pretend
# Test installation (dry-run)
sudo grpm install --pretend app-misc/hello
# Test emerge (dry-run)
sudo grpm emerge --pretend app-misc/hello# Stop daemon if running
sudo rc-service grpmd stop 2>/dev/null
sudo systemctl stop grpmd 2>/dev/null
# Remove binary
sudo rm /usr/bin/grpm
# Remove service files (OpenRC)
sudo rm /etc/init.d/grpmd
sudo rc-update del grpmd default
# Remove service files (systemd)
sudo rm /etc/systemd/system/grpmd.service
sudo systemctl daemon-reload
# Remove PID file
sudo rm -f /var/run/grpm.pid /var/run/grpm.sockcd /path/to/grpm
make cleanGRPM requires root privileges for package installation:
sudo grpm install <package>Ensure the Gentoo repository exists:
ls /var/db/repos/gentoo
# If missing, sync:
sudo grpm sync
# Or: sudo emerge --syncImport Gentoo release keys:
sudo emerge app-crypt/gentoo-keysOr skip verification (not recommended):
sudo grpm sync --skip-gpg-verifyCheck if daemon is running:
grpm status
# Start daemon if needed
sudo grpm daemon &Enable verbose output for troubleshooting:
# Single -v for basic verbose
grpm -v sync
# Double -vv for more detail
grpm -vv resolve app-misc/hello
# Triple -vvv for maximum verbosity
grpm -vvv install --pretend app-misc/hello
# Environment variable
GRPM_VERBOSE=1 grpm sync- Daemon logs: Check syslog or journal
- Build logs:
/var/tmp/portage/<category>/<package>/temp/build.log
- GitHub Issues: https://github.com/grpmsoft/grpm/issues
- Documentation: https://github.com/grpmsoft/grpm/tree/main/docs
| Variable | Description | Default |
|---|---|---|
GRPM_VERBOSE |
Enable verbose output (1=on) | 0 |
GRPM_SOCKET |
Daemon socket path | /var/run/grpm.sock |
- CLI Reference - Complete command documentation
- README - Project overview
- CONTRIBUTING - Development guidelines