From ed3d43ff7a8f9a9c044596f8fb5f5c4faefa8628 Mon Sep 17 00:00:00 2001 From: jasonwitty Date: Thu, 20 Nov 2025 23:38:45 -0800 Subject: [PATCH] Add summary documentation for debian packaging --- DEBIAN_PACKAGING_SUMMARY.md | 156 ++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 DEBIAN_PACKAGING_SUMMARY.md diff --git a/DEBIAN_PACKAGING_SUMMARY.md b/DEBIAN_PACKAGING_SUMMARY.md new file mode 100644 index 0000000..6e19b21 --- /dev/null +++ b/DEBIAN_PACKAGING_SUMMARY.md @@ -0,0 +1,156 @@ +# Debian Packaging Implementation Summary + +## Overview + +Successfully implemented Debian packaging for socktop using `cargo-deb`, with GitHub Actions automation for building packages for both AMD64 and ARM64 architectures. + +## Branches Created + +1. **`feature/debian-packaging`** - Main branch with debian packaging implementation +2. **`feature/man-pages`** - Separate branch for man pages work (to be researched further) + +## What Was Added + +### 1. Cargo.toml Updates + +Both `socktop/Cargo.toml` and `socktop_agent/Cargo.toml` were updated with: +- `[package.metadata.deb]` sections +- Package metadata (maintainer, description, dependencies) +- Asset definitions (binaries, documentation) +- Systemd service configuration (agent only) + +### 2. Systemd Service + +**File**: `socktop_agent/socktop-agent.service` +- Runs as `socktop` user/group +- Listens on port 3000 by default +- Security hardening enabled +- Disabled by default (user must explicitly enable) + +### 3. Maintainer Scripts + +**Directory**: `socktop_agent/debian/` + +- **`postinst`**: Creates `socktop` user/group, sets up `/var/lib/socktop` directory +- **`postrm`**: Cleanup on package removal/purge + +### 4. GitHub Actions Workflow + +**File**: `.github/workflows/build-deb.yml` + +Features: +- Builds for both x86_64 and ARM64 +- Triggered on: + - Push to `master` or `feature/debian-packaging` + - Pull requests to `master` + - Version tags (v*) + - Manual workflow dispatch +- Creates artifacts: + - `debian-packages-amd64` + - `debian-packages-arm64` + - `all-debian-packages` (combined) + - `checksums` (SHA256SUMS) +- Automatic GitHub releases for version tags + +### 5. Documentation + +**File**: `docs/DEBIAN_PACKAGING.md` + +Comprehensive guide covering: +- Building packages locally +- Cross-compilation for ARM64 +- Installation and configuration +- Using GitHub Actions artifacts +- Creating local APT repositories +- Troubleshooting + +## Package Details + +### socktop (TUI Client) +- **Binary**: `/usr/bin/socktop` +- **Size**: ~3.5 MB (x86_64) +- **Dependencies**: Auto-detected + +### socktop_agent (Daemon) +- **Binary**: `/usr/bin/socktop_agent` +- **Service**: `socktop-agent.service` +- **User/Group**: `socktop` (created automatically) +- **State directory**: `/var/lib/socktop` +- **Size**: ~6.7 MB (x86_64) +- **Dependencies**: Auto-detected + +## Testing + +Both packages successfully built locally: +``` +✓ socktop_1.50.0-1_amd64.deb +✓ socktop-agent_1.50.1-1_amd64.deb +``` + +Verified: +- Package contents (dpkg -c) +- Package metadata (dpkg -I) +- Systemd service file inclusion +- Maintainer scripts inclusion +- Documentation inclusion + +## Usage + +### For Users + +Download pre-built packages from GitHub Actions artifacts: +1. Go to Actions tab +2. Select latest "Build Debian Packages" run +3. Download architecture-specific artifact +4. Install: `sudo dpkg -i socktop*.deb` + +### For Developers + +Build locally: +```bash +cargo install cargo-deb +cargo deb --package socktop +cargo deb --package socktop_agent +``` + +Cross-compile for ARM64: +```bash +rustup target add aarch64-unknown-linux-gnu +sudo apt install gcc-aarch64-linux-gnu libc6-dev-arm64-cross +cargo deb --package socktop --target aarch64-unknown-linux-gnu +``` + +## Next Steps + +To get packages in official APT repositories: + +1. **Short term**: Host packages on GitHub Releases (automated) +2. **Medium term**: Create PPA for Ubuntu users +3. **Long term**: Submit to Debian/Ubuntu official repositories + +## Files Modified/Created + +``` +Modified: + socktop/Cargo.toml + socktop_agent/Cargo.toml + +Created: + .github/workflows/build-deb.yml + docs/DEBIAN_PACKAGING.md + socktop_agent/socktop-agent.service + socktop_agent/debian/postinst + socktop_agent/debian/postrm +``` + +## Commit + +``` +532ed16 Add Debian packaging support with cargo-deb +``` + +## Resources + +- [cargo-deb documentation](https://github.com/kornelski/cargo-deb) +- [Debian Policy Manual](https://www.debian.org/doc/debian-policy/) +- Full documentation in `docs/DEBIAN_PACKAGING.md`