zsvo/README_RELEASE.md
2026-03-13 15:18:31 +03:00

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 | pkgB style 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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 pkgsrc and ports

📞 Support


ZSVO - Zero-Snafu Version Operations
Making package management simple, secure, and automatic.