- Added 20-daemon-integration.sh scriptlet for D-Bus and daemon lifecycle management - Updated 99-main.sh with new daemon subcommands (start, stop, status, install, uninstall, test, layer, deploy, upgrade, rollback) - Enhanced help and usage text for daemon integration - Fixed bash syntax errors in daemon integration scriptlet - Updated compile.sh to include daemon integration in build process - Updated .gitignore to exclude src/rpm-ostree/ reference source - Updated CHANGELOG.md and TODO.md to document daemon integration milestone - Removed src/rpm-ostree/ from git tracking (reference only, not committed)
7 KiB
rpm-ostree Documentation
This directory contains comprehensive documentation about rpm-ostree, the reference implementation that inspires our apt-layer project. rpm-ostree is a true hybrid image/package system that provides atomic, immutable OS image management with package layering capabilities.
Overview
rpm-ostree combines the benefits of:
- Image-based deployments: Atomic, immutable filesystem trees
- Package management: Traditional RPM package installation and updates
- Transactional updates: Safe, rollback-capable system updates
- Container integration: Native support for OCI containers
Key Concepts
Hybrid System
rpm-ostree bridges the gap between traditional package managers and image-based systems by:
- Converting RPM packages into OSTree commits
- Maintaining package metadata and relationships
- Providing both image and package-level operations
Atomic Operations
Every system change is atomic and transactional:
- Updates are applied atomically
- Rollbacks are instant and safe
- System state is always consistent
Layering Model
- Base image: Pre-tested, immutable foundation
- Layered packages: User-installed packages on top of base
- Extensions: Optional system components
Documentation Sections
Core Documentation
- Background - History and philosophy
- Administrator Handbook - System administration guide
- Count Me - Usage statistics collection
- Build Chunked OCI - OCI container integration
Composing Images
- Compose Server - Building OSTree commits
- Treefile Reference - Configuration format
- Extensions - System extensions
Architecture
- RPM Packages, OSTree Commits - Core architecture
- Daemon Model - Client/daemon architecture
- Architecture of Apply-Live - Live package application
Container Integration
- Container - Native container support
Man Pages
- rpm-ostree(1) - Main command-line tool
- rpm-ostreed.conf(5) - Daemon configuration
- rpm-ostreed-automatic.service(8) - Automatic updates service
- rpm-ostree-countme.service(8) - Usage statistics service
Contributing
- Hacking on rpm-ostree - Development environment setup
- Debugging rpm-ostree - Debugging techniques and tools
- Repository Structure - Codebase organization
- Releasing rpm-ostree - Release process and versioning
Experimental Features
- DEPRECATED: CLI Wrapping - Deprecated CLI wrapping feature
- Declarative System Changes - Experimental declarative configuration
- Override Replace Experimental - Advanced package replacement
- CoreOS Layering - Advanced package layering
Relevance to apt-layer
Our apt-layer project aims to provide the same capabilities for Debian/Ubuntu systems:
- Package Conversion: Converting .deb packages to atomic layers
- Atomic Operations: Transactional updates and rollbacks
- Layering: Base image + user packages
- Container Integration: OCI container support via ComposeFS
- Live Updates: Apply packages without rebooting
Key Differences
| Feature | rpm-ostree | apt-layer |
|---|---|---|
| Package Format | RPM | DEB |
| Base Technology | OSTree | ComposeFS |
| Container Support | Native OSTree | OCI via skopeo |
| Package Manager | DNF/YUM | APT |
| Init System | systemd | systemd |
Implementation Notes
When implementing apt-layer features, we reference these rpm-ostree patterns:
- Transaction Model: Client/daemon architecture for safe operations
- Metadata Handling: Comprehensive package metadata extraction
- Conflict Resolution: Advanced strategies for package conflicts
- Bootloader Integration: GRUB and systemd-boot support
- Service Integration: systemd service and timer management
Resources
- Official rpm-ostree Documentation
- rpm-ostree GitHub Repository
- OSTree Documentation
- ComposeFS Documentation
Documentation Structure
This documentation is organized to match the official rpm-ostree documentation structure:
rpm-ostree/
├── README.md # This overview
├── background.md # History and philosophy
├── administrator-handbook.md # System administration
├── countme.md # Usage statistics
├── build-chunked-oci.md # OCI container building
├── container.md # Native container support
├── compose/ # Composing images
│ ├── README.md # Compose overview
│ ├── compose-server.md # Build server
│ ├── treefile.md # Configuration reference
│ └── extensions.md # System extensions
├── architecture/ # Architecture documentation
│ ├── README.md # Architecture overview
│ ├── architecture-core.md # Core architecture
│ ├── architecture-daemon.md # Daemon model
│ └── apply-live.md # Live updates
├── man-pages/ # Manual pages
│ ├── README.md # Man pages overview
│ ├── rpm-ostree.1.md # Main command-line tool
│ ├── rpm-ostreed.conf.5.md # Daemon configuration
│ ├── rpm-ostreed-automatic.service.8.md # Automatic updates service
│ └── rpm-ostree-countme.service.8.md # Usage statistics service
├── contributing/ # Contributing documentation
│ ├── README.md # Contributing overview
│ ├── hacking.md # Development setup
│ ├── debug.md # Debugging guide
│ ├── repo-structure.md # Codebase structure
│ └── release.md # Release process
└── experimental/ # Experimental features
├── README.md # Experimental overview
├── cliwrap.md # Deprecated CLI wrapping
├── ex-rebuild.md # Declarative changes
├── ex-replace.md # Advanced overrides
└── layering.md # CoreOS layering
This documentation serves as reference material for apt-layer development. All content is based on the official rpm-ostree documentation and implementation.