diff --git a/README.md b/README.md index e69de29..5e20da0 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,33 @@ +# APM 原理和软件包制作流程 + +制作apm包upperdir的流程 + +先安装base包(从release) + +sudo mount -t overlay overlay -o lowerdir='/var/lib/apm/amber-pm-trixie-host/files/ace-env',upperdir=core/,workdir=work/ ./ace-env + +随后chroot进入进行安装操作,直接进行 apt install 或者其他都可以,完成后 + +core: 保存新增文件 +work: 保存变更信息 +需把这两个目录重新拥有并权限换成755 + + +fuse-overlayfs -o lowerdir='/var/lib/apm/amber-pm-trixie-host/files/ace-env',upperdir=core/,workdir=work/ ./ace-env + +即可只读挂载并进行ace操作 + +spec: +对于lowerdir +/var/lib/apm/包名/files/ace-env 是 lowerdir + +对于upperdir +/var/lib/apm/包名/files/core是upperdir +/var/lib/apm/包名/files/work是upperdir的work +/var/lib/apm/包名/files/ace-env是chroot进的目录(需要在打包好的包内加上允许读写这个目录——或者后续换成tmp的挂载点) +/var/lib/apm/包名/info是配置信息,目前只写了依赖的base,后续可以定义默认启动指令等 +/var/lib/apm/包名/entries是desktop位置,后续会加到自动展示中 + + + +apm run 包名: 寻找 /var/lib/apm/包名/是否存在。若存在,根据info文件合成 fuser-overlayfs 参数进行挂载,随后用ACE工具chroot进入进行启动 \ No newline at end of file diff --git a/ace-run b/ace-run index b6ad0d6..2fd2494 100755 --- a/ace-run +++ b/ace-run @@ -2,7 +2,7 @@ -chrootEnvPath=$(pwd)/ace-env +chrootEnvPath="${chrootEnvPath:-$(pwd)/ace-env}" diff --git a/apm.sh b/apm.sh deleted file mode 100755 index f2e664e..0000000 --- a/apm.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -VERSION=0.1 -# 获取脚本名称用于帮助信息 -SCRIPT_NAME=$(basename "$0") - -# 帮助信息函数 -show_help() { - cat < 运行指定软件包的可执行文件 - debug 显示调试系统信息 - -h, --help 显示此帮助信息 - --amber 彩蛋功能 - -EOF -} - -# 调试信息函数 -debug_info() { - echo "======= APM Debug Information =======" - echo "User: $(whoami)" - echo "Hostname: $(hostname)" - echo "OS: $(lsb_release -ds 2>/dev/null || uname -om)" - echo "Kernel: $(uname -sr)" - echo "Bash Version: ${BASH_VERSION}" - echo "APT Version: $(apt --version | head -n1)" - echo "=====================================" - -## 这里加上chroot进入apm -} - -# 彩蛋函数 -amber_egg() { - cat < /dev/null; then - echo "Package not installed: $pkg" - exit 1 - fi - - # 检测是否有额外命令参数 - if [ $# -gt 0 ]; then - # 有额外参数:执行用户提供的命令 - echo "Running user command: $*" - exec "$@" - else - # 没有额外参数:执行包的主程序 - bin_path=$(dpkg -L "$pkg" | grep -m1 -E '/bin/|/sbin/|/games/') - if [ -z "$bin_path" ]; then - echo "Error: No executable found in package '$pkg'" - exit 1 - fi - echo "Running package executable: $bin_path" - exec "$bin_path" - fi - ;; - debug) - debug_info - ;; - -h|--help) - show_help - ;; - --amber) - amber_egg - ;; - *) - show_help - ;; -esac diff --git a/ace-env/etc/resolv.conf b/core/.keep old mode 100644 new mode 100755 similarity index 100% rename from ace-env/etc/resolv.conf rename to core/.keep diff --git a/work/.keep b/work/.keep new file mode 100755 index 0000000..e69de29 diff --git a/备忘录.txt b/备忘录.txt deleted file mode 100644 index 64795c3..0000000 --- a/备忘录.txt +++ /dev/null @@ -1,22 +0,0 @@ -sudo mount -t overlay overlay -o lowerdir='/var/lib/apm/amber-pm-trixie/files/ace-env',upperdir=core/,workdir=work/ ./ace-env - -随后chroot进入进行安装操作,完成后 - -core: 保存新增文件 -work: 保存变更信息 -需把这两个目录重新拥有并权限换成755 - - -fuse-overlayfs -o lowerdir='/var/lib/apm/amber-pm-trixie/files/ace-env',upperdir=core/,workdir=work/ ./ace-env - -即可只读挂载并进行ace操作 - -计划: - -/var/lib/apm/包名/files/core是upperdir -/var/lib/apm/包名/files/work是upperdir -/var/lib/apm/包名/files/ace-env是chroot进的目录 -/var/lib/apm/包名/info是配置信息 - - -apm run 包名: 寻找 /var/lib/apm/包名/是否存在。若存在,根据info文件合成 fuser-overlayfs(ll-killer) 参数进行挂载,随后用ACE工具chroot进入进行启动 \ No newline at end of file