particle-os-tools/docs/apt-layer/rpm-ostree/README.md
robojerk a23b4e53fd
Some checks failed
Compile apt-layer (v2) / compile (push) Has been cancelled
feat: Integrate apt-layer.sh with apt-ostree.py daemon via D-Bus
- 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)
2025-07-15 17:08:15 -07:00

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

Composing Images

Architecture

Container Integration

Man Pages

Contributing

Experimental Features

Relevance to apt-layer

Our apt-layer project aims to provide the same capabilities for Debian/Ubuntu systems:

  1. Package Conversion: Converting .deb packages to atomic layers
  2. Atomic Operations: Transactional updates and rollbacks
  3. Layering: Base image + user packages
  4. Container Integration: OCI container support via ComposeFS
  5. 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

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.