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

303 lines
6.8 KiB
Markdown

# ZSVO Package Manager
**Source-based package management for custom Linux distributions with automatic dependency resolution**
## 🚀 Quick Start
### Installation
#### Linux/macOS/BSD
```bash
# 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
```bash
docker run --rm zsvo/zsvo:latest --help
```
#### Build from source
```bash
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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# Package information
zsvo info package_name
# System doctor
zsvo doctor
# Search packages
zsvo search package_name
```
## 🔧 Configuration
### Environment Variables
```bash
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
```yaml
# ~/.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
```bash
# 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
```bash
# Cross-platform build
./scripts/build.sh all
# Specific platform
./scripts/build.sh build linux amd64
# Create release packages
./scripts/release.sh create
```
### Docker Development
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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](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
- 📖 [Documentation](DEPENDENCY_RESOLUTION.md)
- 🐛 [Issue Tracker](https://github.com/yourusername/zsvo/issues)
- 💬 [Discussions](https://github.com/yourusername/zsvo/discussions)
---
**ZSVO** - Zero-Snafu Version Operations
Making package management simple, secure, and automatic.