mirror of
https://gitee.com/spark-store-project/uos-packaging-tools
synced 2025-12-14 02:52:07 +08:00
add support for zstd compressed deb package.
Debian/Ubuntu has moved to zstd compress by default. dpkg has come with zstd support since 1.21.18 but UOS got 1.19.7. This commit adds support for unpacking zstd compressed without using dpkg but the other utils. Signed-off-by: Shiroko <hhx.xxm@gmail.com>
This commit is contained in:
@@ -1,15 +1,43 @@
|
||||
#/bin/bash
|
||||
#!/bin/bash
|
||||
TMPDIR="/tmp"
|
||||
|
||||
unpack_package() {
|
||||
DEBPATH="$1"
|
||||
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
||||
ABS_DEBPATH="$(readlink -f "$DEBPATH")"
|
||||
OUTPATH=$(dirname "$DEBPATH")
|
||||
mkdir -p "$OUTPATH/$package_name/DEBIAN/"
|
||||
dpkg -e "$DEBPATH" "$OUTPATH/$package_name/DEBIAN/"
|
||||
dpkg -X "$DEBPATH" "$OUTPATH/$package_name/"
|
||||
ABS_OUTPATH="$(readlink -f "$OUTPATH")"
|
||||
local fields=$(LC_ALL=C dpkg -f "$DEBPATH" 2>&1)
|
||||
|
||||
if [[ "$(echo "$fields" | wc -l)" == 1 ]] && [[ "$fields" =~ "tar.zst" ]]; then
|
||||
local tempd=$(mktemp -d)
|
||||
[[ ! -d "$tempd" ]] && exit -1
|
||||
pushd "$tempd"
|
||||
ar x "$ABS_DEBPATH" control.tar.zst
|
||||
ar x "$ABS_DEBPATH" data.tar.zst
|
||||
mkdir DEBIAN
|
||||
[ -f control.tar.zst ] && tar --use-compress-program=unzstd -xvf control.tar.zst -C DEBIAN
|
||||
local package_name="$(grep Package DEBIAN/control | sed 's/^Package: //g')"
|
||||
mkdir -p "$ABS_OUTPATH/$package_name/"
|
||||
mv DEBIAN "$ABS_OUTPATH/$package_name/"
|
||||
mv data.tar.zst "$ABS_OUTPATH/$package_name"
|
||||
popd
|
||||
|
||||
rm -rf "$tempd"
|
||||
|
||||
pushd "$OUTPATH/$package_name/"
|
||||
[[ -f data.tar.zst ]] && tar --use-compress-program=unzstd -xvf data.tar.zst
|
||||
rm -f data.tar.zst
|
||||
popd
|
||||
else
|
||||
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
||||
mkdir -p "$OUTPATH/$package_name/DEBIAN/"
|
||||
|
||||
dpkg -e "$DEBPATH" "$OUTPATH/$package_name/DEBIAN/"
|
||||
dpkg -X "$DEBPATH" "$OUTPATH/$package_name/"
|
||||
fi
|
||||
|
||||
notify-send "$package_name 解包已完成" -i /usr/share/icons/uos-packaging-tools.png
|
||||
|
||||
|
||||
echo "---------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user