Compare commits

...

11 Commits

Author SHA1 Message Date
a9988f37f3 修复:更新提示失效 2024-01-29 23:16:18 +08:00
130839b368 修复:提示完了不更新 2024-01-29 23:04:46 +08:00
574da47849 修改如下
1. 支持滚动更新功能,自动跟随到最新的上游
2. 添加了systemd依赖和一个systemd服务,会在安装后启动(修改了postinst/rm)
2024-01-29 23:01:41 +08:00
081203e0d4 1 2024-01-29 08:07:08 +08:00
57e9b966e0 修改: README.md 2024-01-29 08:05:31 +08:00
667b83e52b 修改: README.md 2024-01-29 08:04:38 +08:00
d2cf07bd01 支持fedora 2024-01-28 00:00:01 +08:00
5e74ed9b91 !4 更新自描述文件,提供编译命令
Merge pull request !4 from 花雨落逝/master
2024-01-15 06:22:35 +00:00
花雨落逝
65dfa5291c update README.md.
Signed-off-by: 花雨落逝 <12135927+hylshi@user.noreply.gitee.com>
2024-01-15 06:01:04 +00:00
花雨落逝
2ad0ea3f42 update README.md.
Signed-off-by: 花雨落逝 <12135927+hylshi@user.noreply.gitee.com>
2024-01-15 05:36:05 +00:00
花雨落逝
aedcb5c1ed update README.md.
Signed-off-by: 花雨落逝 <12135927+hylshi@user.noreply.gitee.com>
2024-01-15 05:30:16 +00:00
13 changed files with 300 additions and 3 deletions

1
ACE-rpm/readme.md Normal file
View File

@@ -0,0 +1 @@
cd rpmbuild && rpmbuild -ba SPECS/bookworm-compatibility-mode.spec

View File

View File

View File

