赞
踩
原文链接:统信UOS或者麒麟KYLINOS上无交互安装deb包
hello,大家好啊,今天给大家带来一篇在统信UOS或者麒麟KYLINOS上无交互安装deb的文章,有时候我们使用dpkg安装deb时,由于软件包中preinst设置的内容,需要我们手动输入相关的参数,比如路径等,那么今天就给大家提供两种方法参考,请根据实际的情况使用。
1、下载qaxsafe到本地
pdsyw@pdsyw-pc:~/桌面$ sudo apt install -d -y qaxsafe 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动安装的并且现在不需要了: archdetect-deb dmeventd libaio1 libdebian-installer4 libdevmapper-event1.02.1 liblvm2cmd2.03 localechooser-data lvm2 user-setup 使用'sudo apt autoremove'来卸载它(它们)。 下列【新】软件包将被安装: qaxsafe 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 2 个软件包未被升级。 需要下载 61.8 MB 的归档。 解压缩后会消耗 0 B 的额外空间。 获取:1 http://archive2.kylinos.cn/deb/kylin/production/PART-V10-SP1/custom/partner/V10-SP1 default/all arm64 qaxsafe arm64 8.0.5-5140 [61.8 MB] 已下载 61.8 MB,耗时 4秒 (13.7 MB/s) 于“仅下载”模式中下载完毕 pdsyw@pdsyw-pc:~/桌面$ ll /var/cache/apt/archives/ 总用量 60348 drwxr-xr-x 3 root root 4096 10月 19 15:51 ./ drwxr-xr-x 3 root root 4096 10月 19 15:51 ../ -rw-r----- 1 root root 0 10月 9 11:01 lock drwx------ 2 _apt root 4096 10月 19 15:51 partial/ -rw-r--r-- 1 root root 61782034 2月 20 2023 qaxsafe_8.0.5-5140_arm64.deb pdsyw@pdsyw-pc:~/桌面$
2、使用dpkg安装,需要选择安装路径
pdsyw@pdsyw-pc:~/桌面$ sudo dpkg -i /var/cache/apt/archives/qaxsafe_8.0.5-5140_arm64.deb
正在选中未选择的软件包 qaxsafe。
(正在读取数据库 ... 系统当前共安装有 194514 个文件和目录。)
准备解压 .../qaxsafe_8.0.5-5140_arm64.deb ...
preinst called install.
请选择安装路径(按回车键则安装在默认位置/opt目录下):
3、回车确认后安装完成
pdsyw@pdsyw-pc:~/桌面$ sudo dpkg -i /var/cache/apt/archives/qaxsafe_8.0.5-5140_arm64.deb
正在选中未选择的软件包 qaxsafe。
(正在读取数据库 ... 系统当前共安装有 194514 个文件和目录。)
准备解压 .../qaxsafe_8.0.5-5140_arm64.deb ...
preinst called install.
请选择安装路径(按回车键则安装在默认位置/opt目录下):
正在解压 qaxsafe (8.0.5-5140) ...
正在设置 qaxsafe (8.0.5-5140) ...
install success.
正在处理用于 desktop-file-utils (0.24-1kylin2) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3+18.04.20180207.2-0kylin2) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.64kylin1) 的触发器 ...
pdsyw@pdsyw-pc:~/桌面$
4、卸载qaxsafe软件
pdsyw@pdsyw-pc:~/桌面$ sudo dpkg -r qaxsafe
(正在读取数据库 ... 系统当前共安装有 194711 个文件和目录。)
正在卸载 qaxsafe (8.0.5-5140) ...
systemd 245 (245.4-4kylin3.15k0.26)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
uninstall success.
正在处理用于 desktop-file-utils (0.24-1kylin2) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3+18.04.20180207.2-0kylin2) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.64kylin1) 的触发器 ...
pdsyw@pdsyw-pc:~/桌面$
5、将qaxsafe安装包复制到桌面
pdsyw@pdsyw-pc:~/桌面$ sudo cp /var/cache/apt/archives/qaxsafe_8.0.5-5140_arm64.deb ./
pdsyw@pdsyw-pc:~/桌面$ sudo chmod 777 qaxsafe_8.0.5-5140_arm64.deb
pdsyw@pdsyw-pc:~/桌面$
6、方法一:添加参数安装
pdsyw@pdsyw-pc:~/桌面$ yes '' | sudo dpkg -i qaxsafe_8.0.5-5140_arm64.deb
正在选中未选择的软件包 qaxsafe。
(正在读取数据库 ... 系统当前共安装有 194514 个文件和目录。)
准备解压 qaxsafe_8.0.5-5140_arm64.deb ...
preinst called install.
请选择安装路径(按回车键则安装在默认位置/opt目录下):
正在解压 qaxsafe (8.0.5-5140) ...
正在设置 qaxsafe (8.0.5-5140) ...
install success.
正在处理用于 desktop-file-utils (0.24-1kylin2) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3+18.04.20180207.2-0kylin2) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.64kylin1) 的触发器 ...
pdsyw@pdsyw-pc:~/桌面$
7.1、方法二:解压qaxsafe安装包重新编辑qaxsafe_extracted/DEBIAN/preinst文件
pdsyw@pdsyw-pc:~/桌面$ mkdir qaxsafe_extracted
pdsyw@pdsyw-pc:~/桌面$ dpkg-deb -R qaxsafe_8.0.5-5140_arm64.deb qaxsafe_extracted/
pdsyw@pdsyw-pc:~/桌面$ vi qaxsafe_extracted/DEBIAN/pre
preinst prerm
pdsyw@pdsyw-pc:~/桌面$ vi qaxsafe_extracted/DEBIAN/pre
preinst prerm
pdsyw@pdsyw-pc:~/桌面$ vi qaxsafe_extracted/DEBIAN/preinst
pdsyw@pdsyw-pc:~/桌面$
7.2、注释掉相关的内容
pdsyw@pdsyw-pc:~/桌面$ cat qaxsafe_extracted/DEBIAN/preinst #! /bin/sh logfile=/var/log/qaxsafe.log InstallDirConf=/opt/.installpath.conf InstallPath=/opt echo `date` >> ${logfile} 2>&1 echo postinst arg:$1 >> ${logfile} 2>&1 exec 5>>${logfile} exec 2>>${logfile} set -x case "$1" in install) echo "$(tput setaf 1)preinst called install. $(tput sgr0)" if [ ! -e ${InstallDirConf} ]; then #满足[bash.*dpkg.*preinst]时,认为是命令行安装,可进行阻塞提示 # if [ -n "$(pstree | grep -iE "bash.*dpkg.*preinst")" ]; then # echo "请选择安装路径(按回车键则安装在默认位置/opt目录下):" # while : # do # read InstallPath # if [ -z "${InstallPath}" ]; then # InstallPath=/opt # fi # if [ -w "${InstallPath}" ];then # if [ "${InstallPath}" != "/opt" ]; then # mkdir ${InstallPath}/qaxsafe # ln -s ${InstallPath}/qaxsafe /opt/qaxsafe # fi # break # else # echo "您输入的路径的路径有误,请重新输入(按回车键则安装在默认位置/opt目录下):" # fi # done # fi echo ${InstallPath} > ${InstallDirConf} fi # 兼容旧版本单机版包升级到新版本单机版本包 is_update=`ps -ef | grep -v grep | grep "OfflineUpdate/virusUpdate.bin"` || true is_force=`ps -ef | grep "sh -c " | grep "dpkg -i --force-all"` || true if [ "$is_force" = "" ] && [ "$is_update" != "" ]; then pkg=`ps -ef | grep "dpkg -i" | grep -v "sh -c" | grep -v "grep" | awk -F ' ' '{print $NF}'` dpkg -x $pkg /opt/.qaxsafe_tmp brand=$[2*180] if [ -d "${InstallPath}/qaxsafe" ]; then cp -raf /opt/.qaxsafe_tmp/opt/qaxsafe/OfflineUpdate/virusUpdate.bin ${InstallPath}/qaxsafe/OfflineUpdate/ elif [ -d "${InstallPath}/${brand}safeforcnos" ]; then cp -raf /opt/.qaxsafe_tmp/opt/qaxsafe/OfflineUpdate/virusUpdate.bin ${InstallPath}/${brand}safeforcnos/OfflineUpdate/ fi rm -rf /opt/.qaxsafe_tmp exit -1 fi exit 0 ;; upgrade) echo "$(tput setaf 1)preinst called upgrade, upgrading... $(tput sgr0)" if [ ! -e ${InstallDirConf} ]; then echo "/opt"> ${InstallDirConf} fi InstallPath=`cat ${InstallDirConf}` rtn=0 qaxapp="${InstallPath}/qaxsafe/qaxsafed" if [ -f $qaxapp ]; then $qaxapp upgrade rtn=$? fi if [ $rtn -eq 1 ]; then echo "$(tput setaf 1)preinst called upgrade failed, maybe donot support upgrade.$(tput sgr0)" exit -1 else echo "$(tput setaf 1)preinst called upgrade success.$(tput sgr0)" fi # 单机升级防止病毒库数据被覆盖 cp ${InstallPath}/qaxsafe/engine/update.txt ${InstallPath}/qaxsafe/engine/.update.txt || true cp -r ${InstallPath}/qaxsafe/engine/viruslib/owl/ ${InstallPath}/qaxsafe/engine/viruslib/.owl || true cp ${InstallPath}/qaxsafe/Data/asmodularize.dat ${InstallPath}/qaxsafe/Data/.asmodularize.dat || true # 兼容旧版本升级 ps -ef | grep "qaxsafed upgrade" | grep -v grep | awk '{print $2}' | xargs -I {} kill -KILL {} || true exit 0 ;; *) echo "$(tput setaf 1)preinst called with unknown argument $1. $(tput sgr0)" exit -1 ;; esac pdsyw@pdsyw-pc:~/桌面$
8、重新打包qaxsafe_new_arm64.deb
pdsyw@pdsyw-pc:~/桌面$ dpkg-deb -b qaxsafe_extracted/ qaxsafe_new_arm64.deb
dpkg-deb: 正在 'qaxsafe_new_arm64.deb' 中构建软件包 'qaxsafe'。
pdsyw@pdsyw-pc:~/桌面$
pdsyw@pdsyw-pc:~/桌面$ ll qaxsafe_new_arm64.deb
-rw-r--r-- 1 pdsyw pdsyw 61777188 10月 19 16:15 qaxsafe_new_arm64.deb
pdsyw@pdsyw-pc:~/桌面$
9、安装重新打包后的qaxsafe_new_arm64.deb,没有出现交互界面
pdsyw@pdsyw-pc:~/桌面$ sudo dpkg -i qaxsafe_new_arm64.deb
正在选中未选择的软件包 qaxsafe。
(正在读取数据库 ... 系统当前共安装有 194514 个文件和目录。)
准备解压 qaxsafe_new_arm64.deb ...
preinst called install.
正在解压 qaxsafe (8.0.5-5140) ...
正在设置 qaxsafe (8.0.5-5140) ...
install success.
正在处理用于 desktop-file-utils (0.24-1kylin2) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3+18.04.20180207.2-0kylin2) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.64kylin1) 的触发器 ...
pdsyw@pdsyw-pc:~/桌面$
10、qaxsafe默认安装到/opt下
pdsyw@pdsyw-pc:~/桌面$ cd /opt/
pdsyw@pdsyw-pc:/opt$ ll | grep qax
drwxr-xr-x 3 root root 4096 4月 27 15:36 qax/
drwxr-xr-x 14 pdsyw pdsyw 4096 10月 19 17:08 qaxsafe/
pdsyw@pdsyw-pc:/opt$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。