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

152 lines
No EOL
7 KiB
Markdown

# 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](background.md) - History and philosophy
- [Administrator Handbook](administrator-handbook.md) - System administration guide
- [Count Me](countme.md) - Usage statistics collection
- [Build Chunked OCI](build-chunked-oci.md) - OCI container integration
### [Composing Images](compose/)
- [Compose Server](compose/compose-server.md) - Building OSTree commits
- [Treefile Reference](compose/treefile.md) - Configuration format
- [Extensions](compose/extensions.md) - System extensions
### [Architecture](architecture/)
- [RPM Packages, OSTree Commits](architecture/architecture-core.md) - Core architecture
- [Daemon Model](architecture/architecture-daemon.md) - Client/daemon architecture
- [Architecture of Apply-Live](architecture/apply-live.md) - Live package application
### Container Integration
- [Container](container.md) - Native container support
### [Man Pages](man-pages/)
- [rpm-ostree(1)](man-pages/rpm-ostree.1.md) - Main command-line tool
- [rpm-ostreed.conf(5)](man-pages/rpm-ostreed.conf.5.md) - Daemon configuration
- [rpm-ostreed-automatic.service(8)](man-pages/rpm-ostreed-automatic.service.8.md) - Automatic updates service
- [rpm-ostree-countme.service(8)](man-pages/rpm-ostree-countme.service.8.md) - Usage statistics service
### [Contributing](contributing/)
- [Hacking on rpm-ostree](contributing/hacking.md) - Development environment setup
- [Debugging rpm-ostree](contributing/debug.md) - Debugging techniques and tools
- [Repository Structure](contributing/repo-structure.md) - Codebase organization
- [Releasing rpm-ostree](contributing/release.md) - Release process and versioning
### [Experimental Features](experimental/)
- [DEPRECATED: CLI Wrapping](experimental/cliwrap.md) - Deprecated CLI wrapping feature
- [Declarative System Changes](experimental/ex-rebuild.md) - Experimental declarative configuration
- [Override Replace Experimental](experimental/ex-replace.md) - Advanced package replacement
- [CoreOS Layering](experimental/layering.md) - Advanced package layering
## 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
- [Official rpm-ostree Documentation](https://coreos.github.io/rpm-ostree/)
- [rpm-ostree GitHub Repository](https://github.com/coreos/rpm-ostree)
- [OSTree Documentation](https://ostreedev.github.io/ostree/)
- [ComposeFS Documentation](https://github.com/containers/composefs)
## 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.*