@@ -0,0 +1,58 @@
Name: cn.flamescion.bookworm-compatibility-mode
Version: 12.4.7
Release: 1
Summary: A container app packaging and distributing solution.
License: unknown
URL: https://gitee.com/amber-compatability-environment/bookworm-compatibility-mode
Source0: bookworm-compatibility-mode-%{version}.tar.gz
BuildRequires: debootstrap, dpkg, bash, which, systemd-container
Requires: bubblewrap, xdg-desktop-portal, flatpak, zenity, gcc
%description
A container app packaging and distributing solution.
%prep
%autosetup -p1 -n bookworm-compatibility-mode-%{version}
%global debug_package %{nil}
%post
/opt/apps/%{name}/files/bin/bookworm-init
%postun
if [ "$1" = "0" ] || [ "$1" = "1" ]; then
echo ""
rm -rf /opt/apps/%{name}
else
echo ""
fi
%install
cp -r src/opt %{buildroot}
cp -r src/etc %{buildroot}
cp -r src/usr %{buildroot}
pushd %{buildroot}/opt/apps/%{name}/files
if [ "%{_target_cpu}" = "aarch64" ]; then
bash build-container.sh arm64
elif [ "%{_target_cpu}" = "x86_64" ]; then
bash build-container.sh amd64
else
echo "Unsupportable arch!"
fi
popd
%files
%dir /opt/apps/%{name}
/opt/apps/%{name}/*
/etc/X11/Xsession.d/20ACE-Bookworm
/etc/profile.d/ACE-Bookworm.sh
%{_bindir}/*
%attr(755,root,root) /usr/lib/systemd/user-environment-generators/60-ACE-Bookworm
%attr(755,root,root) /usr/share/applications/*
/usr/share/icons/*
/usr/share/polkit-1/actions/cn.flamescion.ace-uninstaller.policy
%changelog
* Fri Jan 26 2024 懵仙兔兔 <acgm@qq.com> - 12.4.7-1
- First pello package

View File

View File

@@ -11,8 +11,25 @@
## 构建指南
### Debian
先构建容器再打包,容器位置在`src/opt/apps/cn.flamescion.bookworm-compatibility-mode/files`
下面是详细步骤:
1. 安装依赖sudo apt-get install arch-test debootstrap libnss-mymachines systemd-container
2.`src/opt/apps/cn.flamescion.bookworm-compatibility-mode/files`位置进入终端,执行`./build-container.sh amd64`[amd架构其他架构同理]`
3. 等待容器打包完成
4. 进入`bookworm-compatibility-mode`目录执行fakeroot dpkg-deb -b src cn.flamescion.bookworm-compatibility-mode.deb
5. 等待打包完成
### Fedora
`ACE-rpm`目录下有相关的说明
### Arch
https://bbs.spark-app.store/d/1668-xing-huo-ying-yong-shang-dian-on-ace
# Bookworm compatibility mode
@@ -28,4 +45,21 @@ Please use `git clone --recurse-submodules` to obtain the env
## Build Guide
### Debian
Build the container first then build the package. Container at `src/opt/apps/cn.flamescion.bookworm-compatibility-mode/files`
Here are the details:
1. Install dependencies: sudo apt-get install arch-test debootstrap libnss-mymachines systemd-container
2. Enter the terminal at `src/opt/apps/cn.flamescion.bookworm-compatibility-mode/files` and execute `./build-container.sh amd64`.[for amd,other arch please change]
3. Wait for the container to complete.
4.Get in to `bookworm-compatibility-mode` dir,run`fakeroot dpkg-deb -b src cn.flamescion.bookworm-compatibility-mode.deb
5.Wating for complete.
### Fedora
See readme in `ACE-rpm` directory
### Arch
https://bbs.spark-app.store/d/1668-xing-huo-ying-yong-shang-dian-on-ace

View File

@@ -1,8 +1,8 @@
Package: cn.flamescion.bookworm-compatibility-mode
Version: 12.4.7
Version: 12.4.8
Section: misc
Priority: optional
Depends: bubblewrap,flatpak,zenity,policykit-1,gcc
Depends: bubblewrap,flatpak,zenity,policykit-1,gcc,systemd
Maintainer: shenmo <shenmo@spark-app.store>
Architecture: amd64
Description: bwrap wrapper for install and running debs inside a bookworm container

View File

@@ -2,3 +2,8 @@
export PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
/opt/apps/$PACKAGE_NAME/files/bin/bookworm-init
if [ "${PACKAGE_NAME}" = "cn.flamescion.bookworm-compatibility-mode" ];then
systemctl daemon-reload
systemctl enable ace-auto-upgrade
systemctl start ace-auto-upgrade
fi

View File

@@ -1,5 +1,13 @@
#!/bin/bash
PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
if [ "${PACKAGE_NAME}" = "cn.flamescion.bookworm-compatibility-mode" ];then
systemctl stop ace-auto-upgrade
systemctl disable ace-auto-upgrade
fi
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
echo "清理卸载残留"
@@ -9,3 +17,5 @@ else
echo "非卸载,跳过清理"
fi

View File

@@ -23,7 +23,7 @@ exit 1
fi
cd "`dirname $0`"
sudo debootstrap --include=apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,gnupg2,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1-mesa,libgl1-mesa-glx,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./bookworm-env https://mirrors.ustc.edu.cn/debian/
sudo debootstrap --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,gnupg2,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1-mesa,libgl1-mesa-glx,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./bookworm-env https://mirrors.ustc.edu.cn/debian/
sudo rm -rf bookworm-env/var/cache/apt/archives/*.deb

View File

@@ -0,0 +1,175 @@
#!/bin/bash
LANGUAGE=en_US
#############################################################
# ===== Log =====
# log.info xxx
# log.warn xxx
# log.info xxx
# log.debug xxx
# 带颜色的echo
function log.color_output() {
local color=$1
shift 1
echo >&2 -e "\033[${color}m$@\033[0m"
return 0
}
# Log is named without prefix "utils." for convenience
# Usage: log.log <level> ...content
function log.log() {
if [[ $# < 2 ]]; then
return -1
fi
local level=$1
shift 1
case $level in
error) log.color_output "0;31" "[ERROR] $@" ;;
warn) log.color_output "1;33" "[WARN] $@" ;;
info) log.color_output "1;37" "[INFO] $@" ;;
debug) log.color_output "1;30" "[DEBUG] $@" ;;
esac
return 0
}
function log.error() { log.log "error" "$@"; }
function log.warn() { log.log "warn" $@; }
function log.info() { log.log "info" $@; }
function log.debug() { log.log "debug" $@; }
# 发送通知
function notify-send() {
# Detect user using the display
local user=$(who | awk '{print $1}' | head -n 1)
# Detect uid of the user
local uid=$(id -u $user)
log.debug "User is $user and the uid of it is $uid"
sudo -u $user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus notify-send $@
}
# 检测网络链接畅通
function network-check()
{
# 超时时间
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
# 网络畅通
return 0
else
# 网络不畅通
return 1
fi
}
###############################################################
if [ "$(id -u)" != "0" ]; then
log.error "Nope we need root to run"
exit -1
fi
network-check
if [ $? -ne 0 ] ; then
log.error "NETWORK_FAIL"
exit -1
fi
# The code above is modified from https://blog.csdn.net/yaxuan88521/article/details/120516298
if [ $(which aptss) ];then
APT_COMMAND=aptss
/usr/bin/apt update
log.info "Using aptss to operate the upgrade process since we detect it."
elif [ -e /usr/bin/apt ];then
APT_COMMAND=/usr/bin/apt
log.info "Using apt to operate the upgrade process."
else
log.error "Nope we support debian only now"
exit -1
fi
${APT_COMMAND} update
updatetext=`${APT_COMMAND} update 2>&1`
until [ "`echo $updatetext | grep E: `" = "" ];do
log.info "UPDATE_ERROR_AND_WAIT_15_SEC"
sleep 15
updatetext=`${APT_COMMAND} update 2>&1`
done
isupdate=`echo ${updatetext: -5}`
if [ "$isupdate" = "date." ] ; then
log.info "No need to upgrade. exit"
exit 0
fi
## 从这里开始,只有检测到了更新才会进行
update_app_number=`echo ${updatetext%package*} #从右向左截取第一个 src 后的字符串`
update_app_number=`echo ${update_app_number##*information...}`
# 获取用户选择的要更新的应用
PKG_LIST="$(env LANGUAGE=en_US /usr/bin/apt list --upgradable | awk NR\>1)"
# 指定分隔符为 \n
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
continue
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 -le 0 ] ; then
log.info "No package need to upgrade after ignoring those holded ones. exit"
exit 0
fi
## 如果都是hold或者版本一致的那就直接退出否则把剩余的给提醒了
user=$(who | awk '{print $1}' | head -n 1)
log.info "ACE环境中有 $update_app_number 个软件包可升级,正在自动升级"
notify-send -a cn.flamescion.bookworm-compatibility-mode "ACE兼容环境" "ACE环境中有${update_app_number}个软件包可升级,执行自动升级..."
${APT_COMMAND} clean
${APT_COMMAND} full-upgrade -y
${APT_COMMAND} clean
notify-send -a cn.flamescion.bookworm-compatibility-mode "ACE兼容环境" "自动升级结束"

View File

@@ -0,0 +1,14 @@
[Unit]
Description=Amber CE Auto upgrade
After=apt-daily.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=bookworm-run /flamescion-container-tools/ace-upgrader/ace-upgrader
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target