# Development Commands Usage Guide ## Overview This document provides comprehensive usage examples for apt-ostree's development commands. These commands are hidden from normal help output and are intended for developers and system administrators debugging apt-ostree installations. ## Table of Contents 1. [testutils Commands](#testutils-commands) 2. [shlib-backend Commands](#shlib-backend-commands) 3. [internals Commands](#internals-commands) 4. [Common Use Cases](#common-use-cases) 5. [Troubleshooting](#troubleshooting) ## testutils Commands ### inject-pkglist Inject a package list into an OSTree commit's metadata. #### Basic Usage ```bash # Inject a simple package list sudo apt-ostree testutils inject-pkglist abc123 "apt,curl,nginx" # Inject with specific commit and packages sudo apt-ostree testutils inject-pkglist \ debian/13/amd64/commit/2025-01-15T10:30:00Z \ "apt,curl,nginx,postgresql-client" ``` #### Advanced Usage ```bash # Inject from file cat packages.txt | sudo apt-ostree testutils inject-pkglist abc123 - # Inject with validation sudo apt-ostree testutils inject-pkglist \ --validate-dependencies \ abc123 \ "apt,curl,nginx" ``` #### Use Cases - **Testing package management**: Verify package list injection works correctly - **Development workflows**: Test package metadata handling - **Debugging**: Investigate package list issues in commits ### script-shell Execute a script in a bubblewrap container with various options. #### Basic Usage ```bash # Execute a simple script sudo apt-ostree testutils script-shell /tmp/test.sh # Execute with arguments sudo apt-ostree testutils script-shell /tmp/install.sh --install-package nginx # Execute in read-only mode sudo apt-ostree testutils script-shell /tmp/check.sh --read-only ``` #### Advanced Options ```bash # Execute with custom root path sudo apt-ostree testutils script-shell \ --rootpath /mnt/ostree/deploy/debian/13/amd64 \ /tmp/deploy-check.sh # Execute as specific user/group sudo apt-ostree testutils script-shell \ --user www-data \ --group www-data \ /tmp/web-test.sh # Execute with custom working directory sudo apt-ostree testutils script-shell \ --cwd /var/www \ /tmp/web-deploy.sh # Execute with environment variables sudo apt-ostree testutils script-shell \ --env "DEBUG=1" \ --env "TEST_MODE=1" \ /tmp/debug-test.sh ``` #### Use Cases - **Testing deployments**: Verify scripts work in isolated environments - **Debugging**: Test scripts without affecting the main system - **Development**: Develop and test deployment scripts safely ### generate-synthetic-upgrade Generate a synthetic upgrade for testing purposes. #### Basic Usage ```bash # Generate basic synthetic upgrade sudo apt-ostree testutils generate-synthetic-upgrade # Generate with specific parameters sudo apt-ostree testutils generate-synthetic-upgrade \ --packages "apt,curl,nginx" \ --version-increment "patch" ``` #### Advanced Usage ```bash # Generate upgrade with custom metadata sudo apt-ostree testutils generate-synthetic-upgrade \ --metadata "test-mode=true" \ --metadata "generated-by=test-suite" # Generate upgrade for specific architecture sudo apt-ostree testutils generate-synthetic-upgrade \ --architecture amd64 \ --os-version "debian/13" ``` #### Use Cases - **Testing upgrade paths**: Verify upgrade mechanisms work correctly - **Development testing**: Test upgrade logic without real packages - **CI/CD pipelines**: Generate test data for automated testing ### integration-read-only Run integration tests in read-only mode. #### Basic Usage ```bash # Run basic integration tests sudo apt-ostree testutils integration-read-only # Run with specific test categories sudo apt-ostree testutils integration-read-only \ --test-category "package-management" \ --test-category "system-operations" ``` #### Advanced Usage ```bash # Run with custom test parameters sudo apt-ostree testutils integration-read-only \ --test-timeout 300 \ --verbose-output \ --save-results /tmp/test-results.json ``` #### Use Cases - **System validation**: Verify system state without making changes - **Pre-deployment testing**: Test system before applying changes - **Health checks**: Monitor system health and configuration ### c-units Run C unit tests if available. #### Basic Usage ```bash # Run all available C unit tests sudo apt-ostree testutils c-units # Run specific test suite sudo apt-ostree testutils c-units --suite "ostree-integration" # Run with verbose output sudo apt-ostree testutils c-units --verbose ``` #### Advanced Usage ```bash # Run tests with custom compiler flags sudo apt-ostree testutils c-units \ --cflags "-O2 -g" \ --ldflags "-L/usr/local/lib" # Run tests in parallel sudo apt-ostree testutils c-units --parallel --jobs 4 ``` #### Use Cases - **C library testing**: Test C library integrations - **Performance testing**: Benchmark C-based operations - **Compatibility testing**: Verify C library compatibility ### moo Perform basic functionality tests. #### Basic Usage ```bash # Run basic functionality tests sudo apt-ostree testutils moo # Run specific test categories sudo apt-ostree testutils moo --category "core-functions" ``` #### Use Cases - **Quick health check**: Verify basic system functionality - **Development testing**: Test during development cycles - **Troubleshooting**: Identify basic system issues ## shlib-backend Commands ### get-basearch Get the system's base architecture. #### Basic Usage ```bash # Get current system architecture sudo apt-ostree shlib-backend get-basearch # Get architecture for specific deployment sudo apt-ostree shlib-backend get-basearch --deployment debian/13/amd64 ``` #### Use Cases - **Architecture detection**: Determine system architecture - **Package selection**: Select appropriate packages for architecture - **Deployment targeting**: Target deployments for specific architectures ### varsubst-basearch Perform variable substitution for architecture-specific strings. #### Basic Usage ```bash # Substitute architecture variables echo "arch={{arch}}" | sudo apt-ostree shlib-backend varsubst-basearch # Substitute with custom source sudo apt-ostree shlib-backend varsubst-basearch \ "Package-{{arch}}-{{os}}-{{version}}.deb" ``` #### Advanced Usage ```bash # Substitute multiple variables sudo apt-ostree shlib-backend varsubst-basearch \ "{{os}}-{{arch}}-{{version}}-{{flavor}}" # Substitute with custom values sudo apt-ostree shlib-backend varsubst-basearch \ --custom-vars "os=debian,version=13,flavor=minimal" \ "{{os}}-{{arch}}-{{version}}-{{flavor}}" ``` #### Use Cases - **Template processing**: Process configuration templates - **Package naming**: Generate architecture-specific package names - **Deployment scripts**: Create architecture-aware deployment scripts ### packagelist-from-commit Extract package list from an OSTree commit. #### Basic Usage ```bash # Extract package list from commit sudo apt-ostree shlib-backend packagelist-from-commit abc123 # Extract with specific format sudo apt-ostree shlib-backend packagelist-from-commit \ --format json \ abc123 ``` #### Advanced Usage ```bash # Extract with metadata sudo apt-ostree shlib-backend packagelist-from-commit \ --include-metadata \ --metadata-keys "apt.packages,apt.dependencies" \ abc123 # Extract to file sudo apt-ostree shlib-backend packagelist-from-commit \ --output /tmp/packages.txt \ abc123 ``` #### Use Cases - **Package analysis**: Analyze packages in specific commits - **Dependency tracking**: Track package dependencies across commits - **Audit trails**: Create audit trails of package changes ## internals Commands ### diagnostics Run comprehensive system diagnostics. #### Basic Usage ```bash # Run all diagnostics sudo apt-ostree internals diagnostics # Run specific diagnostic categories sudo apt-ostree internals diagnostics \ --category "ostree" \ --category "apt" \ --category "daemon" ``` #### Advanced Usage ```bash # Run with custom parameters sudo apt-ostree internals diagnostics \ --timeout 600 \ --output-format json \ --save-report /tmp/diagnostics.json # Run with specific checks sudo apt-ostree internals diagnostics \ --checks "repository-integrity,package-database,daemon-status" ``` #### Use Cases - **System health check**: Comprehensive system health assessment - **Problem diagnosis**: Identify system issues and misconfigurations - **Pre-maintenance**: Verify system state before maintenance ### validate-state Validate system state consistency. #### Basic Usage ```bash # Validate current system state sudo apt-ostree internals validate-state # Validate specific components sudo apt-ostree internals validate-state \ --component "ostree" \ --component "apt" ``` #### Advanced Usage ```bash # Validate with custom rules sudo apt-ostree internals validate-state \ --rules-file /etc/apt-ostree/validation-rules.toml \ --strict-mode # Validate and generate report sudo apt-ostree internals validate-state \ --generate-report \ --report-format html \ --output /tmp/validation-report.html ``` #### Use Cases - **State verification**: Verify system state consistency - **Configuration validation**: Validate configuration files and settings - **Pre-deployment check**: Verify system state before deployments ### debug-dump Dump comprehensive system information for debugging. #### Basic Usage ```bash # Dump all system information sudo apt-ostree internals debug-dump # Dump specific information categories sudo apt-ostree internals debug-dump \ --category "system-info" \ --category "ostree-info" \ --category "apt-info" ``` #### Advanced Usage ```bash # Dump with custom format sudo apt-ostree internals debug-dump \ --format json \ --output /tmp/debug-dump.json # Dump with filtering sudo apt-ostree internals debug-dump \ --filter "error-only" \ --include-logs \ --log-level debug ``` #### Use Cases - **Debugging**: Comprehensive debugging information - **Support requests**: Generate information for support requests - **System analysis**: Analyze system configuration and state ## Common Use Cases ### Development Workflow ```bash # 1. Check system health sudo apt-ostree internals diagnostics # 2. Validate system state sudo apt-ostree internals validate-state # 3. Test new functionality sudo apt-ostree testutils script-shell /tmp/test-feature.sh # 4. Generate test data sudo apt-ostree testutils generate-synthetic-upgrade # 5. Verify results sudo apt-ostree internals debug-dump ``` ### Troubleshooting Workflow ```bash # 1. Run comprehensive diagnostics sudo apt-ostree internals diagnostics --verbose # 2. Check specific components sudo apt-ostree shlib-backend get-basearch sudo apt-ostree testutils moo # 3. Validate system state sudo apt-ostree internals validate-state --strict-mode # 4. Generate debug report sudo apt-ostree internals debug-dump --output /tmp/troubleshoot.json ``` ### Testing Workflow ```bash # 1. Set up test environment sudo apt-ostree testutils script-shell /tmp/setup-test-env.sh # 2. Run integration tests sudo apt-ostree testutils integration-read-only # 3. Test package operations sudo apt-ostree testutils inject-pkglist test-commit "test-package" # 4. Verify test results sudo apt-ostree internals debug-dump --category "test-results" ``` ## Troubleshooting ### Common Issues #### Permission Denied ```bash # Check if running as root sudo apt-ostree testutils moo # Check Polkit policies sudo polkit-policy-file-validate /usr/share/polkit-1/actions/org.projectatomic.aptostree1.policy ``` #### Command Not Found ```bash # Verify development features are enabled cargo build --features development # Check if binary includes development commands cargo run --features development -- testutils --help ``` #### Bubblewrap Issues ```bash # Check bubblewrap installation which bubblewrap bubblewrap --version # Test bubblewrap functionality bubblewrap --dev-bind / / --proc /proc -- echo "test" ``` #### OSTree Repository Issues ```bash # Check repository status sudo ostree show --repo=/ostree/repo # Verify repository integrity sudo ostree fsck --repo=/ostree/repo ``` ### Debug Mode ```bash # Enable debug logging export APT_OSTREE_LOG_LEVEL=debug export RUST_LOG=debug # Run commands with verbose output sudo apt-ostree testutils script-shell /tmp/test.sh --verbose ``` ### Log Files - **Daemon logs**: `/var/log/apt-ostreed.log` - **System logs**: `sudo journalctl -u apt-ostreed` - **OSTree logs**: `sudo ostree log --repo=/ostree/repo` ## Best Practices ### Security Considerations - **Limited access**: Only authorized users should have access to development commands - **Isolated execution**: Use script-shell with appropriate isolation options - **Audit trails**: Log all development command usage for audit purposes ### Performance Considerations - **Resource limits**: Set appropriate limits for development operations - **Timeout handling**: Use appropriate timeouts for long-running operations - **Resource cleanup**: Ensure proper cleanup after development operations ### Development Workflow - **Testing**: Always test development commands in isolated environments - **Documentation**: Document custom usage patterns and configurations - **Version control**: Track changes to development command usage --- *This guide covers the usage of apt-ostree development commands. For general usage, refer to the main User Guide.*