diff --git a/debian/changelog b/debian/changelog index f115a35..cd87366 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +spark-store (3.1.5-4) stable; urgency=medium + + * 更改ss-apt-fast策略,现在只会在update,ssupdate和没有检测到配置文件的时候更新配置文件 + * 新增ss-apt-fast别名:aptss + * 更新检测服务优化:从分体改为一体 + * aptss 支持自动补全 + +-- shenmo <shenmo@spark-app.store> Fri, 30 Jan 2022 00:00:00 +0800 + spark-store (3.1.5-3) stable; urgency=medium * 包内自带密钥 diff --git a/debian/spark-store.postinst b/debian/spark-store.postinst index 723d775..d561a6d 100755 --- a/debian/spark-store.postinst +++ b/debian/spark-store.postinst @@ -2,6 +2,12 @@ case "$1" in configure) + + # config for aptss + mkdir -p /etc/aptss/sources.list.d + ln -s -f /etc/apt/sources.list /etc/aptss/sources.list + + # Check if /usr/local/bin existed mkdir -p /usr/local/bin @@ -11,7 +17,9 @@ case "$1" in ln -s -f /opt/durapps/spark-store/bin/spark-store /usr/local/bin/spark-store ln -s -f /opt/durapps/spark-store/bin/ssinstall /usr/local/bin/ssinstall ln -s -f /opt/durapps/spark-store/bin/spark-dstore-patch /usr/local/bin/spark-dstore-patch - ln -s -f /opt/durapps/spark-store/bin/ss-apt-fast /usr/local/bin/ss-apt-fast + ln -s -f /opt/durapps/spark-store/bin/aptss /usr/local/bin/ss-apt-fast + + ln -s -f /opt/durapps/spark-store/bin/aptss /usr/bin/aptss @@ -22,21 +30,12 @@ case "$1" in cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg - # Remove existing source file - rm -f /etc/apt/preferences.d/sparkstore - # Run apt update to avoid users being fucked up by the non-exist dependency problem - 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" - # 下载源列表 - 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 update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" - # 更新 + aptss ssupdate - # Create symbo links to start upgrade detect - ln -s /opt/durapps/spark-store/bin/update-upgrade/autostart/spark-update-notifier.desktop /etc/xdg/autostart/spark-update-notifier.desktop - # Start upgrade detect service systemctl enable spark-update-notifier service spark-update-notifier start diff --git a/debian/spark-store.prerm b/debian/spark-store.prerm index 6998d1a..2d7f696 100755 --- a/debian/spark-store.prerm +++ b/debian/spark-store.prerm @@ -7,10 +7,12 @@ rm /usr/local/bin/spark-dstore-patch rm /usr/local/bin/ussinstall rm /usr/local/bin/ussremove rm /usr/local/bin/ss-apt-fast +rm /usr/bin/aptss +rm -rf /etc/aptss/ # Remove residual symbol links to stop upgrade detect if exist -if [ -f /etc/xdg/autostart/spark-update-notifier.desktop ];then +if [ -e /etc/xdg/autostart/spark-update-notifier.desktop ];then rm /etc/xdg/autostart/spark-update-notifier.desktop fi @@ -22,11 +24,6 @@ systemctl disable spark-update-notifier -# Clean the update-number service place file if exist -if [ -d "/tmp/spark-store-updatenum/" ] ; then - rm -rf /tmp/spark-store-updatenum/ -fi - # Clean the auto install polkit file if exist if [ -f "/usr/share/polkit-1/actions/store.spark-app.ssinstall.policy" ] ; then rm /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy diff --git a/pkg/etc/apt/sources.list.d/sparkstore.list b/pkg/etc/aptss/sources.list.d/sparkstore.list similarity index 100% rename from pkg/etc/apt/sources.list.d/sparkstore.list rename to pkg/etc/aptss/sources.list.d/sparkstore.list diff --git a/pkg/usr/lib/systemd/system/spark-update-notifier.service b/pkg/usr/lib/systemd/system/spark-update-notifier.service index 90f6841..de8f8fa 100644 --- a/pkg/usr/lib/systemd/system/spark-update-notifier.service +++ b/pkg/usr/lib/systemd/system/spark-update-notifier.service @@ -6,7 +6,7 @@ After=apt-daily.service network.target network-online.target systemd-networkd.se [Service] Type=simple RemainAfterExit=yes -ExecStart=/opt/durapps/spark-store/bin/update-upgrade/ss-update-notify-placer.sh +ExecStart=/opt/durapps/spark-store/bin/update-upgrade/ss-update-notifier.sh Restart=on-failure RestartSec=10 diff --git a/pkg/usr/share/bash-completion/completions/aptss b/pkg/usr/share/bash-completion/completions/aptss new file mode 100644 index 0000000..4afc938 --- /dev/null +++ b/pkg/usr/share/bash-completion/completions/aptss @@ -0,0 +1,228 @@ +# Debian apt(8) completion -*- shell-script -*- + +_aptss() +{ + local sourcesdir="/etc/apt/sources.list.d" + local cur prev words cword + _init_completion || return + + local GENERIC_APT_GET_OPTIONS=' + -d --download-only + -y --assume-yes + --assume-no + -u --show-upgraded + -m --ignore-missing + -t --target-release + --download + --fix-missing + --ignore-hold + --upgrade + --only-upgrade + --allow-change-held-packages + --allow-remove-essential + --allow-downgrades + --print-uris + --trivial-only + --remove + --arch-only + --allow-unauthenticated + --allow-insecure-repositories + --install-recommends + --install-suggests + --no-install-recommends + --no-install-suggests + --fix-policy + ' + + # see if the user selected a command already + local COMMANDS=( + "ssupdate" + "list" + "search" + "show" "showsrc" + "install" "remove" "purge" "autoremove" + "update" + "upgrade" "full-upgrade" "dist-upgrade" + "edit-sources" + "help" + "source" "build-dep" + "clean" "autoclean" + "download" "changelog" + "moo" + "depends" "rdepends" + "policy") + + local command i + for (( i=0; i < ${#words[@]}-1; i++ )); do + if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then + command=${words[i]} + break + fi + done + + # Complete a -t<SPACE><TAB> + case $prev in + -t|--target-release) + COMPREPLY=( $( compgen -W "$( apt-cache policy -o Dir::Cache="/etc/aptss/" | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)" -- "$cur" ) ) + return 0 + ;; + esac + + # supported options per command + if [[ "$cur" == -* ]]; then + case $command in + install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove) + COMPREPLY=( $( compgen -W '--show-progress + --fix-broken --purge --verbose-versions --auto-remove + -s --simulate --dry-run + --download + --fix-missing + --fix-policy + --ignore-hold + --force-yes + --trivial-only + --reinstall --solver + -t --target-release'"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) ) + return 0 + ;; + update) + COMPREPLY=( $( compgen -W '--list-cleanup + --print-uris + --allow-insecure-repositories + ' -- "$cur" ) ) + return 0 + ;; + list) + COMPREPLY=( $( compgen -W '--installed --upgradable + --manual-installed + -v --verbose + -a --all-versions + -t --target-release + ' -- "$cur" ) ) + return 0 + ;; + show) + COMPREPLY=( $( compgen -W '-a --all-versions + ' -- "$cur" ) ) + return 0 + ;; + depends|rdepends) + COMPREPLY=( $( compgen -W '-i + --important + --installed + --pre-depends + --depends + --recommends + --suggests + --replaces + --breaks + --conflicts + --enhances + --recurse + --implicit' -- "$cur" ) ) + return 0 + ;; + search) + COMPREPLY=( $( compgen -W ' + -n --names-only + -f --full' -- "$cur" ) ) + return 0 + ;; + showsrc) + COMPREPLY=( $( compgen -W ' + --only-source' -- "$cur" ) ) + return 0 + ;; + source) + COMPREPLY=( $( compgen -W ' + -s --simulate --dry-run + -b --compile --build + -P --build-profiles + --diff-only --debian-only + --tar-only + --dsc-only + -t --target-release + '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) ) + return 0 + ;; + build-dep) + COMPREPLY=( $( compgen -W ' + -a --host-architecture + -s --simulate --dry-run + -P --build-profiles + -t --target-release + --purge --solver + '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) ) + return 0 + ;; + moo) + COMPREPLY=( $( compgen -W ' + --color + ' -- "$cur" ) ) + return 0 + ;; + clean|autoclean) + COMPREPLY=( $( compgen -W ' + -s --simulate --dry-run + ' -- "$cur" ) ) + return 0 + ;; + esac + fi + + # specific command arguments + if [[ -n $command ]]; then + case $command in + remove|purge|autoremove) + if [[ -f /etc/debian_version ]]; then + # Debian system + COMPREPLY=( $( \ + _xfunc dpkg _comp_dpkg_installed_packages $cur ) ) + else + # assume RPM based + _xfunc rpm _rpm_installed_packages + fi + return 0 + ;; + show|list|download|changelog|depends|rdepends) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \ + 2> /dev/null ) ) + return 0 + ;; + install) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \ + 2> /dev/null ) ) + if [[ "$cur" == ./* || "$cur" == /* ]]; then + _filedir "deb" + fi + return 0 + ;; + source|build-dep|showsrc|policy) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \ + 2> /dev/null ) $( apt-cache dumpavail -o Dir::Cache="/etc/aptss/" | \ + command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) ) + return 0 + ;; + edit-sources) + COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \ + -- "$cur" ) ) + return 0 + ;; + moo) + COMPREPLY=( $( compgen -W 'moo' \ + -- "$cur" ) ) + return 0 + ;; + esac + fi + + # no command yet, show what commands we have + if [ "$command" = "" ]; then + COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _aptss aptss + +# ex: ts=4 sw=4 et filetype=sh diff --git a/spark-store-project.pro b/spark-store-project.pro index 59a3657..b3d5916 100644 --- a/spark-store-project.pro +++ b/spark-store-project.pro @@ -21,11 +21,14 @@ tool.path = /opt/durapps/$${TARGET}/bin qm.files += translations/*.qm qm.path = /usr/share/spark-store/translations -preferences.files += pkg/etc/apt/preferences.d/sparkstore -preferences.path = /etc/apt/preferences.d +#preferences.files += pkg/etc/apt/preferences.d/sparkstore +#preferences.path = /etc/apt/preferences.d -sourceslist.files += pkg/etc/apt/sources.list.d/sparkstore.list -sourceslist.path = /etc/apt/sources.list.d +#sourceslist.files += pkg/etc/apt/sources.list.d/sparkstore.list +#sourceslist.path = /etc/apt/sources.list.d + +bash_completion.files += pkg/usr/share/bash-completion/completions/aptss +bash_completion.path = /usr/share/bash-completion/completions desktop.files += pkg/usr/share/applications/spark-store.desktop desktop.path = /usr/share/applications @@ -49,9 +52,9 @@ INSTALLS += \ qm \ desktop \ icon \ - sourceslist \ preferences \ tmp \ - service + service \ + bash_completion # polkit-1 # 暂时不添加 diff --git a/src/main.cpp b/src/main.cpp index ca51496..044cc9d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,7 +30,7 @@ int main(int argc, char *argv[]) DAboutDialog dialog; a.setAboutDialog(&dialog); dialog.setLicense(QObject::tr("We publish this program under GPL V3")); - dialog.setVersion(DApplication::buildVersion("Version 3.1.5-3")); + dialog.setVersion(DApplication::buildVersion("Version 3.1.5-4")); dialog.setProductIcon(QIcon::fromTheme("spark-store")); // 设置Logo dialog.setProductName(QLabel::tr("Spark Store")); dialog.setDescription( @@ -51,7 +51,7 @@ int main(int argc, char *argv[]) a.setOrganizationName("spark-union"); a.setOrganizationDomain("https://www.deepinos.org/"); a.setApplicationName("Spark Store"); //不需要翻译,否则 ~/.local/share/ 下文件夹名称也被翻译为中文 - a.setApplicationVersion(DApplication::buildVersion("3.1.5-3")); + a.setApplicationVersion(DApplication::buildVersion("3.1.5-4")); a.setApplicationAcknowledgementPage("https://gitee.com/deepin-community-store/spark-store"); a.setApplicationDescription( QObject::tr( diff --git a/tool/aptss b/tool/aptss new file mode 100755 index 0000000..a485080 --- /dev/null +++ b/tool/aptss @@ -0,0 +1,73 @@ +#/bin/bash + + + + + +if [ "$1" = "install" ] || [ "$1" = "upgrade" ] || [ "$1" = "full-upgrade" ] || [ "$1" = "download" ] ; then + +if [ ! -e "/tmp/aptss-conf/apt-fast.conf" ];then +###刷新apt-fast配置 +mkdir -p /tmp/aptss-conf/ +echo "从服务器获取配置和镜像列表..." +echo "Getting server and mirror lists..." +echo +curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf" +chmod -R 755 /tmp/aptss-conf + +fi + +DEPEND=`which apt-fast` +if [ "$DEPEND" = "" ] ; then +echo "未安装依赖:apt-fast 开始安装" +sudo aptss ssupdate && sudo 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 install apt-fast -y +fi + +###执行 +bwrap --dev-bind / / \ + --bind '/tmp/aptss-conf/apt-fast.conf' /etc/apt-fast.conf \ + --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list \ + apt-fast "$@" --allow-downgrades + + +elif [ "$1" = "ssupdate" ];then + +mkdir -p /tmp/aptss-conf/ +echo "从服务器获取配置和镜像列表..." +echo "Getting server and mirror lists..." +echo +curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf" +chmod -R 755 /tmp/aptss-conf + +sudo 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" +### 额外一份拿来给aptss自动补全用 +sudo 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 update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" +sudo 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 update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o Dir::Cache="/etc/aptss/" -o APT::Get::List-Cleanup="0" +#只更新星火源 + +elif [ "$1" = "update" ];then +sudo 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 /tmp/aptss-conf/ +echo "从服务器获取配置和镜像列表..." +echo "Getting server and mirror lists..." +echo +curl --progress-bar -o /tmp/aptss-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf" +chmod -R 755 /tmp/aptss-conf +### 额外一份拿来给aptss自动补全用 +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 "$@" -o APT::Get::List-Cleanup="0" + +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 "$@" -o APT::Get::List-Cleanup="0" -o Dir::Cache="/etc/aptss/" + +else + 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 "$@" +fi + + diff --git a/tool/ss-apt-fast b/tool/ss-apt-fast deleted file mode 100755 index 8e3299f..0000000 --- a/tool/ss-apt-fast +++ /dev/null @@ -1,42 +0,0 @@ -#/bin/bash - - - - -if [ "$1" = "install" ] || [ "$1" = "upgrade" ] || [ "$1" = "full-upgrade" ] || [ "$1" = "download" ] ; then - -###刷新apt-fast配置 -mkdir -p /tmp/ss-apt-fast-conf/sources.list.d -# 创建文件夹 -echo "从服务器获取配置和镜像列表..." -echo "Getting server and mirror lists..." -echo -curl --progress-bar -o /tmp/ss-apt-fast-conf/apt-fast.conf "https://gitee.com/deepin-community-store/repo_auto_update_script/raw/master/mirror-list-for-apt-fast/apt-fast.conf" -chmod -R 755 /tmp/ss-apt-fast-conf - - -DEPEND=`which apt-fast` -if [ "$DEPEND" = "" ] ; then -echo "未安装依赖:apt-fast 开始安装" -sudo ss-apt-fast ssupdate && sudo 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 install apt-fast -y -fi -###执行安装 -bwrap --dev-bind / / \ - --bind '/tmp/ss-apt-fast-conf/apt-fast.conf' /etc/apt-fast.conf \ - --bind '/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list' /etc/apt/sources.list.d/sparkstore.list \ - apt-fast "$@" --allow-downgrades - -rm -rf /tmp/ss-apt-fast-conf - -elif [ "$1" = "ssupdate" ];then -sudo 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" -sudo 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 update -o Dir::Etc::sourcelist="sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" -#只更新星火源 - -else - 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 "$@" -fi - - diff --git a/tool/ssinstall b/tool/ssinstall index 34d0932..db7ee0a 100755 --- a/tool/ssinstall +++ b/tool/ssinstall @@ -50,22 +50,22 @@ if [ "$(id -u)" != "0" ];then IS_INSTALLED=`which apt-fast` if [ "$IS_INSTALLED" = "" ] ; then echo "未安装依赖:apt-fast 开始安装" -echo "$upass" | sudo -S /usr/local/bin/ss-apt-fast ssupdate && echo "$upass" | sudo -S 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 install apt-fast -y +echo "$upass" | sudo -S aptss ssupdate && echo "$upass" | sudo -S 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 install apt-fast -y fi if [ "$DEPEND" != "" ] && [ "$isuos" != "" ]; then echo "UOS中系统依赖无法使用第三方下载工具,放弃使用apt-fast" echo ---------------------------------------------------------------------------------- -echo "$upass" | sudo -S dpkg -i $1 || sudo /usr/local/bin/ss-apt-fast ssupdate && sudo 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 install -yf +echo "$upass" | sudo -S dpkg -i $1 || sudo aptss ssupdate && sudo 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 install -yf fi if [ "$DEPEND" != "" ] && [ "$isuos" = "" ]; then -echo "检测到apt-fast,使用/usr/local/bin/ss-apt-fast进行多线程下载加速" +echo "检测到apt-fast,使用aptss进行多线程下载加速" echo ---------------------------------------------------------------------------------- -echo "$upass" | sudo -S dpkg -i $1 || sudo /usr/local/bin/ss-apt-fast ssupdate && sudo /usr/local/bin/ss-apt-fast install -yf +echo "$upass" | sudo -S dpkg -i $1 || sudo aptss ssupdate && sudo aptss install -yf fi @@ -78,19 +78,19 @@ else IS_INSTALLED=`which apt-fast` if [ "$IS_INSTALLED" = "" ] ; then echo "未安装依赖:apt-fast 开始安装" -/usr/local/bin/ss-apt-fast ssupdate && 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 install apt-fast -y +aptss ssupdate && 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 install apt-fast -y fi if [ "$DEPEND" != "" ] && [ "$isuos" != "" ]; then echo "UOS中系统依赖无法使用第三方下载工具,放弃使用apt-fast" echo ---------------------------------------------------------------------------------- -dpkg -i $1 || /usr/local/bin/ss-apt-fast ssupdate && 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 update && sudo 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 install -yf +dpkg -i $1 || aptss ssupdate && sudo 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 install -yf fi if [ "$DEPEND" != "" ] && [ "$isuos" = "" ]; then -echo "检测到apt-fast,使用/usr/local/bin/ss-apt-fast进行多线程下载加速" +echo "检测到apt-fast,使用aptss进行多线程下载加速" echo ---------------------------------------------------------------------------------- -dpkg -i $1 || /usr/local/bin/ss-apt-fast ssupdate && /usr/local/bin/ss-apt-fast install -yf +dpkg -i $1 || aptss ssupdate && aptss install -yf fi diff --git a/tool/update-upgrade/autostart/spark-update-notifier.desktop b/tool/update-upgrade/autostart/spark-update-notifier.desktop deleted file mode 100644 index d458c3b..0000000 --- a/tool/update-upgrade/autostart/spark-update-notifier.desktop +++ /dev/null @@ -1,5 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Type=Application -Exec=/opt/durapps/spark-store/bin/update-upgrade/ss-update-notify.sh -Name=spark-update-notifier diff --git a/tool/update-upgrade/ss-do-upgrade.sh b/tool/update-upgrade/ss-do-upgrade.sh index e599646..3e10b0c 100755 --- a/tool/update-upgrade/ss-do-upgrade.sh +++ b/tool/update-upgrade/ss-do-upgrade.sh @@ -16,14 +16,14 @@ echo "UOS中系统依赖无法使用第三方下载工具,使用apt-fast下载 for PKG_NAME in $PKG_LIST; do echo "$PKG_NAME 正在下载..." - sudo /usr/local/bin/ss-apt-fast download "$PKG_NAME" -y >/dev/null 2>&1; + sudo aptss download "$PKG_NAME" -y >/dev/null 2>&1; done echo "----开始安装" for PKG_NAME in $PKG_LIST; do echo "$PKG_NAME 正在准备更新..." - if sudo 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 install "$PKG_NAME" -y >/dev/null 2>&1; + if sudo 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 install "$PKG_NAME" -y >/dev/null 2>&1; then echo "$PKG_NAME 已更新" else @@ -38,7 +38,7 @@ else ###这是确定是否为UOS for PKG_NAME in $PKG_LIST; do echo "$PKG_NAME 正在准备更新..." - if sudo /usr/local/bin/ss-apt-fast install "$PKG_NAME" -y >/dev/null 2>&1; + if sudo aptss install "$PKG_NAME" -y >/dev/null 2>&1; then echo "$PKG_NAME 已更新" else diff --git a/tool/update-upgrade/ss-update-controler.sh b/tool/update-upgrade/ss-update-controler.sh index bcd8c46..3bc5134 100755 --- a/tool/update-upgrade/ss-update-controler.sh +++ b/tool/update-upgrade/ss-update-controler.sh @@ -51,20 +51,15 @@ case $option in ;; 1) echo "执行以下操作需要授权..." - if [ -f /etc/xdg/autostart/spark-update-notifier.desktop ];then + if [ -e /etc/systemd/system/multi-user.target.wants/spark-update-notifier.service ];then echo "---检测到已经启动了自动更新检测,执行关闭" sudo systemctl disable spark-update-notifier - sudo rm /etc/xdg/autostart/spark-update-notifier.desktop sleep 3 reset else echo "---未检测到自动更新检测,执行启动" sudo systemctl enable spark-update-notifier sudo service spark-update-notifier start -# ln -s /opt/durapps/spark-store/bin/update-upgrade/autostart/spark-update-notifier.desktop $XDG_CONFIG_HOME/autostart -# - sudo ln -s /opt/durapps/spark-store/bin/update-upgrade/autostart/spark-update-notifier.desktop /etc/xdg/autostart - /opt/durapps/spark-store/bin/update-upgrade/ss-update-notify.sh now sleep 3 reset fi @@ -72,8 +67,8 @@ case $option in 2) echo "执行以下操作需要授权..." - sudo ss-apt-fast ssupdate - /opt/durapps/spark-store/bin/update-upgrade/ss-upgrade-list.sh + sudo aptss ssupdate + /opt/durapps/spark-store/bin/update-upgrade/ss-upgrade-list.sh /opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh echo "---请按回车返回" read diff --git a/tool/update-upgrade/ss-update-notify-placer.sh b/tool/update-upgrade/ss-update-notifier.sh similarity index 65% rename from tool/update-upgrade/ss-update-notify-placer.sh rename to tool/update-upgrade/ss-update-notifier.sh index 4cd29f4..9850b19 100755 --- a/tool/update-upgrade/ss-update-notify-placer.sh +++ b/tool/update-upgrade/ss-update-notifier.sh @@ -1,9 +1,19 @@ #!/bin/bash set -e -rm -rf /tmp/spark-store-updatenum/number LANG=en.US -#!/bin/bash +function notify-send() { + #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 notify-send "$@" +} #检测网络链接畅通 function network() @@ -39,7 +49,7 @@ 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" # 每日更新星火源文件 -updatetext=`ss-apt-fast ssupdate` +updatetext=`aptss ssupdate` mkdir -p /tmp/spark-store-updatenum/ @@ -47,14 +57,14 @@ mkdir -p /tmp/spark-store-updatenum/ isupdate=`echo ${updatetext: -5}` if [ "$isupdate" = "date." ];then -sudo echo "0" > /tmp/spark-store-updatenum/number exit 0 fi update_app_number=`echo ${updatetext%package*} #从右向左截取第一个 src 后的字符串` update_app_number=`echo ${update_app_number##*information...}` -sudo echo "$update_app_number" > /tmp/spark-store-updatenum/number - + +notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理" + diff --git a/tool/update-upgrade/ss-update-notify.sh b/tool/update-upgrade/ss-update-notify.sh deleted file mode 100755 index ab8d13c..0000000 --- a/tool/update-upgrade/ss-update-notify.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -set -e -isexistnumber=0 -if [ "$1" = "now" ];then - if [ -f /tmp/spark-store-updatenum/number ];then - update_app_number=`cat /tmp/spark-store-updatenum/number` - echo "$update_app_number" - if [ "$update_app_number" = "0" ];then - exit 0 - fi - notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理" - fi -exit 0 -fi - -until [ $isexistnumber -eq 1 ];do -if [ -f /tmp/spark-store-updatenum/number ];then - sleep 10 - update_app_number=`cat /tmp/spark-store-updatenum/number` - echo "$update_app_number" - if [ "$update_app_number" = "0" ];then - exit 0 - fi - notify-send -i spark-store "星火更新提醒" "星火商店仓库中有$update_app_number个软件包可以更新啦!请到星火商店的菜单处理" - isexistnumber=1 -fi -sleep 10 -done diff --git a/tool/update-upgrade/ss-upgrade-list.sh b/tool/update-upgrade/ss-upgrade-list.sh index d708adc..83d62a8 100755 --- a/tool/update-upgrade/ss-upgrade-list.sh +++ b/tool/update-upgrade/ss-upgrade-list.sh @@ -3,4 +3,4 @@ set -e echo "---可更新的应用有:" -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" +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" diff --git a/tool/ussinstall b/tool/ussinstall deleted file mode 100755 index 600c97e..0000000 --- a/tool/ussinstall +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -reset - -echo "Copyright (c) 2019-2021 The Spark Project" - -if [ -x "/usr/bin/deepin-deb-installer" ] ; then - echo "深度软件包安装器已安装,开始检测证书" -else - echo "未安装深度软件包安装器,拒绝执行" - echo "UOS需要深度软件包安装器来认证签名" - echo "如果你用的是UOS,你能卸载这玩意说明你已经开了开发者模式......悄悄告诉你,放屁是不用脱裤子的!" - echo "如果你用的不是统信系发行版......所以你为什么要打开这个脚本?" - exit 1 -fi - -if [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; then - echo "检测到已经生成过证书,直接跳过询问" -else - until [ -f "/usr/bin/cert-tool" ] ; do - #强制未安装证书工具的不通过 - echo "该工具的原理是利用UOS的自签名安装包免开发者的特性,需要您的UOS ID账号和密码,请在使用工具前确保在应用商店中已安装过“证书工具”这个应用" - echo "如果没有安装,则无法使用。请确认安装后再进行下一步操作" - sleep 3 - echo "如果你确认已经安装了该应用,请按回车" - read renyijian - - #检测是否在说谎签名文件 - if [ -f "/usr/bin/cert-tool" ] ; then - echo "成功检测到cert-tool存在,开始检测证书\n" - else - echo "没有检测到该应用,请您再次确认“证书工具”已经安装!" - sleep 3 - clear - fi - done - - until [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; do - echo "没有检测到证书,准备调用证书工具生成证书,请输入您的UOS账号/密码。本脚本不会上传任何信息" - echo "请在此行输入您的UOS账号用户名/电话号/邮箱" - read -e account - echo "请在此行输入您的UOS账号密码" - read -e passwd - echo "即将安装证书,请在弹出的窗口安装" - cert-tool -username="$account" -password="$passwd" - done - echo "检测到已经生成过证书,准备签名" -fi -#这个if是判断是否已经有证书 - -unset account -unset passwd -unset renyijian - -debpath="" -cd /tmp - -until [ -f "$debpath" ] ; do - if [ ! $1 ] ; then - echo "没有检测到参数,以交互式安装运行" - echo "请输入deb文件的绝对路径或直接拖入deb文件(仅限支持的文件管理器,比如深度文管),结束后回车" - echo "生成的签名过的deb将保存在/tmp/signed_deb" - read debpath - else - echo "参数存在,直接开始签名\n生成的签名过的deb保存在/tmp/signed_deb" - debpath="$1" - echo "读取到的deb路径为:$debpath" - fi - debpath=`echo "$debpath" | sed $'s/\'//g'` - echo "去除可能的单引号后得到:$debpath" - - if [ -f $debpath ] ; then - echo "文件有效,开始签名" - echo "------------以下为签名工具输出------------" - deepin-elf-sign-deb "$debpath" - echo "------------签名工具输出已结束------------" - echo "签名结束,启动深度软件包管理器" - else - echo "路径出错,请确认你输入了正确的路径!" - sleep 3 - clear - fi -done - -file_name=$(basename "$debpath") - -echo "--------以下为深度软件包安装器输出--------" -deepin-deb-installer "/tmp/signed_deb/$file_name" -echo "--------深度软件包安装器输出已结束--------" -echo "删除临时文件" -rm /tmp/signed_deb/$file_name \ No newline at end of file diff --git a/tool/ussremove b/tool/ussremove deleted file mode 100755 index 3f5ce26..0000000 --- a/tool/ussremove +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/bash - -reset - -echo "Copyright (c) 2019-2021 The Spark Project" - -if [ -x "/usr/bin/deepin-deb-installer" ] ; then - echo "深度软件包安装器已安装,开始检测证书" -else - echo "未安装深度软件包安装器,拒绝执行" - echo "UOS需要深度软件包安装器来认证签名" - echo "如果你用的是UOS,你能卸载这玩意说明你已经开了开发者模式......悄悄告诉你,放屁是不用脱裤子的!" - echo "如果你用的不是统信系发行版......所以你为什么要打开这个脚本?" - exit 1 -fi - -if [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; then - echo "检测到已经生成过证书,直接跳过询问" -else - until [ -f "/usr/bin/cert-tool" ] ; do - #强制未安装证书工具的不通过 - echo "该工具的原理是利用UOS的自签名安装包免开发者的特性,需要您的UOS ID账号和密码,请在使用工具前确保在应用商店中已安装过“证书工具”这个应用" - echo "如果没有安装,则无法使用。请确认安装后再进行下一步操作" - echo "如果你确认已经安装了该应用,请按回车" - read renyijian - - #检测是否在说谎签名文件 - if [ -f "/usr/bin/cert-tool" ] ; then - echo "成功检测到cert-tool存在,开始检测证书\n" - else - echo "没有检测到该应用,请您再次确认“证书工具”已经安装!" - sleep 3 - clear - fi - done - - until [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; do - echo "没有检测到证书,准备调用证书工具生成证书,请输入您的UOS账号/密码。本脚本不会上传任何信息" - echo "请在此行输入您的UOS账号用户名/电话号/邮箱" - read account - echo "请在此行输入您的UOS账号密码" - read passwd - echo "即将安装证书,请在弹出的窗口安装" - cert-tool -username="$account" -password="$passwd" - done - echo "检测到已经生成过证书,准备签名" -fi -#这个if是判断是否已经有证书 - -unset account -unset passwd -unset renyijian - -mkdir -p /tmp/spark-store-appremover -cd /tmp/spark-store-appremover -#工作目录应当为 /tmp/spark-store-appremover - -while [ ! $pkgname ] ; do - if [ ! $1 ] ; then - echo "没有检测到包名,以交互式模式运行" - echo "请输入你要卸载的软件包名,输入结束后回车" - read pkgname - else - echo "检测到包名,跳过获取" - pkgname="$1" - echo "读取到的包名为:$pkgname" - fi - - if [ ! $pkgname ] ; then - echo "没有检测到包名,请重新输入!" - sleep 3 - clear - else - echo "包名读取成功,进入下一步" - fi -done - -#while [ ! $version ] ; do -# if [ ! $2 ] ; then -# echo "没有检测到版本号,以交互式模式运行" -# echo "请输入你要卸载的软件包版本号,输入结束后回车" -# read version -# else -# echo "检测到包名,跳过获取" -# version="$2" -# echo "读取到的版本号为:$version" -# fi -# -# if [ ! $version ] ; then -# echo "没有检测到版本号,请重新输入!" -# sleep 3 -# clear -# else -# echo "版本号读取成功,进入下一步" -# fi -#done - -#发现版本号不一定一致也可以卸载 -version="1.0" -echo "开始生成deb包" -echo "输出的control文件为" -echo "" -echo "Package: $pkgname" -echo "Version: $version" -echo "Depends: " -echo "Maintainer: spark-store" -echo "Description: 这是一个假软件包,请点击卸载" -echo "Architecture: $(arch)" -echo "-----------------------开始生成-----------------------" -workdir=$(pwd) -echo "工作目录为$workdir" -mkdir DEBIAN -cd DEBIAN -touch control -echo "Package: $pkgname" >> ./control -echo "Version: $version" >> ./control -echo "Depends: " >> ./control -echo "Maintainer: spark-store" >> ./control -echo "Description: 这是一个假软件包,请点击卸载" >> ./control -echo "Architecture: $(arch)" >> ./control - -echo "-----------------------开始打包-----------------------" -cd .. -workdir=$(pwd) -echo "回退到工作目录,当前目录位于$workdir" -fakeroot dpkg -b . ./uninstall.deb -echo "-----------------------打包结束-----------------------" - -cd /tmp - -echo "-----------------------开始签名-----------------------" -deepin-elf-sign-deb "/tmp/spark-store-appremover/uninstall.deb" -echo "-----------------------签名结束-----------------------" -echo "-----------------启动深度软件包管理器-------------------" - -deepin-deb-installer "/tmp/signed_deb/uninstall.deb" - -file_name=$(basename "/tmp/signed_deb/uninstall.deb") -echo "---------------以上为深度软件包管理器输出----------------" -echo "删除临时包" -rm "/tmp/signed_deb/$file_name" -rm -r /tmp/spark-store-appremover