#!/bin/bash
suffix=".deb"
if [[ ! -n "$1" ]]; then
echo 'deb file must not be empty!'
exit
fi
if [[ "$1" != *"$suffix" ]]; then
echo 'file type must be deb!'
exit
fi
echo "Extract $1 from the archive"
ar x $1
echo "Uncompress zstd $1 an re-compress them using xz"
zstd -d < control.tar.zst | xz > control.tar.xz
zstd -d < data.tar.zst | xz > data.tar.xz
echo "Re-create the Debian package in /tmp/$1"
ar -m -c -a sdsd /tmp/$1 debian-binary control.tar.xz data.tar.xz
echo 'Clean up'
rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst
echo "install $1"
sudo apt install /tmp/$1
执行installDeb.sh xxx.deb(deb文件使用相对路径)
~/installDeb.sh prettyzoo_2.1.1_amd64.deb
Extract prettyzoo_2.1.1_amd64.deb from the archive
Uncompress zstd prettyzoo_2.1.1_amd64.deb an re-compress them using xz
Re-create the Debian package in /tmp/prettyzoo_2.1.1_amd64.deb
Clean up
install prettyzoo_2.1.1_amd64.deb
请输入密码:
验证成功
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选中 'prettyzoo' 而非 '/tmp/prettyzoo_2.1.1_amd64.deb'
prettyzoo 已经是最新版 (2.1.1)。
安装deb文件报错:
sudo dpkg -i prettyzoo_2.1.1_amd64.deb
dpkg-deb: 错误: 归档 prettyzoo_2.1.1_amd64.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作
dpkg: 处理归档 prettyzoo_2.1.1_amd64.deb (--install)时出错:
dpkg-deb --control 子进程返回错误状态 2
在处理时有错误发生:
prettyzoo_2.1.1_amd64.deb
解决办法:
安装zstd
创建文件:
增加文件执行权限:
复制下列内容到installDeb.sh并保存
执行installDeb.sh xxx.deb(deb文件使用相对路径)
安装完成