Skip to content

Instantly share code, notes, and snippets.

@3lswear
Last active January 9, 2023 12:16
Show Gist options
  • Select an option

  • Save 3lswear/5120e8b92c265bfaaa44ee2713fbcb35 to your computer and use it in GitHub Desktop.

Select an option

Save 3lswear/5120e8b92c265bfaaa44ee2713fbcb35 to your computer and use it in GitHub Desktop.
convert deb to rpm reasonably fast while avoiding filesystem conflicts
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
if [[ "${TRACE-0}" == "1" ]]; then
set -o xtrace
fi
if [[ "${1-}" =~ ^-*h(elp)?$ || $# -eq 0 ]]; then
echo "Usage: ./$(basename "$0") package.deb
Convert .deb package to .rpm hopefully avoiding conflicts and speeding up
rpmbuild. Uses /tmp and copies resulting .rpm to directory where script
was run.
Requires: alien, rpmbuild, sudo, bash, find, sed.
"
exit
fi
sudo -v
PKG_FILE="$1"
OLD_DIR="$PWD"
TEMP_DIR=$(mktemp -d)
cp "$PKG_FILE" "$TEMP_DIR"
cd "$TEMP_DIR"
sudo alien -g -v -r "$PKG_FILE"
WORK_DIR=$(find ./ -mindepth 1 -maxdepth 1 -type d | sed 's#./##')
sudo sed -i 's#^%dir.*"/"##' "$WORK_DIR"/*.spec
sudo sed -i 's#^%dir.*"/usr/"##' "$WORK_DIR"/*.spec
sudo sed -i 's#^%dir.*"/usr/bin/"##' "$WORK_DIR"/*.spec
sudo sed -i 's#^%dir.*"/usr/lib/"##' "$WORK_DIR"/*.spec
sudo sed -i 's#^%dir.*"/usr/share/"##' "$WORK_DIR"/*.spec
cd "$WORK_DIR"
sudo rpmbuild --define "_binary_payload w7T0.zstdio" --buildroot="$PWD" \
-bb "$PWD/$WORK_DIR"*.spec --noclean
mv -v "$TEMP_DIR"/*.rpm "$OLD_DIR"
sudo rm -rf "$TEMP_DIR"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment