This commit is contained in:
shenmo 2025-04-13 19:55:27 +08:00
parent 819e680222
commit 90ad08a6f9
3 changed files with 175 additions and 114 deletions

3
debian/changelog vendored

@ -1,7 +1,8 @@
spark-store (4.6.5) UNRELEASED; urgency=medium spark-store (4.7.0) UNRELEASED; urgency=medium
* aptss 第二、三阶段加速 * aptss 第二、三阶段加速
* 修复部分应用无法启动的问题 * 修复部分应用无法启动的问题
* 支持使用 ACE deepin23 trixie
-- shenmo <shenmo@spark-app.store> Tue, 24 Sep 2024 11:27:08 +0800 -- shenmo <shenmo@spark-app.store> Tue, 24 Sep 2024 11:27:08 +0800

@ -166,77 +166,107 @@ IS_SHA512SUM_CHECKED=skipped
if [ ! -z "$IS_SHA512SUM_CHECKED" ]; then if [ ! -z "$IS_SHA512SUM_CHECKED" ]; then
echo "校验跳过,开始安装" echo "校验跳过,开始安装"
echo "----------------------------------------------------------------------------------" echo "----------------------------------------------------------------------------------"
package_name=$(dpkg-deb -f "$DEBPATH" Package) package_name=$(dpkg-deb -f "$DEBPATH" Package)
echo "Package name is $package_name" 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_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH")
try_run_ret="$?" try_run_ret="$?"
# 安装失败后进行 aptss update 刷新,随后尝试在主机安装 # 安装失败后进行 aptss 刷新,随后尝试在主机安装
if [ "$try_run_ret" -ne 0 ]; then if [ "$try_run_ret" -ne 0 ]; then
aptss update aptss update
try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH") try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH")
try_run_ret="$?" try_run_ret="$?"
fi fi
if [ "$try_run_ret" -ne 0 ]; then ## 若安装检测仍然失败
if [[ "$IS_ACE_ENV" == "" ]];then ## 如果已经在ACE里面则不进入分支 if [ "$try_run_ret" -ne 0 ]; then ## 若安装检测仍然失败
if [[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
# 定义按顺序尝试的ACE环境命令:推荐安装包)
declare -a ace_commands_order=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
"deepin23-run:amber-ce-deepin23"
)
success=false
recommendation_msg=""
# 收集所有推荐信息
for ace_entry in "${ace_commands_order[@]}"; do
recommendation_msg+="您可安装 ${ace_entry%%:*} 兼容环境后重试: ${ace_entry#*:}\n"
done
if command -v bookworm-run ;then ## 如果 bookworm-run 可用则进行安装 # 按顺序尝试每个ACE环境
echo "----------------------------------------" for ace_entry in "${ace_commands_order[@]}"; do
echo "Attention: USING ACE BOOKWORM TO INSTALL" ace_cmd=${ace_entry%%:*}
echo "----------------------------------------" if command -v "$ace_cmd" >/dev/null 2>&1; then
bookworm-run ensure_aptss_exist echo "----------------------------------------"
try_run_output=$(bookworm-run aptss install --dry-run "$DEBPATH") echo "正在尝试使用 $ace_cmd 环境安装..."
try_run_ret="$?" echo "----------------------------------------"
# 在ACE环境中执行安装检测
$ace_cmd ensure_aptss_exist
try_run_output=$($ace_cmd aptss install --dry-run "$DEBPATH" 2>&1)
try_run_ret="$?"
# 如果首次检测失败则更新后重试
if [ "$try_run_ret" -ne 0 ]; then if [ "$try_run_ret" -ne 0 ]; then
bookworm-run aptss update $ace_cmd aptss update
try_run_output=$(bookworm-run aptss install --dry-run "$DEBPATH") try_run_output=$($ace_cmd aptss install --dry-run "$DEBPATH" 2>&1)
try_run_ret="$?" try_run_ret="$?"
fi fi
if [ "$try_run_ret" -ne 0 ]; then
echo "OMG-IT-GOES-WRONG" # 最终检测结果处理
if [ "$try_run_ret" -eq 0 ]; then
echo "----------------------------------------"
echo "在 $ace_cmd 环境中预检成功,开始安装..."
echo "----------------------------------------"
$ace_cmd 'dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf'
success=true
break # 跳出循环
else
echo "----------------------------------------"
echo "在 $ace_cmd 环境中安装预检失败,错误信息:"
echo -e "${try_run_output}" echo -e "${try_run_output}"
echo "----------------------------------------" echo "----------------------------------------"
echo "Attention: USING ACE BOOKWORM TO INSTALL" fi
echo "----------------------------------------"
exit "$try_run_ret"
fi fi
bookworm-run 'dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf ' done
fi
else # 如果在主机安装失败且未安装ACE报错退出并推荐安装 ACE if ! $success; then
echo "OMG-IT-GOES-WRONG" echo "OMG-IT-GOES-WRONG"
echo -e "${try_run_output}" echo -e "${try_run_output}"
echo "您可在商店安装 ACE Bookworm 兼容环境后重试安装 https://bbs.deepin.org.cn/post/285056 " echo -e "所有ACE环境尝试失败推荐安装以下任一兼容环境:\n${recommendation_msg}"
exit "$try_run_ret" exit "$try_run_ret"
fi fi
else ## 如果主机安装检测成功了,进入主机安装分支 else # 已经在ACE环境中仍失败直接退出
echo "OMG-IT-GOES-WRONG"
dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf echo -e "${try_run_output}"
exit "$try_run_ret"
fi fi
### 退出阶段 else ## 如果主机安装检测成功
dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf
fi
if [ "$?" = "0" ] && [ "$2" = "--delete-after-install" ]; then ### 退出阶段保持不变 ###
if dpkg -s "$package_name" >/dev/null 2>&1; then if [ "$?" = "0" ] && [ "$2" = "--delete-after-install" ]; then
echo "软件包已安装:$package_name" if dpkg -s "$package_name" >/dev/null 2>&1; then
create_desktop_file echo "软件包已安装:$package_name"
rm "$DEBPATH" create_desktop_file
echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}" unlock_file $DEBPATH
else rm "$DEBPATH"
echo "软件包未安装:$package_name" echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}"
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
fi
else else
echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}" echo "软件包未安装:$package_name"
if dpkg -s "$package_name" >/dev/null 2>&1; then echo "安装异常!抛出错误"
echo "软件包已安装:$package_name" echo "OMG-IT-GOES-WRONG"
create_desktop_file fi
else else
echo "软件包未安装:$package_name" echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}"
echo "安装异常!抛出错误" if dpkg -s "$package_name" >/dev/null 2>&1; then
echo "OMG-IT-GOES-WRONG" echo "软件包已安装:$package_name"
fi create_desktop_file
else
echo "软件包未安装:$package_name"
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
fi fi
fi fi
fi

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
source /opt/durapps/spark-store/bin/bashimport/transhell.amber source /opt/durapps/spark-store/bin/bashimport/transhell.amber
load_transhell_debug load_transhell_debug
@ -61,15 +62,15 @@ function zenity() {
} }
function hash_check() { function hash_check() {
if [ ! -e "/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" ] && \ if [ ! -e "/var/lib/aptss/lists/${SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL}_${STORE_URL}_Packages" ] && \
[ ! -e "/var/lib/aptss/lists/d.store.deepinos.org.cn_${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_${STORE_URL}_Packages" ]; then [ ! -e "/var/lib/aptss/lists/mirrors.sdu.edu.cn_spark-store_${STORE_URL}_Packages" ]; then
echo "接收星火仓库软件信息中..." echo "接收星火仓库软件信息中..."
aptss ssupdate aptss ssupdate
fi fi
if [ -e "/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" ]; then if [ -e "/var/lib/aptss/lists/${SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL}_${STORE_URL}_Packages" ]; then
PACKAGES_DATA_PATH="/var/lib/aptss/lists/d.spark-app.store_${STORE_URL}_Packages" PACKAGES_DATA_PATH="/var/lib/aptss/lists/${SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL}_${STORE_URL}_Packages"
echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是星火域名仓库配置" echo "星火仓库的Packages位置为 $PACKAGES_DATA_PATH是星火域名仓库配置"
elif [ -e "/var/lib/aptss/lists/d.store.deepinos.org.cn_${STORE_URL}_Packages" ]; then 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" PACKAGES_DATA_PATH="/var/lib/aptss/lists/d.store.deepinos.org.cn_${STORE_URL}_Packages"
@ -179,78 +180,107 @@ fi
if [ ! -z "$IS_SHA512SUM_CHECKED" ]; then if [ ! -z "$IS_SHA512SUM_CHECKED" ]; then
echo "校验成功,开始安装" echo "校验成功,开始安装"
echo "----------------------------------------------------------------------------------" echo "----------------------------------------------------------------------------------"
package_name=$(dpkg-deb -f "$DEBPATH" Package) package_name=$(dpkg-deb -f "$DEBPATH" Package)
echo "Package name is $package_name" 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_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH")
try_run_ret="$?" try_run_ret="$?"
# 安装失败后进行 aptss update 刷新,随后尝试在主机安装 # 安装失败后进行 aptss 刷新,随后尝试在主机安装
if [ "$try_run_ret" -ne 0 ]; then if [ "$try_run_ret" -ne 0 ]; then
aptss update aptss update
try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH") try_run_output=$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh test-install-app "$DEBPATH")
try_run_ret="$?" try_run_ret="$?"
fi fi
if [ "$try_run_ret" -ne 0 ]; then ## 若安装检测仍然失败
if [[ "$IS_ACE_ENV" == "" ]];then ## 如果已经在ACE里面则不进入分支 if [ "$try_run_ret" -ne 0 ]; then ## 若安装检测仍然失败
if [[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
# 定义按顺序尝试的ACE环境命令:推荐安装包)
declare -a ace_commands_order=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
"deepin23-run:amber-ce-deepin23"
)
success=false
recommendation_msg=""
# 收集所有推荐信息
for ace_entry in "${ace_commands_order[@]}"; do
recommendation_msg+="您可安装 ${ace_entry%%:*} 兼容环境后重试: ${ace_entry#*:}\n"
done
if command -v bookworm-run ;then ## 如果 bookworm-run 可用则进行安装 # 按顺序尝试每个ACE环境
echo "----------------------------------------" for ace_entry in "${ace_commands_order[@]}"; do
echo "Attention: USING ACE BOOKWORM TO INSTALL" ace_cmd=${ace_entry%%:*}
echo "----------------------------------------" if command -v "$ace_cmd" >/dev/null 2>&1; then
bookworm-run ensure_aptss_exist echo "----------------------------------------"
try_run_output=$(bookworm-run aptss install --dry-run "$DEBPATH") echo "正在尝试使用 $ace_cmd 环境安装..."
try_run_ret="$?" echo "----------------------------------------"
# 在ACE环境中执行安装检测
$ace_cmd ensure_aptss_exist
try_run_output=$($ace_cmd aptss install --dry-run "$DEBPATH" 2>&1)
try_run_ret="$?"
# 如果首次检测失败则更新后重试
if [ "$try_run_ret" -ne 0 ]; then if [ "$try_run_ret" -ne 0 ]; then
bookworm-run aptss update $ace_cmd aptss update
try_run_output=$(bookworm-run aptss install --dry-run "$DEBPATH") try_run_output=$($ace_cmd aptss install --dry-run "$DEBPATH" 2>&1)
try_run_ret="$?" try_run_ret="$?"
fi fi
if [ "$try_run_ret" -ne 0 ]; then
echo "OMG-IT-GOES-WRONG" # 最终检测结果处理
if [ "$try_run_ret" -eq 0 ]; then
echo "----------------------------------------"
echo "在 $ace_cmd 环境中预检成功,开始安装..."
echo "----------------------------------------"
$ace_cmd 'dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf'
success=true
break # 跳出循环
else
echo "----------------------------------------"
echo "在 $ace_cmd 环境中安装预检失败,错误信息:"
echo -e "${try_run_output}" echo -e "${try_run_output}"
echo "----------------------------------------" echo "----------------------------------------"
echo "Attention: USING ACE BOOKWORM TO INSTALL" fi
echo "----------------------------------------"
exit "$try_run_ret"
fi fi
bookworm-run 'dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf ' done
fi
else # 如果在主机安装失败且未安装ACE报错退出并推荐安装 ACE if ! $success; then
echo "OMG-IT-GOES-WRONG" echo "OMG-IT-GOES-WRONG"
echo -e "${try_run_output}" echo -e "${try_run_output}"
echo "您可在商店安装 ACE Bookworm 兼容环境后重试安装 https://bbs.deepin.org.cn/post/285056 " echo -e "所有ACE环境尝试失败推荐安装以下任一兼容环境:\n${recommendation_msg}"
exit "$try_run_ret" exit "$try_run_ret"
fi fi
else ## 如果主机安装检测成功了,进入主机安装分支 else # 已经在ACE环境中仍失败直接退出
echo "OMG-IT-GOES-WRONG"
dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf echo -e "${try_run_output}"
exit "$try_run_ret"
fi fi
### 退出阶段 else ## 如果主机安装检测成功
dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yf
fi
if [ "$?" = "0" ] && [ "$2" = "--delete-after-install" ]; then ### 退出阶段保持不变 ###
if dpkg -s "$package_name" >/dev/null 2>&1; then if [ "$?" = "0" ] && [ "$2" = "--delete-after-install" ]; then
echo "软件包已安装:$package_name" if dpkg -s "$package_name" >/dev/null 2>&1; then
create_desktop_file echo "软件包已安装:$package_name"
unlock_file $DEBPATH create_desktop_file
rm "$DEBPATH" unlock_file $DEBPATH
echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}" rm "$DEBPATH"
else echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}"
echo "软件包未安装:$package_name"
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
fi
else else
echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}" echo "软件包未安装:$package_name"
if dpkg -s "$package_name" >/dev/null 2>&1; then echo "安装异常!抛出错误"
echo "软件包已安装:$package_name" echo "OMG-IT-GOES-WRONG"
create_desktop_file fi
else else
echo "软件包未安装:$package_name" echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}"
echo "安装异常!抛出错误" if dpkg -s "$package_name" >/dev/null 2>&1; then
echo "OMG-IT-GOES-WRONG" echo "软件包已安装:$package_name"
fi create_desktop_file
else
echo "软件包未安装:$package_name"
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
fi fi
fi fi
fi