This document explains how to distribute pvetui through various package managers including AUR, Homebrew, Scoop, and traditional package formats (DEB/RPM).
pvetui is distributed through multiple channels to reach users on different platforms:
- GitHub Releases: Direct binary downloads for all platforms
- AUR (Arch User Repository): For Arch Linux and derivatives
- Homebrew Tap: For macOS and Linux users
- Scoop Bucket: For Windows users
- DEB/RPM Packages: Traditional Linux package formats
- Docker Images: Containerized distribution
Before setting up package managers, ensure you have:
- Git installed and configured
- GitHub CLI installed and authenticated
- GoReleaser installed (for automated releases)
- Platform-specific tools (see individual sections below)
Use the orchestration script to manage all package managers:
# Set up all package managers
./scripts/package-managers.sh setup
# Check status
./scripts/package-managers.sh status
# Update all to a specific version
./scripts/package-managers.sh update -v 0.6.0
# Create a complete release
./scripts/package-managers.sh release -v 0.6.0Or use Makefile targets:
# Set up all package managers
make package-managers-setup
# Check status
make package-managers-status
# Update all to a specific version
make package-managers-update VERSION=v0.6.0
# Create a complete release
make package-managers-release VERSION=v0.6.0The Arch User Repository is a community-driven repository for Arch Linux and derivatives. Users can install packages using yay, paru, or makepkg.
-
Clone the AUR repository:
./scripts/aur-package.sh setup
-
Update package information:
./scripts/aur-package.sh update -v 0.6.0
-
Build and test locally:
./scripts/aur-package.sh build ./scripts/aur-package.sh install
If you prefer manual setup:
# Clone AUR repository
yay -G pvetui
cd pvetui
# Or clone manually
git clone https://aur.archlinux.org/pvetui.git
cd pvetuiThe PKGBUILD file will be created automatically with the correct dependencies and installation paths.
- Update the
PKGBUILDwith the new version - Test the package:
makepkg -si - Commit and push changes to your AUR repository
- Users can install with:
yay -S pvetui
Homebrew is a package manager for macOS and Linux. A "tap" is a third-party repository that extends Homebrew's package collection.
-
Set up the tap repository:
./scripts/homebrew-tap.sh setup
-
Update formula:
./scripts/homebrew-tap.sh update -v 0.6.0
-
Test locally:
./scripts/homebrew-tap.sh test ./scripts/homebrew-tap.sh install
# Clone tap repository
git clone https://github.com/devnullvoid/homebrew-pvetui.git
cd homebrew-pvetui
# Create Formula directory
mkdir -p Formula
# Create formula file (see scripts/homebrew-tap.sh for template)- Update the formula with new version and checksums
- Test:
brew audit --strict Formula/pvetui.rb - Commit and push changes
- Users can install with:
brew install devnullvoid/pvetui/pvetui
Scoop is a command-line installer for Windows that simplifies the installation of developer tools.
-
Set up the bucket repository:
./scripts/scoop-bucket.sh setup
-
Update manifest:
./scripts/scoop-bucket.sh update -v 0.6.0
-
Test locally:
./scripts/scoop-bucket.sh test ./scripts/scoop-bucket.sh install
# Clone bucket repository
git clone https://github.com/devnullvoid/scoop-pvetui.git
cd scoop-pvetui
# Create bucket directory
mkdir -p bucket
# Create manifest file (see scripts/scoop-bucket.sh for template)- Update the manifest with new version and checksums
- Test:
scoop install pvetui - Commit and push changes
- Users can install with:
scoop bucket add devnullvoid/pvetui && scoop install pvetui
DEB and RPM are traditional Linux package formats used by Debian/Ubuntu and Red Hat/CentOS respectively.
These packages are automatically generated by GoReleaser when you create a release. The configuration is in .goreleaser.yaml.
- Create a git tag:
git tag v0.6.0 - Push the tag:
git push origin v0.6.0 - GoReleaser will automatically:
- Build binaries for all platforms
- Create DEB and RPM packages
- Upload to GitHub releases
Docker images provide a containerized way to run pvetui in any environment that supports Docker.
Docker images are automatically built and published by GoReleaser. The configuration is in .goreleaser.yaml.
# Pull the latest image
docker pull ghcr.io/devnullvoid/pvetui:latest
# Run the container
docker run -it --rm ghcr.io/devnullvoid/pvetui:latest
# Run with specific version
docker run -it --rm ghcr.io/devnullvoid/pvetui:v0.6.0-
Prepare the release:
# Update CHANGELOG.md # Commit changes git add CHANGELOG.md git commit -m "chore: prepare release v0.6.0"
-
Create and push tag:
git tag v0.6.0 git push origin v0.6.0
-
Automated release (recommended):
- GitHub Actions will trigger GoReleaser
- All packages will be built and uploaded
- Package manager repositories can be updated
-
Manual package manager updates:
# Update all package managers ./scripts/package-managers.sh update -v 0.6.0 # Or update individually ./scripts/aur-package.sh update -v 0.6.0 ./scripts/homebrew-tap.sh update -v 0.6.0 ./scripts/scoop-bucket.sh update -v 0.6.0
Test your release process without making changes:
./scripts/package-managers.sh release -v 0.6.0 -dAfter setup, your workspace will contain:
pvetui/
├── .goreleaser.yaml # GoReleaser configuration
├── scripts/
│ ├── aur-package.sh # AUR management script
│ ├── homebrew-tap.sh # Homebrew tap management
│ ├── scoop-bucket.sh # Scoop bucket management
│ └── package-managers.sh # Orchestration script
├── pvetui/ # AUR repository (after setup)
├── homebrew-pvetui/ # Homebrew tap (after setup)
└── scoop-pvetui/ # Scoop bucket (after setup)
-
Missing tools:
- Install required tools for your platform
- Use
./scripts/package-managers.sh statusto check prerequisites
-
Authentication issues:
- Ensure GitHub CLI is authenticated:
gh auth login - Check repository permissions
- Ensure GitHub CLI is authenticated:
-
Version mismatches:
- Ensure git tag matches the version you're releasing
- Use
git describe --exact-match --tags HEADto verify
-
Package build failures:
- Check platform-specific requirements
- Verify binary downloads are accessible
- Review package manager logs
- Check the individual script help:
./scripts/aur-package.sh help - Review GoReleaser documentation: https://goreleaser.com/
- Check package manager documentation for your platform
- Version consistency: Always use the same version across all package managers
- Testing: Test packages locally before publishing
- Automation: Use the orchestration scripts to reduce manual errors
- Documentation: Keep this guide updated as processes change
- Backup: Keep local copies of package manager repositories for quick fixes
To improve the package manager setup:
- Test changes locally first
- Update documentation
- Ensure scripts work across different platforms
- Add new package managers as needed