#!/bin/bash echo "Spark Store Install script.星火商店安装脚本" function pkexec_as_current_user() { #Detect the name of the display in use local display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)" #Detect the user using such display local user=$(who | grep '('$display')' | awk '{print $1}' | head -n 1) #Detect the id of the user local uid=$(id -u $user) sudo -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus pkexec "$@" } function zenity() { #Detect the name of the display in use local display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)" #Detect the user using such display local user=$(who | grep '('$display')' | awk '{print $1}' | head -n 1) #Detect the id of the user local uid=$(id -u $user) sudo -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus zenity "$@" } #################检测文件是否存在 if [ $# -eq 0 ];then echo "没有接收到参数,退出" echo "用法:$0 deb路径" exit fi if [ ! -f "$1" ] then echo "文件不存在" exit 1 fi if [ "$(id -u)" != "0" ];then #############################无root权限时 echo "请使用root启动ssinstall" exit 1 fi ### DEBPATH=`realpath $1` if [ ! -e "/var/lib/apt/lists/d.store.deepinos.org.cn_Packages" ];then echo "接收星火仓库软件信息中..." aptss ssupdate fi echo "正在计算hash并与星火仓库匹配..." DEB_MD5SUM=`md5sum "$DEBPATH" | cut -c -32` IS_MD5SUM_CHECKD=`cat /var/lib/apt/lists/d.store.deepinos.org.cn_Packages | grep $DEB_MD5SUM` if [ ! -z "$IS_MD5SUM_CHECKD" ];then echo "校验成功,开始安装" echo ---------------------------------------------------------------------------------- dpkg -i "$DEBPATH" || aptss install -yf else zenity --info --icon-name=spark-store --height 270 --width 500 --text "软件包校验失败!这不应该发生!\n可能是因为软件包已损坏,星火仓库未同步,或者最坏的情况:恶意软件尝试利用自动安装来入侵系统!\n如果你不清楚发生了什么,请在接下来的认证窗口中选择取消认证\n执行 sudo aptss ssupdate 后再尝试安装。\n如果问题仍然存在,请在应用信息界面点击 应用反馈 来提交反馈给我们!\n\n 如果你是审核人员,请使用 ssaudit来替代ssinstall进行审核工作,因为现在ssinstall已经被用于免密安装。\n如果你正在尝试安装已经下架的星火应用,也可用ssaudit来替代ssinstall" echo "软件包校验失败!这不应该发生!" echo "执行 sudo aptss ssupdate 后再尝试安装。" echo "如果问题仍然存在,请在应用信息界面点击 应用反馈 来提交反馈给我们!" echo "如果你是审核人员,请使用 ssaudit来替代ssinstall进行审核工作,因为现在ssinstall已经被用于免密安装" echo "如果你正在尝试安装已经下架的星火应用,也可用ssaudit来替代ssinstall" fi