mirror of
https://gitee.com/amber-ce/amber-ce-bookworm.git
synced 2025-07-09 15:16:02 +08:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
0f0c590ee4 | |||
7347bf0bee | |||
04bc7c8917 | |||
5fffd313f5 | |||
51e7c1a4d8 | |||
3fa34672ca | |||
51b30d0ef7 | |||
6246cf3c98 | |||
f169fee3ac | |||
1b2eaddb4d | |||
9071dbf2ff | |||
05c5b4a2b9 |
LICENSEREADME.mdREADME.zh.mdace-base.configbuild-pkg.shdebian-build.sh
debian
linker.shreplacer.shsrc
DEBIAN
opt/apps/@PKG_NAME@
ACE logo.pngACE-transparent.pngACE-uninstaller-orig.png
files
usr/share/icons
8
LICENSE
8
LICENSE
@ -1,7 +1,7 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
|
@ -18,7 +18,7 @@ Please use `git clone --recurse-submodules` to obtain the env
|
||||
|
||||
## Install Guide(Debian/Fedora/Arch)
|
||||
|
||||
Share Link:https://share.spark-app.store/index.php?share/folder&user=1&sid=wHP86Kp4
|
||||
Share Link:https://mirrors.sdu.edu.cn/spark-store/amber-ce/
|
||||
|
||||
Ubuntu 18.04 Need install https://packages.debian.org/buster/bubblewrap
|
||||
|
||||
@ -35,7 +35,7 @@ Run an amd64 Debian Bookworm container via LATX
|
||||
|
||||
Command: bookworm-run-x86
|
||||
|
||||
https://share.spark-app.store/index.php?share/folder&user=1&sid=GnktisUQ
|
||||
https://mirrors.sdu.edu.cn/spark-store/amber-ce/
|
||||
|
||||
---
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
## 安装指南 (Debian/Fedora/Arch)
|
||||
|
||||
|
||||
分享链接:https://share.spark-app.store/index.php?share/folder&user=1&sid=wHP86Kp4
|
||||
分享链接:https://mirrors.sdu.edu.cn/spark-store/amber-ce/
|
||||
|
||||
Ubuntu 18.04 需要安装 https://packages.debian.org/buster/bubblewrap
|
||||
|
||||
@ -30,7 +30,7 @@ Arch:`yay -S amber-ce-bookworm`
|
||||
|
||||
使用方法: bookworm-run-x86
|
||||
|
||||
https://share.spark-app.store/index.php?share/folder&user=1&sid=GnktisUQ
|
||||
https://mirrors.sdu.edu.cn/spark-store/amber-ce/
|
||||
|
||||
---
|
||||
|
||||
|
@ -2,3 +2,5 @@
|
||||
@HOST_NAME@=Amber-CE-Bookworm
|
||||
@EXEC_NAME@=bookworm-run
|
||||
@PRETTY_NAME@=Bookworm
|
||||
@VERSION@=12.8.5
|
||||
@CODE_NAME@=bookworm
|
||||
|
@ -22,13 +22,17 @@ read_config() {
|
||||
}
|
||||
|
||||
pushd $(dirname $(realpath $0))
|
||||
read_config "ace-base.config"
|
||||
cp ace-base.config ace-base-build.config
|
||||
echo "@ARCH@=$(dpkg --print-architecture)" >> ace-base-build.config
|
||||
read_config "ace-base-build.config"
|
||||
|
||||
# 访问变量
|
||||
echo "Package Name: $PKG_NAME"
|
||||
echo "Host Name: $HOST_NAME"
|
||||
echo "Executable Name: $EXEC_NAME"
|
||||
echo "Pretty Name: $PRETTY_NAME"
|
||||
echo "Architecture: $ARCH"
|
||||
echo "Codename: $CODE_NAME"
|
||||
|
||||
if [[ -z "$1" ]];then
|
||||
echo "Need TARGET DIR"
|
||||
@ -38,5 +42,5 @@ target_dir="${1}" # 要处理的目标目录
|
||||
|
||||
bash replacer.sh ${target_dir}/
|
||||
bash linker.sh ${target_dir}/
|
||||
cd ${target_dir}/opt/apps/$PKG_NAME/files && bash build-container.sh $(uname -m)
|
||||
cd ${target_dir}/opt/apps/$PKG_NAME/files && bash build-container.sh $ARCH $CODE_NAME
|
||||
popd
|
7
debian-build.sh
Executable file
7
debian-build.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
pushd $(dirname $(realpath $0))
|
||||
sudo apt install debootstrap systemd-container sudo file -y
|
||||
cp -vr src pkg
|
||||
bash build-pkg.sh pkg
|
||||
dpkg-deb -Z gzip -b pkg/ ./
|
||||
popd
|
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -1,8 +1,10 @@
|
||||
amber-ce-bookworm (12.8.0) UNRELEASED; urgency=low
|
||||
amber-ce-bookworm (12.8.5) UNRELEASED; urgency=low
|
||||
* 通用 ACE 构建,现不再需要单独使用构建脚本
|
||||
* 更方便地更改成其他ACE
|
||||
* 现可在容器内使用 dpkg-buildpackage
|
||||
* 支持 Ubuntu 25 等 systemd 不再提供 utmp 的情景下获取当前用户名
|
||||
* 自动添加 X-AMBER-CE-DESKTOP-NAME
|
||||
* 修复更新时的递归问题
|
||||
|
||||
-- shenmo <shenmo@spark-app.store> Wed, 25 Sep 2024 23:15:49 +0800
|
||||
|
||||
|
@ -22,13 +22,14 @@ read_config() {
|
||||
}
|
||||
|
||||
|
||||
read_config "ace-base.config"
|
||||
read_config "ace-base-build.config"
|
||||
|
||||
# 访问变量
|
||||
echo "Package Name: $PKG_NAME"
|
||||
echo "Host Name: $HOST_NAME"
|
||||
echo "Executable Name: $EXEC_NAME"
|
||||
echo "Pretty Name: $PRETTY_NAME"
|
||||
echo "Version: $VERSION"
|
||||
target_dir="${1}"
|
||||
mkdir ${target_dir}/usr/bin
|
||||
ln -vfs ../../opt/apps/$PKG_NAME/files/bin/ace-run ${target_dir}/usr/bin/$EXEC_NAME
|
||||
|
2
replacer.sh
Normal file → Executable file
2
replacer.sh
Normal file → Executable file
@ -3,7 +3,7 @@
|
||||
########################################
|
||||
# 配置部分
|
||||
########################################
|
||||
config_file="ace-base.config" # 配置文件路径
|
||||
config_file="ace-base-build.config" # 配置文件路径
|
||||
if [[ -z "$1" ]];then
|
||||
echo "Need TARGET DIR"
|
||||
exit
|
||||
|
13
src/DEBIAN/control
Normal file
13
src/DEBIAN/control
Normal file
@ -0,0 +1,13 @@
|
||||
Package: @PKG_NAME@
|
||||
Source: amber-ce
|
||||
Version: @VERSION@
|
||||
Architecture: @ARCH@
|
||||
Maintainer: shenmo <shenmo@spark-app.store>
|
||||
Installed-Size: 145627
|
||||
Depends: bubblewrap, flatpak, zenity, policykit-1 | pkexec | polkit-1 | polkit, systemd, procps
|
||||
Section: misc
|
||||
Conflists: ace-host-integration
|
||||
Priority: optional
|
||||
Multi-Arch: foreign
|
||||
Homepage: https://gitee.com/amber-ce/amber-ce-bookworm/
|
||||
Description: bwrap wrapper for install and running debs inside a @PRETTY_NAME@ container
|
18
src/DEBIAN/postinst
Executable file
18
src/DEBIAN/postinst
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
export PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
|
||||
|
||||
|
||||
|
||||
/opt/apps/$PACKAGE_NAME/files/bin/ace-init
|
||||
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable $PACKAGE_NAME-auto-upgrade
|
||||
systemctl start $PACKAGE_NAME-auto-upgrade
|
||||
|
||||
if [ -f /usr/lib/sysctl.d/$PACKAGE_NAME.conf ];then
|
||||
sysctl -p /usr/lib/sysctl.d/$PACKAGE_NAME.conf
|
||||
fi
|
||||
|
||||
|
||||
true
|
21
src/DEBIAN/postrm
Executable file
21
src/DEBIAN/postrm
Executable file
@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
|
||||
|
||||
|
||||
systemctl stop $PACKAGE_NAME-auto-upgrade
|
||||
systemctl disable $PACKAGE_NAME-auto-upgrade
|
||||
|
||||
|
||||
|
||||
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
||||
|
||||
echo "清理卸载残留"
|
||||
|
||||
rm -rf /opt/apps/$PACKAGE_NAME
|
||||
else
|
||||
echo "非卸载,跳过清理"
|
||||
fi
|
||||
|
||||
|
||||
|
Binary file not shown.
Before ![]() (image error) Size: 196 KiB After ![]() (image error) Size: 290 KiB ![]() ![]() |
Binary file not shown.
Before ![]() (image error) Size: 134 KiB After ![]() (image error) Size: 290 KiB ![]() ![]() |
Binary file not shown.
Before ![]() (image error) Size: 118 KiB After ![]() (image error) Size: 289 KiB ![]() ![]() |
@ -38,38 +38,51 @@ function log.warn() { log.log "warn" $@; }
|
||||
function log.info() { log.log "info" $@; }
|
||||
function log.debug() { log.log "debug" $@; }
|
||||
|
||||
|
||||
|
||||
function do_integrate(){
|
||||
local file=$1
|
||||
if [ -f "$file" ]; then
|
||||
exec_line=$(grep "^Exec=" "$file")
|
||||
# 检查是否是@EXEC_NAME@
|
||||
if [[ $exec_line != Exec="@EXEC_NAME@ "* ]]; then
|
||||
# 获取文件名(不带.desktop后缀)作为X-AMBER-CE-DESKTOP-NAME的值
|
||||
local desktop_name=$(basename "$file" .desktop)
|
||||
|
||||
# 检查是否已经处理过(通过检查X-AMBER-CE-DESKTOP-NAME字段)
|
||||
if ! grep -q "^X-AMBER-CE-DESKTOP-NAME=" "$file"; then
|
||||
echo "$file is detected. Processing host system integration..."
|
||||
|
||||
# 修改Exec行(如果尚未修改)
|
||||
if ! grep -q "^Exec=@EXEC_NAME@ " "$file"; then
|
||||
sed -i 's|^Exec=\(.*\)|Exec=@EXEC_NAME@ \1|' "$file"
|
||||
fi
|
||||
|
||||
# 删除TryExec行
|
||||
sed -i '/^TryExec=/d' "$file"
|
||||
|
||||
# 修改Name行(包括本地化Name)
|
||||
sed -i '/^Name=/ s/$/ (@PRETTY_NAME@)/' "$file"
|
||||
sed -i "/^Name\[${LANGUAGE}\]=/ s/\$/ (@PRETTY_NAME@)/" "$file"
|
||||
|
||||
# 修改GenericName行(包括本地化GenericName)
|
||||
sed -i '/^GenericName=/ s/$/ (@PRETTY_NAME@)/' "$file"
|
||||
sed -i "/^GenericName\[${LANGUAGE}\]=/ s/\$/ (@PRETTY_NAME@)/" "$file"
|
||||
|
||||
# 添加X-AMBER-CE-DESKTOP-NAME字段
|
||||
echo "X-AMBER-CE-DESKTOP-NAME=${desktop_name}" >> "$file"
|
||||
|
||||
# 处理Icon行
|
||||
icon_line=$(grep "^Icon=" "$file")
|
||||
if [[ "$icon_line" == "Icon=/"* ]]; then
|
||||
# 如果Icon=后面接的是/,则添加前缀
|
||||
sed -i 's|^Icon=/|Icon=/opt/apps/@PKG_NAME@/files/ace-env/|' "$file"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
chmod +x $file
|
||||
chmod +x "$file"
|
||||
}
|
||||
|
||||
if [ "${IS_ACE_ENV}" != "" ]; then
|
||||
if [ -e /opt/apps/ ]; then
|
||||
for app_dir in $(ls /opt/apps/); do
|
||||
for file in /opt/apps/$app_dir/entries/applications/*.desktop; do
|
||||
do_integrate $file
|
||||
|
||||
|
||||
do_integrate "$file"
|
||||
done
|
||||
done
|
||||
else
|
||||
@ -77,11 +90,9 @@ if [ "${IS_ACE_ENV}" != "" ] ;then
|
||||
fi
|
||||
|
||||
for file in /usr/share/applications/*.desktop; do
|
||||
do_integrate $file
|
||||
do_integrate "$file"
|
||||
done
|
||||
find "/usr/share/applications/" -xtype l -delete
|
||||
|
||||
else
|
||||
|
||||
log.error "DO NOT run me on host OS"
|
||||
fi
|
@ -86,8 +86,8 @@ chmod 777 $chrootEnvPath/etc/localtime
|
||||
bookworm-run cp /host/etc/locale.gen /etc/locale.gen && locale-gen
|
||||
bookworm-run touch /finish.flag
|
||||
bookworm-run apt clean
|
||||
bookworm-run chown -R $(who | awk '{print $1}' | head -n 1) /usr/lib/locale/
|
||||
sudo -u $(who | awk '{print $1}' | head -n 1) bwrap --dev-bind $chrootEnvPath/ / \
|
||||
bookworm-run chown -R $(get_current_user) /usr/lib/locale/
|
||||
sudo -u $(get_current_user) bwrap --dev-bind $chrootEnvPath/ / \
|
||||
--setenv PULSE_SERVER /run/user/$uid/pulse/native \
|
||||
--setenv PATH /amber-ce-tools/bin-override:$PATH \
|
||||
--setenv IS_ACE_ENV "1" \
|
||||
@ -112,4 +112,5 @@ sudo -u $(who | awk '{print $1}' | head -n 1) bwrap --dev-bind $chrootEnvPath/ /
|
||||
bookworm-run update-locale LANG=$LANG
|
||||
chown -R root $chrootEnvPath
|
||||
chmod 777 -R $chrootEnvPath/usr/share/icons
|
||||
rm -vfr $chrootEnvPath/dev/*
|
||||
${HERE}/amber-ce-configure-nvidia || true
|
@ -54,7 +54,7 @@ fi
|
||||
if [ -f "$DPKG_LIST_FILE" ]; then
|
||||
|
||||
if grep -q "$IN_CONTAINER_PATH" "$DPKG_LIST_FILE" || grep -q "/opt/apps/$PKGNAME_GUESS/entries/applications/$PKGNAME_GUESS.desktop" "$DPKG_LIST_FILE"; then
|
||||
bookworm-run apt autopurge $PKGNAME_GUESS -y
|
||||
@EXEC_NAME@ apt autopurge $PKGNAME_GUESS -y
|
||||
ret=$?
|
||||
if [ "$ret" = "0" ];then
|
||||
echo "Operation succeeded."
|
||||
@ -73,7 +73,7 @@ fi
|
||||
if grep -q "$IN_CONTAINER_PATH" "$file"; then
|
||||
PKGNAME_GUESS=$(basename "$file" .list | cut -d':' -f1)
|
||||
echo "Get pkgname $PKGNAME_GUESS, uninstalling..."
|
||||
bookworm-run apt autopurge $PKGNAME_GUESS -y
|
||||
@EXEC_NAME@ apt autopurge $PKGNAME_GUESS -y
|
||||
ret=$?
|
||||
if [ "$ret" = "0" ];then
|
||||
echo "Operation succeeded."
|
||||
|
@ -9,35 +9,40 @@ if [ `which systemd-nspawn` = "" ];then
|
||||
echo "Need to install systemd-container!"
|
||||
exit
|
||||
fi
|
||||
if [ "$2" = "" ];then
|
||||
echo "Usage: $0 ARCHITECTURE CODENAME"
|
||||
exit
|
||||
fi
|
||||
|
||||
sudo cp /usr/share/debootstrap/scripts/sid /usr/share/debootstrap/scripts/crimson -v
|
||||
sudo cp /usr/share/debootstrap/scripts/sid /usr/share/debootstrap/scripts/beige -v
|
||||
|
||||
CODENAME=$2
|
||||
|
||||
# Set distroname based on codename
|
||||
if [ "$CODENAME" = "beige" ] || [ "$CODENAME" = "crimson" ]; then
|
||||
DISTRONAME="deepin"
|
||||
else
|
||||
DISTRONAME="debian"
|
||||
fi
|
||||
|
||||
if [ "$1" = "amd64" ] || [ "$1" = "x86_64" ];then
|
||||
ARCH="amd64"
|
||||
ARCH_ANOTHERWAY="x64"
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} $2 ./ace-env https://mirrors.cernet.edu.cn/${DISTRONAME}/
|
||||
|
||||
elif [ "$1" = "arm64" ] || [ "$1" = "arm" ]|| [ "$1" = "aarch64" ];then
|
||||
ARCH="arm64"
|
||||
ARCH_ANOTHERWAY="arm64"
|
||||
|
||||
cd "`dirname $0`"
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} bookworm ./ace-env https://mirrors.ustc.edu.cn/debian/
|
||||
elif [ "$1" = "loongarch64" ] || [ "$1" = "loong64" ];then
|
||||
ARCH="loong64"
|
||||
ARCH_ANOTHERWAY="loong64"
|
||||
sudo debootstrap --no-check-gpg --include=libnotify-bin,debian-ports-archive-keyring,apt-utils,bash-completion,bc,curl,dialog,diffutils,gnupg,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libgl1-mesa-dri,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} --variant=buildd sid ./ace-env https://deb.debian.org/debian-ports/
|
||||
else
|
||||
echo "Need to point out architecture"
|
||||
exit
|
||||
sudo debootstrap --components=main,contrib,non-free,non-free-firmware --include=libnotify-bin,apt-utils,bash-completion,bc,curl,dialog,diffutils,findutils,less,libnss-myhostname,libvte-common,lsof,ncurses-base,passwd,pinentry-curses,procps,sudo,time,util-linux,wget,libegl1,libvulkan1,mesa-vulkan-drivers,locales,libglib2.0-bin --arch=${ARCH} $2 ./ace-env https://mirrors.cernet.edu.cn/${DISTRONAME}/
|
||||
|
||||
fi
|
||||
|
||||
|
||||
sudo rm -rf ace-env/var/cache/apt/archives/*.deb
|
||||
|
||||
sudo rm -vfr ace-env/dev/*
|
||||
sudo tar -I 'xz -T0' -cvf ace-env.tar.xz ace-env/*
|
||||
sudo rm -rf ace-env
|
||||
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
Before ![]() (image error) Size: 79 KiB After ![]() (image error) Size: 289 KiB ![]() ![]() |
Binary file not shown.
Before ![]() (image error) Size: 93 KiB After ![]() (image error) Size: 290 KiB ![]() ![]() |
Loading…
x
Reference in New Issue
Block a user