• 统信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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    image.png

    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目录下):
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image.png
    image.png

    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:~/桌面$
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image.png

    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:~/桌面$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    image.png

    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$ 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image.png

  • 相关阅读:
    docker常用命令
    九、ELK安装ElastAlert 2插件钉钉机器人告警
    cesium判断一个点是否在一个范围内
    多线程+socket 实现群聊服务器
    2019年数维杯数学建模A题 我国省际生态环境与经济交互状况的综合评价求解全过程文档及程序
    个人所得税赡养老人书面分摊协议
    你的工作中,chatGPT可以帮你做什么?
    驱动初识==Linux驱动开发1
    python+django学习资料在线分享系统vue
    网络TCP/IP
  • 原文地址:https://blog.csdn.net/m0_69493559/article/details/133938753