# Create a Debian package from a binary # Usage: make_binary_deb binary_path package_name version make_binary_deb() { local binary="$1" local pkgname="$2" local version="$3" local maintainer="Christoph J. Scherr " # Check if all arguments are provided if [ -z "$binary" ] || [ -z "$pkgname" ] || [ -z "$version" ]; then echo "Usage: make_binary_deb binary_path package_name version" return 1 fi # Check if binary exists if [ ! -f "$binary" ]; then echo "Error: Binary $binary not found" return 1 } # Create package directory structure local pkgdir="${pkgname}_${version}" mkdir -p "${pkgdir}/usr/local/bin" mkdir -p "${pkgdir}/DEBIAN" # Copy and set permissions cp "$binary" "${pkgdir}/usr/local/bin/" chmod 755 "${pkgdir}/usr/local/bin/$(basename "$binary")" # Create control file cat > "${pkgdir}/DEBIAN/control" << EOF Package: $pkgname Version: $version Section: utils Priority: optional Architecture: amd64 Maintainer: $maintainer Description: Binary package for $(basename "$binary") Automatically packaged binary for $(basename "$binary") EOF # Build package dpkg-deb --build "$pkgdir" # Clean up rm -rf "$pkgdir" echo "Package created: ${pkgdir}.deb" } # Install a downloaded binary as a Debian package # Usage: install_binary_as_deb binary_url package_name version install_binary_as_deb() { local url="$1" local pkgname="$2" local version="$3" if [ -z "$url" ] || [ -z "$pkgname" ] || [ -z "$version" ]; then echo "Usage: install_binary_as_deb binary_url package_name version" return 1 } # Create temp directory local tmpdir=$(mktemp -d) cd "$tmpdir" # Download and extract if it's a tar.gz if [[ "$url" == *".tar.gz" ]]; then wget "$url" -O "${pkgname}.tar.gz" tar xf "${pkgname}.tar.gz" # Assume binary has same name as package local binary="$pkgname" else wget "$url" -O "$pkgname" chmod +x "$pkgname" local binary="$pkgname" fi # Create and install package make_binary_deb "$binary" "$pkgname" "$version" sudo dpkg -i "${pkgname}_${version}.deb" # Clean up cd - > /dev/null rm -rf "$tmpdir" }