scripts/debpkg.sh

87 lines
2.3 KiB
Bash
Raw Permalink Normal View History

# 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 <software@cscherr.de>"
# 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"
}