#!/bin/bash source /opt/durapps/spark-store/bin/bashimport/transhell.amber load_transhell_debug case $(arch) in x86_64) STORE_URL="store" ;; aarch64) STORE_URL="aarch64-store" ;; loongarch64) STORE_URL="loong64-store" STORE_LIST_URL="-loong64" ;; esac echo "Spark Store Install script. 星火商店安装脚本" function pkexec_as_current_user() { local user=$(who | awk '{print $1}' | head -n 1) local uid=$(id -u "$user") sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus pkexec "$@" } function create_desktop_file() { local user=$(who | awk '{print $1}' | head -n 1) if [ -e $(sudo -u "$user" xdg-user-dir)/.config/spark-union/spark-store/ssshell-config-do-not-create-desktop ];then echo "It is configured that do not create desktop file. Give up" else exec_create_desktop_file fi } function exec_create_desktop_file() { local user=$(who | awk '{print $1}' | head -n 1) for desktop_file_path in $(dpkg -L "$package_name" |grep /usr/share/applications/ | awk '/\.desktop$/ {print}'); do if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ];then echo $desktop_file_path is checked and will be installed to desktop sudo -u "$user" cp "$desktop_file_path" "$(sudo -u "$user" xdg-user-dir DESKTOP)/" fi done for desktop_file_path in $(dpkg -L "$package_name" |grep /opt/apps/$package_name/entries/applications | awk '/\.desktop$/ {print}'); do if [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "true" ] || [ "$(grep -m 1 '^NoDisplay=' "$desktop_file_path" | cut -d '=' -f 2)" = "True" ];then echo $desktop_file_path is checked and will be installed to desktop chmod +x $desktop_file_path sudo -u "$user" cp "$desktop_file_path" "$(sudo -u "$user" xdg-user-dir DESKTOP)/" fi done } function zenity() { local user=$(who | awk '{print $1}' | head -n 1) local uid=$(id -u "$user") sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus zenity "$@" } function hash_check() { if [ ! -e "/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" ] && \ [ ! -e "/var/lib/aptss/lists/d.store.deepinos.org.cn_${STORE_URL}_Packages" ] && \ [ ! -e "/var/lib/aptss/lists/mirrors.sdu.edu.cn_spark-store-repository_${STORE_URL}_Packages" ]; then echo "接收星火仓库软件信息中..." aptss ssupdate fi if [ -e "/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" ]; then PACKAGES_DATA_PATH="/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH,是星火域名仓库配置" elif [ -e "/var/lib/aptss/lists/d.store.deepinos.org.cn_${STORE_URL}_Packages" ]; then PACKAGES_DATA_PATH="/var/lib/aptss/lists/d.store.deepinos.org.cn_${STORE_URL}_Packages" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH,是d域名单目录仓库配置" else PACKAGES_DATA_PATH="/var/lib/aptss/lists/mirrors.sdu.edu.cn_spark-store-repository_${STORE_URL}_Packages" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH,是SDU镜像仓库配置" fi echo "正在运行包验证..." echo "Running Spark Package Verify..." DEB_SHA512SUM=$(sha512sum "$1" | cut -d ' ' -f 1) unset IS_SHA512SUM_CHECKED IS_SHA512SUM_CHECKED=$(cat "$PACKAGES_DATA_PATH" | grep "$DEB_SHA512SUM") } #################################### if [ $# -eq 0 ]; then echo "没有接收到参数,退出" echo "用法:$0 deb路径" echo "OMG-IT-GOES-WRONG" exit fi if [ "$(id -u)" != "0" ]; then echo "${TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT}" echo "OMG-IT-GOES-WRONG" exit 1 fi if [ ! -f "$1" ]; then echo "${TRANSHELL_CONTENT_FILE_NOT_EXIST},Trying to redownload" FILEPATH=$(dirname "$1") FILENAME=$(basename "$1") PACKAGE_NAME=$(echo "$FILENAME" | sed -r 's/^([^_]+)_.*$/\1/') VERSION=$(echo "$FILENAME" | sed -r 's/^[^_]+_([^_]+)_.*$/\1/') pushd ${FILEPATH} aptss download ${PACKAGE_NAME}=${VERSION} popd if [ ! -f "$1" ]; then echo "OMG-IT-GOES-WRONG" exit 1 else DEBPATH=$(realpath "$1") fi else DEBPATH=$(realpath "$1") fi hash_check "$DEBPATH" if [ -z "$IS_SHA512SUM_CHECKED" ]; then echo "尝试更新仓库信息重新校验" aptss ssupdate hash_check "$DEBPATH" if [ -z "$IS_SHA512SUM_CHECKED" ]; then echo -e "$TRANSHELL_CONTENT_HASH_CHECK_FAILED" zenity --info --icon-name=spark-store --height 270 --width 500 --text "$TRANSHELL_CONTENT_HASH_CHECK_FAILED" echo "OMG-IT-GOES-WRONG" exit 1 fi fi if [ ! -z "$IS_SHA512SUM_CHECKED" ]; then echo "校验成功,开始安装" echo "----------------------------------------------------------------------------------" package_name=$(dpkg-deb -f "$DEBPATH" Package) echo "Package name is $package_name" try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH") try_run_ret="$?" if [ "$try_run_ret" -ne 0 ]; then aptss update try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH") try_run_ret="$?" fi if [ "$try_run_ret" -ne 0 ]; then echo "OMG-IT-GOES-WRONG" echo -e "${try_run_output}" exit "$try_run_ret" fi dpkg -i "$DEBPATH" || aptss install -yf if [ "$?" = "0" ] && [ "$2" = "--delete-after-install" ]; then if dpkg -s "$package_name" >/dev/null 2>&1; then echo "软件包已安装:$package_name" create_desktop_file rm "$DEBPATH" echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}" else echo "软件包未安装:$package_name" echo "安装异常!抛出错误" echo "OMG-IT-GOES-WRONG" fi else echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}" if dpkg -s "$package_name" >/dev/null 2>&1; then echo "软件包已安装:$package_name" create_desktop_file else echo "软件包未安装:$package_name" echo "安装异常!抛出错误" echo "OMG-IT-GOES-WRONG" fi fi fi