diff --git a/debian/changelog b/debian/changelog index 5e82510..7c121dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +spark-store (4.1.0) stable; urgency=medium + + * feat: 现在可以支持UOS签名包问题了 + +-- shenmo Fri, 30 Jan 2022 00:00:00 +0800 + spark-store (4.0.1) stable; urgency=medium * feat: 提升Ubuntu下的显示效果 diff --git a/src/main.cpp b/src/main.cpp index 75ca295..ec0139e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ DWIDGET_USE_NAMESPACE int main(int argc, char *argv[]) { // Get build time - static const QString version = "Version 4.0.1"; + static const QString version = "Version 4.1.0"; static const QDate buildDate = QLocale( QLocale::English ).toDate( QString(__DATE__).replace(" ", " 0"), "MMM dd yyyy"); static const QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss"); diff --git a/tool/update-upgrade/ss-do-upgrade-worker.sh b/tool/update-upgrade/ss-do-upgrade-worker.sh index 37e0e58..b76ddc3 100755 --- a/tool/update-upgrade/ss-do-upgrade-worker.sh +++ b/tool/update-upgrade/ss-do-upgrade-worker.sh @@ -1,26 +1,39 @@ #!/bin/bash -if [ "$(id -u)" != "0" ];then -pkexec "$0" "$@" -exit +if [ "$(id -u)" != "0" ] ; then + pkexec "$0" "$@" + exit fi - case $1 in ssupdate) - aptss ssupdate 2>&1 | tee /tmp/spark-store-app-ssupdate-log.txt - IS_SSUPDATE_ERROR=`cat /tmp/spark-store-app-ssupdate-log.txt | grep "E: "` - echo "$IS_SSUPDATE_ERROR" > /tmp/spark-store-app-ssupdate-status.txt + aptss ssupdate 2>&1 | tee /tmp/spark-store-app-ssupdate-log.txt + IS_SSUPDATE_ERROR=`cat /tmp/spark-store-app-ssupdate-log.txt | grep "E: "` + echo "$IS_SSUPDATE_ERROR" > /tmp/spark-store-app-ssupdate-status.txt ;; + upgradable-list) - bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt list --upgradable -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" | awk 'BEGIN {FS="/"} {print $1}' | awk NR\>1 + output=$(env LANGUAGE=en_US bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt list --upgradable -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="/dev/null" -o APT::Get::List-Cleanup="0" | awk NR\>1) + + IFS_OLD="$IFS" + IFS=$'\n' + + for line in $output ; do + PKG_NAME=$(echo $line | awk -F '/' '{print $1}') + PKG_NEW_VER=$(echo $line | awk -F ' ' '{print $2}') + PKG_CUR_VER=$(echo $line | awk -F ' ' '{print $6}' | awk -F ']' '{print $1}') + echo "${PKG_NAME} ${PKG_NEW_VER} ${PKG_CUR_VER}" + done + + IFS="$IFS_OLD" ;; + upgrade-app) - aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.txt - IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."` - echo "$IS_UPGRADE_ERROR" > /tmp/spark-store-app-upgrade-status.txt + aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.txt + IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."` + echo "$IS_UPGRADE_ERROR" > /tmp/spark-store-app-upgrade-status.txt ;; clean-log) - rm -f /tmp/spark-store-app-ssupdate-status.txt /tmp/spark-store-app-ssupdate-log.txt /tmp/spark-store-app-upgrade-log.txt /tmp/spark-store-app-upgrade-status.txt + rm -f /tmp/spark-store-app-ssupdate-status.txt /tmp/spark-store-app-ssupdate-log.txt /tmp/spark-store-app-upgrade-log.txt /tmp/spark-store-app-upgrade-status.txt ;; esac diff --git a/tool/update-upgrade/ss-do-upgrade.sh b/tool/update-upgrade/ss-do-upgrade.sh index 02b6ef5..506967a 100755 --- a/tool/update-upgrade/ss-do-upgrade.sh +++ b/tool/update-upgrade/ss-do-upgrade.sh @@ -1,58 +1,81 @@ #!/bin/bash touch /tmp/spark-store/upgradeStatus.txt -pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh ssupdate | zenity --progress --auto-close --pulsate --no-cancel --text="正在检查更新,请稍候..." --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -if [ -z `cat /tmp/spark-store-app-ssupdate-status.txt` != "0" ];then -echo "无错误" +# 执行 apt update +pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh ssupdate | zenity --progress --auto-close --pulsate --no-cancel --text="正在检查更新,请稍候..." --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + +if [ -z `cat /tmp/spark-store-app-ssupdate-status.txt` ] ; then + echo "无错误" + pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log else -zenity --error --text "检查更新进程出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -zenity --text-info --filename=/tmp/spark-store-app-ssupdate-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上 。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log -exit + zenity --error --text "检查更新进程出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + zenity --text-info --filename=/tmp/spark-store-app-ssupdate-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log + exit fi -pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log -PKG_LIST="$(pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)" -####如果没更新,就弹出不需要更新 -if [ -z "$PKG_LIST" ];then -zenity --info --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg +# 获取可更新应用列表 +PKG_LIST="$(pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)" +## 如果没更新,就弹出不需要更新 +if [ -z "$PKG_LIST" ] ; then + zenity --info --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg else -PKG_UPGRADE_LIST=`for PKG_NAME in $PKG_LIST; -do -#### 检测是否是hold状态 - if [ "$(dpkg-query -W -f='${Status}' $PKG_NAME | grep hold)" = "" ];then - echo "true" - echo "$PKG_NAME" - echo "$PKG_NAME" - else - echo "false" - echo "$PKG_NAME(无法更新:已被标记为保留)" - echo "$PKG_NAME" + ## 获取用户选择的要更新的应用 + ### 指定分隔符为 \n + IFS_OLD="$IFS" + IFS=$'\n' + + PKG_UPGRADE_LIST=`for line in $PKG_LIST ; do + PKG_NAME=$(echo $line | awk -F ' ' '{print $1}') + PKG_NEW_VER=$(echo $line | awk -F ' ' '{print $2}') + PKG_CUR_VER=$(echo $line | awk -F ' ' '{print $3}') + + dpkg --compare-versions $PKG_NEW_VER le $PKG_CUR_VER + if [ $? -eq 0 ] ; then + continue fi -done | zenity --list --text="选择你想更新的应用" --column=是否更新 --column=应用包名 --column="真的应用包名" --separator=" " --checklist --print-column=3 --multiple --height 350 --width 550 --hide-column=3 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg` + #### 检测是否是 hold 状态 + PKG_STA=$(dpkg-query -W -f='${db:Status-Want}' $PKG_NAME) + if [ "$PKG_STA" != "hold" ] ; then + echo "true" + echo "$PKG_NAME" + echo "$PKG_NEW_VER" + echo "$PKG_CUR_VER" + else + echo "false" + echo "$PKG_NAME(无法更新:已被标记为保留)" + echo "$PKG_NEW_VER" + echo "$PKG_CUR_VER" + fi +done` -#### 如果没有选择,则直接退出 + ### 还原分隔符 + IFS="$IFS_OLD" -if [ "$PKG_UPGRADE_LIST" = "" ];then -zenity --info --text "没有选中任何软件\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -else - -pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgrade-app $PKG_UPGRADE_LIST -y | zenity --progress --auto-close --no-cancel --pulsate --text=正在更新已选中的应用,请稍候... --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg - -if [ -z "`cat /tmp/spark-store-app-upgrade-status.txt`" ];then - -zenity --info --text "选中的软件已经更新完毕" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -else -zenity --error --text "更新出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -zenity --text-info --filename=/tmp/spark-store-app-upgrade-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上 。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里往下拉" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg -fi - - - -fi + ## 如果没有应用需要更新,则直接退出 + if [ -z "$PKG_UPGRADE_LIST" ] ; then + zenity --info --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + else + PKG_UPGRADE_LIST=$(echo "$PKG_UPGRADE_LIST" | zenity --list --text="选择你想更新的应用" --column="是否更新" --column="包名" --column="新版本" --column="从该版本更新" --separator=" " --checklist --multiple --print-column=4 --height 350 --width 550 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg) + ## 如果没有选择,则直接退出 + if [ -z "$PKG_UPGRADE_LIST" ] ; then + zenity --info --text "没有选中任何软件\n但是你并没有站在世界之巅" --title "星火商店更新检测服务" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + else + ### 更新用户选择的应用 + pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgrade-app $PKG_UPGRADE_LIST -y | zenity --progress --auto-close --no-cancel --pulsate --text="正在更新已选中的应用,请稍候..." --height 70 --width 400 --title="星火商店更新模块" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + #### 更新成功 + if [ -z "`cat /tmp/spark-store-app-upgrade-status.txt`" ] ; then + zenity --info --text "选中的软件已经更新完毕" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + else + #### 更新异常 + zenity --error --text "更新出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + zenity --text-info --filename=/tmp/spark-store-app-upgrade-log.txt --checkbox="我已复制了此文本框中的日志,且将会在反馈时附上 。反馈渠道可以在右上角菜单的设置中找到" --title="反馈渠道在商店右上角的设置里往下拉" --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg + fi + fi + fi fi rm -f touch /tmp/spark-store/upgradeStatus.txt -####从最开头 +# 从最开头 diff --git a/tool/update-upgrade/ss-update-notifier.sh b/tool/update-upgrade/ss-update-notifier.sh index 6b74858..a220741 100755 --- a/tool/update-upgrade/ss-update-notifier.sh +++ b/tool/update-upgrade/ss-update-notifier.sh @@ -1,96 +1,93 @@ #!/bin/bash -set -e -LANG=en.US +LANGUAGE=en_US +# 发送通知 function notify-send() { - #Detect the name of the display in use + # Detect 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 + # Detect user using the display local user=$(who | grep '('$display')' | awk '{print $1}' | head -n 1) - #Detect the id of the user + # Detect uid of the user local uid=$(id -u $user) - sudo -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus notify-send "$@" + su -u $user DISPLAY=$display DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus notify-send "$@" } -#检测网络链接畅通 +# 检测网络链接畅通 function network() { - #超时时间 + # 超时时间 local timeout=15 - #目标网站 + # 目标网站 local target=www.baidu.com - #获取响应状态码 + # 获取响应状态码 local ret_code=`curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1` - if [ "x$ret_code" = "x200" ]; then - #网络畅通 + if [ "x$ret_code" = "x200" ] ; then + # 网络畅通 return 0 else - #网络不畅通 + # 网络不畅通 return 1 fi - - return 0 } network -if [ $? -eq 1 ];then - echo "Network fail. Stop to avoid bother dpkg" - exit -1 +if [ $? -ne 0 ] ; then + echo "Network fail. Stop to avoid bother dpkg" + exit -1 fi -#The code above is modified from https://blog.csdn.net/yaxuan88521/article/details/120516298 +# The code above is modified from https://blog.csdn.net/yaxuan88521/article/details/120516298 -curl --progress-bar -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list" # 每日更新星火源文件 -mkdir -p /etc/apt/preferences.d -touch /etc/apt/preferences.d/sparkstore -cat << EOF >/etc/apt/preferences.d/sparkstore -Package: * -Pin: origin *.deepinos.org.cn -Pin-Priority: 100 - -EOF +curl --progress-bar -o /opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/sources.list.d/sparkstore.list" updatetext=`aptss ssupdate` - -rm /etc/apt/preferences.d/sparkstore - - isupdate=`echo ${updatetext: -5}` -if [ "$isupdate" = "date." ];then -exit 0 +if [ "$isupdate" = "date." ] ; then + exit 0 fi -#### 从这里开始,只有检测到了更新才会进行 +## 从这里开始,只有检测到了更新才会进行 update_app_number=`echo ${updatetext%package*} #从右向左截取第一个 src 后的字符串` update_app_number=`echo ${update_app_number##*information...}` +# 获取用户选择的要更新的应用 +PKG_LIST="$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)" +# 指定分隔符为 \n +IFS_OLD="$IFS" +IFS=$'\n' -PKG_LIST="$(bwrap --dev-bind / / --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list apt list --upgradable -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" | awk 'BEGIN {FS="/"} {print $1}' | awk NR\>1)" +for line in $PKG_LIST ; do + PKG_NAME=$(echo $line | awk -F ' ' '{print $1}') + PKG_NEW_VER=$(echo $line | awk -F ' ' '{print $2}') + PKG_CUR_VER=$(echo $line | awk -F ' ' '{print $3}') + dpkg --compare-versions $PKG_NEW_VER le $PKG_CUR_VER + if [ $? -eq 0 ] ; then + let update_app_number=$update_app_number-1 + continue + fi -for PKG_NAME in $PKG_LIST;do -if [ "$(dpkg-query -W -f='${Status}' $PKG_NAME | grep hold)" != "" ];then - let update_app_number=$update_app_number-1 - echo $update_app_number - echo $PKG_NAME -fi + ## 检测是否是 hold 状态 + PKG_STA=$(dpkg-query -W -f='${db:Status-Want}' $PKG_NAME) + if [ "$PKG_STA" = "hold" ] ; then + let update_app_number=$update_app_number-1 + fi done +# 还原分隔符 +IFS="$IFS_OLD" - -if [ $update_app_number -lt 1 ];then -exit +if [ $update_app_number -le 0 ] ; then + exit 0 fi -#### 如果都是hold的那就直接退出,否则把剩余的给提醒了 - -notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理" - +## 如果都是hold或者版本一致的那就直接退出,否则把剩余的给提醒了 +notify-send -a spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理"