mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-09-29 07:02:20 +08:00
仍然有点小问题的更新检测
This commit is contained in:
parent
d5877ffe00
commit
a3f3a9153a
@ -1,19 +1,32 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
if [ "$(id -u)" != "0" ];then
|
if [ "$(id -u)" != "0" ] ; then
|
||||||
pkexec "$0" "$@"
|
pkexec "$0" "$@"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
ssupdate)
|
ssupdate)
|
||||||
aptss ssupdate 2>&1 | tee /tmp/spark-store-app-ssupdate-log.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: "`
|
IS_SSUPDATE_ERROR=`cat /tmp/spark-store-app-ssupdate-log.txt | grep "E: "`
|
||||||
echo "$IS_SSUPDATE_ERROR" > /tmp/spark-store-app-ssupdate-status.txt
|
echo "$IS_SSUPDATE_ERROR" > /tmp/spark-store-app-ssupdate-status.txt
|
||||||
;;
|
;;
|
||||||
|
|
||||||
upgradable-list)
|
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)
|
upgrade-app)
|
||||||
aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.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."`
|
IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."`
|
||||||
|
@ -1,58 +1,76 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
touch /tmp/spark-store/upgradeStatus.txt
|
touch /tmp/spark-store/upgradeStatus.txt
|
||||||
|
|
||||||
|
# 执行 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
|
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
|
if [ -z `cat /tmp/spark-store-app-ssupdate-status.txt` ] ; then
|
||||||
echo "无错误"
|
echo "无错误"
|
||||||
|
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log
|
||||||
else
|
else
|
||||||
zenity --error --text "检查更新进程出现错误!按确定查看报错,可用于反馈" --title "星火商店更新检测模块" --height 200 --width 350 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
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
|
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
|
pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh clean-log
|
||||||
exit
|
exit
|
||||||
fi
|
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)"
|
PKG_LIST="$(pkexec /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)"
|
||||||
####如果没更新,就弹出不需要更新
|
## 如果没更新,就弹出不需要更新
|
||||||
if [ -z "$PKG_LIST" ];then
|
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
|
zenity --info --text "没有软件需要更新\n但是你并没有站在世界之巅" --title "星火商店更新检测模块" --height 150 --width 300 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||||
else
|
else
|
||||||
PKG_UPGRADE_LIST=`for PKG_NAME in $PKG_LIST;
|
## 指定分隔符为 \n
|
||||||
do
|
IFS_OLD="$IFS"
|
||||||
#### 检测是否是hold状态
|
IFS=$'\n'
|
||||||
if [ "$(dpkg-query -W -f='${Status}' $PKG_NAME | grep hold)" = "" ];then
|
|
||||||
|
## 获取用户选择的要更新的应用
|
||||||
|
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
|
||||||
|
### 检测是否是 hold 状态
|
||||||
|
PKG_STA=$(dpkg-query -W -f='${db:Status-Want}' $PKG_NAME)
|
||||||
|
if [ "$PKG_STA" != "hold" ] ; then
|
||||||
echo "true"
|
echo "true"
|
||||||
echo "$PKG_NAME"
|
echo "$PKG_NAME"
|
||||||
|
echo "$PKG_NEW_VER"
|
||||||
echo "$PKG_NAME"
|
echo "$PKG_NAME"
|
||||||
else
|
else
|
||||||
echo "false"
|
echo "false"
|
||||||
echo "$PKG_NAME(无法更新:已被标记为保留)"
|
echo "$PKG_NAME(无法更新:已被标记为保留)"
|
||||||
|
echo "$PKG_NEW_VER"
|
||||||
echo "$PKG_NAME"
|
echo "$PKG_NAME"
|
||||||
fi
|
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`
|
done | zenity --list --text="选择你想更新的应用" --column="是否更新" --column="包名" --column="新版本" --column="值" --separator=" " --checklist --multiple --print-column=4 --hide-column=4 --height 350 --width 550 --window-icon=/usr/share/icons/hicolor/scalable/apps/spark-store.svg`
|
||||||
|
|
||||||
#### 如果没有选择,则直接退出
|
## 还原分隔符
|
||||||
|
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
|
if [ "$PKG_UPGRADE_LIST" = "" ] ; then
|
||||||
else
|
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
|
### 更新用户选择的应用
|
||||||
|
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 "`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
|
rm -f touch /tmp/spark-store/upgradeStatus.txt
|
||||||
####从最开头
|
# 从最开头
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
|
||||||
LANG=en.US
|
LANG=en.US
|
||||||
|
|
||||||
function notify-send() {
|
function notify-send() {
|
||||||
@ -48,18 +47,11 @@ fi
|
|||||||
|
|
||||||
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"
|
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
|
|
||||||
|
|
||||||
updatetext=`aptss ssupdate`
|
updatetext=`aptss ssupdate`
|
||||||
|
|
||||||
rm /etc/apt/preferences.d/sparkstore
|
|
||||||
|
|
||||||
|
|
||||||
isupdate=`echo ${updatetext: -5}`
|
isupdate=`echo ${updatetext: -5}`
|
||||||
@ -72,24 +64,43 @@ update_app_number=`echo ${updatetext%package*} #从右向左截取第一个 src
|
|||||||
update_app_number=`echo ${update_app_number##*information...}`
|
update_app_number=`echo ${update_app_number##*information...}`
|
||||||
|
|
||||||
|
|
||||||
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)"
|
PKG_LIST="$(/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh upgradable-list)"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for PKG_NAME in $PKG_LIST;do
|
## 指定分隔符为 \n
|
||||||
if [ "$(dpkg-query -W -f='${Status}' $PKG_NAME | grep hold)" != "" ];then
|
IFS_OLD="$IFS"
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
## 获取用户选择的要更新的应用
|
||||||
|
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
|
let update_app_number=$update_app_number-1
|
||||||
echo $update_app_number
|
continue
|
||||||
echo $PKG_NAME
|
fi
|
||||||
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
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if [ $update_app_number -lt 1 ];then
|
|
||||||
|
if [ $update_app_number -le 0 ];then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
#### 如果都是hold的那就直接退出,否则把剩余的给提醒了
|
#### 如果都是hold或者版本一致的那就直接退出,否则把剩余的给提醒了
|
||||||
|
|
||||||
notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理"
|
notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user