统信UOS或者麒麟KYLINOS上无交互安装deb包

原文链接:统信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 1019 15:51 ./
drwxr-xr-x 3 root root     4096 1019 15:51 ../
-rw-r----- 1 root root        0 109 11:01 lock
drwx------ 2 _apt root     4096 1019 15:51 partial/
-rw-r--r-- 1 root root 61782034 220  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目录下):

统信UOS或者麒麟KYLINOS上无交互安装deb包_第1张图片

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:~/桌面$ 

统信UOS或者麒麟KYLINOS上无交互安装deb包_第2张图片

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:~/桌面$ 

统信UOS或者麒麟KYLINOS上无交互安装deb包_第3张图片

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 1019 16:15 qaxsafe_new_arm64.deb
pdsyw@pdsyw-pc:~/桌面$ 

统信UOS或者麒麟KYLINOS上无交互安装deb包_第4张图片

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:~/桌面$ 

统信UOS或者麒麟KYLINOS上无交互安装deb包_第5张图片

10、qaxsafe默认安装到/opt下

pdsyw@pdsyw-pc:~/桌面$ cd /opt/
pdsyw@pdsyw-pc:/opt$ ll | grep qax
drwxr-xr-x  3 root  root  4096 427 15:36 qax/
drwxr-xr-x 14 pdsyw pdsyw 4096 1019 17:08 qaxsafe/
pdsyw@pdsyw-pc:/opt$ 

统信UOS或者麒麟KYLINOS上无交互安装deb包_第6张图片

你可能感兴趣的:(linux,统信,UOS,交互,服务器,linux,kylin,运维)