- Fix trailing spaces and blank lines in Forgejo workflows - Update system requirements from Ubuntu Jammy/Bookworm to Debian 13+ (Trixie) - Update test treefile to use Debian Trixie instead of Ubuntu Jammy - Update documentation to reflect modern system requirements - Fix yamllint errors for CI/CD functionality - Ensure compatibility with modern OSTree and libapt versions
155 lines
No EOL
3.4 KiB
Markdown
155 lines
No EOL
3.4 KiB
Markdown
# apt-ostree
|
|
|
|
A Debian/Ubuntu equivalent of `rpm-ostree` for atomic, immutable deployments.
|
|
|
|
## 🎯 **Project Goal**
|
|
Make apt-ostree a **1:1 equivalent** of rpm-ostree for Debian systems, with identical CLI interface and functionality adapted for the Debian/Ubuntu ecosystem.
|
|
|
|
## 📋 **Requirements**
|
|
- Debian Trixie (13) or Forky (14), or Ubuntu 25.04+ (Noble Numbat) or newer
|
|
- OSTree 2025.2+
|
|
- APT 3.0+
|
|
- Systemd 255+
|
|
- Polkit 123+
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Debian Trixie (13) or Forky (14), or Ubuntu Noble (24.04) or newer
|
|
- OSTree tools installed
|
|
- Rust development environment
|
|
|
|
### Installation
|
|
|
|
#### Option 1: Install from Debian Package
|
|
|
|
```bash
|
|
# Install dependencies
|
|
sudo apt update
|
|
sudo apt install ostree libostree-1-1 systemd
|
|
|
|
# Install apt-ostree package
|
|
sudo dpkg -i apt-ostree_0.1.0-2_amd64.deb
|
|
```
|
|
|
|
#### Option 2: Build from Source
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/robojerk/apt-ostree.git
|
|
cd apt-ostree
|
|
|
|
# Install build dependencies
|
|
sudo apt install build-essential cargo rustc pkg-config \
|
|
libostree-dev libglib2.0-dev libcurl4-gnutls-dev \
|
|
libssl-dev libsystemd-dev libmount-dev libselinux1-dev \
|
|
libapt-pkg-dev debhelper dh-cargo
|
|
|
|
# Build for Debian Trixie/Forky
|
|
./build-debian-trixie.sh
|
|
|
|
# Install the built package
|
|
sudo dpkg -i ../apt-ostree_0.1.0-2_amd64.deb
|
|
```
|
|
|
|
## 🔧 Building for Different Distributions
|
|
|
|
### Debian Trixie/Forky (Debian 13/14)
|
|
|
|
```bash
|
|
# Use the specialized build script
|
|
./build-debian-trixie.sh
|
|
```
|
|
|
|
This script:
|
|
- Verifies system compatibility
|
|
- Checks for libapt-pkg7.0 support
|
|
- Builds with correct dependencies
|
|
- Tests package installation
|
|
|
|
### Ubuntu Noble (24.04)
|
|
|
|
```bash
|
|
# Use the standard Debian build process
|
|
./debian/build.sh
|
|
```
|
|
|
|
## 📦 Package Compatibility
|
|
|
|
| Distribution | Version | libapt-pkg | Status | Notes |
|
|
|--------------|---------|------------|---------|-------|
|
|
| Debian Trixie | 13 | 7.0 | ✅ Supported | Tested and working |
|
|
| Debian Forky | 14 | 7.0 | ✅ Supported | Tested and working |
|
|
|
|
|
|
## 🎯 Usage Examples
|
|
|
|
```bash
|
|
# Check system status
|
|
apt-ostree status
|
|
|
|
# Install packages atomically
|
|
apt-ostree install firefox libreoffice
|
|
|
|
# Update system
|
|
apt-ostree upgrade
|
|
|
|
# Rollback to previous deployment
|
|
apt-ostree rollback
|
|
|
|
# View deployment history
|
|
apt-ostree log
|
|
|
|
# Create new deployment from container
|
|
apt-ostree deploy ghcr.io/your-org/debian-ostree:latest
|
|
```
|
|
|
|
## 🏗️ Architecture
|
|
|
|
`apt-ostree` works by:
|
|
|
|
1. **Creating OSTree deployments** from APT package selections
|
|
2. **Managing atomic updates** through OSTree commits
|
|
3. **Providing rollback capability** to previous deployments
|
|
4. **Integrating with systemd** for boot management
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Library Compatibility Issues
|
|
|
|
If you encounter `libapt-pkg.so.6.0: cannot open shared object file`:
|
|
|
|
```bash
|
|
# Check your libapt-pkg version
|
|
pkg-config --modversion libapt-pkg
|
|
|
|
# For Debian Trixie/Forky, you need version 3.0.0+
|
|
# For Ubuntu Noble, version 2.0.0+ is sufficient
|
|
```
|
|
|
|
### Build Failures
|
|
|
|
```bash
|
|
# Clean and rebuild
|
|
cargo clean
|
|
./build-debian-trixie.sh
|
|
```
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Test on target distributions
|
|
5. Submit a pull request
|
|
|
|
## 📄 License
|
|
|
|
This project is licensed under the GPL-3.0-or-later License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
- Inspired by `rpm-ostree` from the Fedora project
|
|
- Built on the excellent `rust-apt` crate
|
|
- OSTree integration powered by the OSTree project |