No description
|
Some checks failed
Comprehensive CI/CD Pipeline / Build and Test (push) Successful in 8m10s
Comprehensive CI/CD Pipeline / Security Audit (push) Failing after 6s
Comprehensive CI/CD Pipeline / Package Validation (push) Successful in 2m0s
Comprehensive CI/CD Pipeline / Status Report (push) Has been skipped
- Add FORGEJO_RUN_NUMBER to environment variable debugging - Update versioning logic to prioritize FORGEJO_RUN_NUMBER over GITEA_RUN_NUMBER - Implement fallback chain: FORGEJO_RUN_NUMBER -> GITEA_RUN_NUMBER -> timestamp - Enhanced debug output to show which CI build number source is being used - Expected result: apt-ostree_0.1.0-2+build109.15b981d38f_amd64.deb (when CI number available) |
||
|---|---|---|
| .cargo | ||
| .forgejo | ||
| .github/workflows | ||
| benches | ||
| daemon | ||
| debian | ||
| docs | ||
| examples | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| .yamllint | ||
| build-debian-trixie.sh | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| clear-changelog.sh | ||
| README.md | ||
| test-debian-build.sh | ||
| todo | ||
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
# 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
# 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)
# 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)
# 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
# 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:
- Creating OSTree deployments from APT package selections
- Managing atomic updates through OSTree commits
- Providing rollback capability to previous deployments
- Integrating with systemd for boot management
🔍 Troubleshooting
Library Compatibility Issues
If you encounter libapt-pkg.so.6.0: cannot open shared object file:
# 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
# Clean and rebuild
cargo clean
./build-debian-trixie.sh
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test on target distributions
- Submit a pull request
📄 License
This project is licensed under the GPL-3.0-or-later License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by
rpm-ostreefrom the Fedora project - Built on the excellent
rust-aptcrate - OSTree integration powered by the OSTree project