6.8 KiB
6.8 KiB
ZSVO Package Manager
Source-based package management for custom Linux distributions with automatic dependency resolution
🚀 Quick Start
Installation
Linux/macOS/BSD
# Download latest release
curl -L https://github.com/yourusername/zsvo/releases/latest/download/zsvo-latest-linux-amd64.tar.gz | tar xz
# Install
cd zsvo-*-linux-amd64
sudo ./install.sh
Docker
docker run --rm zsvo/zsvo:latest --help
Build from source
git clone https://github.com/yourusername/zsvo
cd zsvo
make build-all
sudo cp dist/linux/amd64/zsvo /usr/local/bin/
📦 Features
🔥 Automatic Dependency Resolution
# Install package with all dependencies automatically
zsvo install --auto-resolve-deps myapp.pkg.tar.zst
- No external tools needed - everything built into ZSVO
- Recursive resolution - finds dependencies of dependencies
- Multiple sources - searches in package cache directories
- Version constraints - respects version requirements
- Alternatives support - handles
pkgA | pkgBstyle dependencies
🏗️ Source-based Building
# Build from Debian source
zsvo install --auto-source --auto-build-deps nginx
# Build from custom recipe
zsvo build myapp.recipe.yaml
zsvo install myapp.pkg.tar.zst
🔄 Transactional Operations
# Install multiple packages atomically
zsvo install pkg1.pkg.tar.zst pkg2.pkg.tar.zst pkg3.pkg.tar.zst
# Automatic rollback on failure
zsvo install --auto-resolve-deps complex-app.pkg.tar.zst
🎯 Supported Platforms
| Platform | Architectures | Status |
|---|---|---|
| Linux | x86_64, ARM64, i386, ARM | ✅ Full Support |
| macOS | Intel, Apple Silicon | ✅ Full Support |
| Windows | x86_64, i386 | ✅ Full Support |
| FreeBSD | x86_64, ARM64 | ✅ Full Support |
| OpenBSD | x86_64, ARM64 | ✅ Full Support |
📋 Commands
Package Management
# Install packages
zsvo install package.pkg.tar.zst
zsvo install --auto-resolve-deps app.pkg.tar.zst
# Remove packages
zsvo remove package_name
zsvo remove --cascade package_name # Remove with dependents
# Upgrade packages
zsvo upgrade package.pkg.tar.zst
# List installed packages
zsvo list
zsvo list --orphans # Show unused packages
Building
# Build from recipe
zsvo build recipe.yaml
# Build from Debian source
zsvo install --auto-source package_name
# Build with custom options
zsvo build --work-dir /tmp/build recipe.yaml
Information
# Package information
zsvo info package_name
# System doctor
zsvo doctor
# Search packages
zsvo search package_name
🔧 Configuration
Environment Variables
export ZSVO_ROOT="/opt/zsvo" # Installation root
export ZSVO_WORK="/tmp/zsvo-work" # Build directory
export ZSVO_CACHE="/var/cache/zsvo" # Package cache
Configuration File
# ~/.config/zsvo/config.yaml
root_dir: "/"
work_dir: "/tmp/pkg-work"
cache_dirs:
- "/var/cache/packages"
- "~/.local/share/zsvo/packages"
auto_source: true
auto_build_deps: true
auto_resolve_deps: true
📁 Project Structure
zsvo/
├── cmd/ # CLI commands
├── pkg/ # Core packages
│ ├── deps/ # Dependency resolution
│ ├── installer/ # Package installation
│ ├── builder/ # Package building
│ ├── fetcher/ # Source fetching
│ ├── packager/ # Package creation
│ ├── security/ # Security utilities
│ └── errors/ # Error handling
├── scripts/ # Build and utility scripts
├── examples/ # Example recipes
├── docs/ # Documentation
├── dist/ # Built binaries (gitignored)
└── release/ # Release packages (gitignored)
🛠️ Development
Building from Source
# Install dependencies
make dev-setup
# Run tests
make test
make test-coverage
# Build for current platform
make build
# Build for all platforms
make build-all
# Create release
make release
Using Build Scripts
# Cross-platform build
./scripts/build.sh all
# Specific platform
./scripts/build.sh build linux amd64
# Create release packages
./scripts/release.sh create
Docker Development
# Build Docker image
./scripts/docker.sh build linux/amd64
# Multi-architecture build
./scripts/docker.sh multi
# Run container
./scripts/docker.sh run zsvo:latest --help
🔐 Security
- Path traversal protection - Validates all file paths
- Checksum verification - Ensures package integrity
- Type-safe dependency resolution - Prevents injection attacks
- Sandboxed builds - Isolated build environment
- Cryptographic verification - Optional GPG signature support
📚 Examples
Basic Package Installation
# Install single package
zsvo install nginx.pkg.tar.zst
# Install with automatic dependency resolution
zsvo install --auto-resolve-deps webapp.pkg.tar.zst
# Install multiple packages
zsvo install app1.pkg.tar.zst app2.pkg.tar.zst
Building from Source
# Build from Debian source
zsvo install --auto-source --auto-build-deps postgresql
# Build with custom recipe
cat > myapp.recipe.yaml << EOF
name: myapp
version: "1.0.0"
description: "My custom application"
source:
url: "https://github.com/user/myapp/archive/v1.0.0.tar.gz"
sha256: "abc123..."
build:
- make
- make install DESTDIR=\${DESTDIR}
deps:
- "libssl >= 1.1"
- "zlib"
EOF
zsvo build myapp.recipe.yaml
zsvo install myapp.pkg.tar.zst
Dependency Management
# Check what depends on a package
zsvo info --reverse-deps openssl
# Find orphaned packages
zsvo list --orphans
# Remove package and its dependents
zsvo remove --cascade old-package
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Follow Go best practices
- Add tests for new features
- Update documentation
- Ensure all tests pass (
make test) - Run linter (
make lint)
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by traditional package managers like
apt,yum,pacman - Dependency resolution algorithms from SAT solvers
- Build system concepts from
pkgsrcandports
📞 Support
ZSVO - Zero-Snafu Version Operations
Making package management simple, secure, and automatic.