mirror of
https://gitee.com/amber-ce/amber-pm
synced 2026-06-22 14:13:54 +08:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e8a95ab13a | |||
| ec93f280f9 | |||
| 68d5e85d0d | |||
| b9bd4552e5 | |||
| 2e524df411 | |||
| 736e11255e | |||
| eba44e8489 | |||
| 682e987816 | |||
| 0a94f1a854 | |||
| fde7fd6051 |
@@ -1,5 +1,5 @@
|
||||
Package: apm
|
||||
Version: 1.1.5
|
||||
Version: 1.1.6-1
|
||||
Maintainer: shenmo <jifengshenmo@outlook.com>
|
||||
Priority: optional
|
||||
Section: utils
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[Desktop Entry]
|
||||
Exec=xdg-open %U
|
||||
MimeType=x-scheme-handler/spk;inode/directory;application/x-mimearchive;x-scheme-handler/http;x-scheme-handler/https;application/msword;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/x-gzip;application/zip;application/rar;application/x-tar;application/pdf;application/rtf;image/gif;image/jpeg;image/jp2;image/png;image/tiff;image/bmp;image/svg+xml;image/webp;image/x-icon;application/kswps;application/kset;application/ksdps;application/x-photoshop;application/x-coreldraw;application/x-shockwave-flash;text/plain;application/x-javascript;text/javascript;text/css;text/html;application/xhtml+xml;text/xml;text/x-vcard;application/x-httpd-php;application/java-archive;application/vnd.android.package-archive;application/octet-stream;application/x-x509-user-cert;audio/mpeg;audio/midi;audio/x-wav;audio/x-mpegurl;audio/x-m4a;audio/ogg;audio/x-realaudio;video/mp4;video/mpeg;video/quicktime;video/x-m4v;video/x-ms-wmv;video/x-msvideo;video/webm;video/x-flv;application/xhtml_xml;
|
||||
MimeType=x-scheme-handler/spk;x-scheme-handler/wemeet;inode/directory;application/x-mimearchive;x-scheme-handler/http;x-scheme-handler/https;application/msword;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/x-gzip;application/zip;application/rar;application/x-tar;application/pdf;application/rtf;image/gif;image/jpeg;image/jp2;image/png;image/tiff;image/bmp;image/svg+xml;image/webp;image/x-icon;application/kswps;application/kset;application/ksdps;application/x-photoshop;application/x-coreldraw;application/x-shockwave-flash;text/plain;application/x-javascript;text/javascript;text/css;text/html;application/xhtml+xml;text/xml;text/x-vcard;application/x-httpd-php;application/java-archive;application/vnd.android.package-archive;application/octet-stream;application/x-x509-user-cert;audio/mpeg;audio/midi;audio/x-wav;audio/x-mpegurl;audio/x-m4a;audio/ogg;audio/x-realaudio;video/mp4;video/mpeg;video/quicktime;video/x-m4v;video/x-ms-wmv;video/x-msvideo;video/webm;video/x-flv;application/xhtml_xml;
|
||||
Name=ace-run-in-host-os
|
||||
NoDisplay=true
|
||||
Terminal=false
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# amber-pm-base-overrider
|
||||
# 功能:检查 /opt/apm-dummy/files-to-override 下的文件,并覆盖到所有包含
|
||||
# /var/lib/apm/文件夹/files 的 /var/lib/apm/文件夹/files/ace-env 下
|
||||
# 同时删除每个 ace-env 目录下的 amber-ce-tools/bin-override/bwrap
|
||||
|
||||
# 日志函数
|
||||
log_warn() { echo -e "[\e[33mWARN\e[0m]: \e[1m$*\e[0m"; }
|
||||
@@ -13,6 +14,7 @@ log_debug() { echo -e "[\e[32mDEBUG\e[0m]: \e[1m$*\e[0m"; }
|
||||
# 配置
|
||||
OVERRIDE_SOURCE="/opt/apm-dummy/files-to-override"
|
||||
APM_BASE_DIR="/var/lib/apm"
|
||||
BWRAP_PATH="amber-ce-tools/bin-override/bwrap"
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
@@ -30,6 +32,7 @@ amber-pm-base-overrider - APM 基础环境覆盖工具
|
||||
功能:
|
||||
检查 /opt/apm-dummy/files-to-override 下的文件,
|
||||
并覆盖到所有 /var/lib/apm/<包名>/files/ace-env 目录下。
|
||||
同时删除每个 ace-env 目录下的 amber-ce-tools/bin-override/bwrap。
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -67,7 +70,7 @@ fi
|
||||
|
||||
# 检查源目录是否为空
|
||||
if [ -z "$(ls -A "$OVERRIDE_SOURCE" 2>/dev/null)" ]; then
|
||||
exit 0
|
||||
$VERBOSE && log_info "源目录为空,仅执行清理操作"
|
||||
fi
|
||||
|
||||
$VERBOSE && log_info "源目录: $OVERRIDE_SOURCE"
|
||||
@@ -79,8 +82,8 @@ fi
|
||||
|
||||
# 计数器
|
||||
OVERRIDE_COUNT=0
|
||||
DELETE_COUNT=0
|
||||
ERROR_COUNT=0
|
||||
HAS_CHANGES=false
|
||||
|
||||
# 遍历 /var/lib/apm/ 下的所有子目录
|
||||
for pkg_dir in "$APM_BASE_DIR"/*/; do
|
||||
@@ -108,6 +111,35 @@ for pkg_dir in "$APM_BASE_DIR"/*/; do
|
||||
continue
|
||||
fi
|
||||
|
||||
# ---- 删除 amber-ce-tools/bin-override/bwrap ----
|
||||
bwrap_file="$target_dir/$BWRAP_PATH"
|
||||
if [ -e "$bwrap_file" ] || [ -L "$bwrap_file" ]; then
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
if [ -d "$bwrap_file" ]; then
|
||||
echo " [试运行] 将删除目录: $bwrap_file"
|
||||
else
|
||||
echo " [试运行] 将删除文件: $bwrap_file"
|
||||
fi
|
||||
((DELETE_COUNT++))
|
||||
else
|
||||
if rm -rf "$bwrap_file" 2>/dev/null; then
|
||||
$VERBOSE && log_info "已删除: $bwrap_file"
|
||||
((DELETE_COUNT++))
|
||||
else
|
||||
log_error "删除失败: $bwrap_file"
|
||||
((ERROR_COUNT++))
|
||||
fi
|
||||
fi
|
||||
else
|
||||
$VERBOSE && log_debug "$pkg_name: bwrap 文件不存在,无需删除"
|
||||
fi
|
||||
|
||||
# ---- 覆盖文件 ----
|
||||
# 检查源目录是否为空
|
||||
if [ -z "$(ls -A "$OVERRIDE_SOURCE" 2>/dev/null)" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查是否有文件需要更新(比较源文件和目标文件)
|
||||
NEED_UPDATE=false
|
||||
while IFS= read -r -d '' file; do
|
||||
@@ -126,7 +158,6 @@ for pkg_dir in "$APM_BASE_DIR"/*/; do
|
||||
continue
|
||||
fi
|
||||
|
||||
HAS_CHANGES=true
|
||||
$VERBOSE && log_info "处理包: $pkg_name"
|
||||
|
||||
# 使用 rsync 或 cp 进行覆盖
|
||||
@@ -150,17 +181,16 @@ for pkg_dir in "$APM_BASE_DIR"/*/; do
|
||||
fi
|
||||
done
|
||||
|
||||
# 只有在有改动或 verbose 模式时才输出统计信息
|
||||
if [ "$HAS_CHANGES" = true ] || [ "$VERBOSE" = true ]; then
|
||||
# 输出统计信息
|
||||
$VERBOSE && log_info "===================================="
|
||||
$VERBOSE && log_info "覆盖操作完成"
|
||||
log_info "成功处理: $OVERRIDE_COUNT 个包"
|
||||
$VERBOSE && log_info "操作完成"
|
||||
log_info "成功覆盖: $OVERRIDE_COUNT 个包"
|
||||
log_info "成功删除 bwrap: $DELETE_COUNT 个包"
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
log_info "[试运行模式] 未实际执行覆盖"
|
||||
log_info "[试运行模式] 未实际执行操作"
|
||||
fi
|
||||
if [ $ERROR_COUNT -gt 0 ]; then
|
||||
log_error "失败: $ERROR_COUNT 个包"
|
||||
fi
|
||||
log_error "失败: $ERROR_COUNT 个操作"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
+1
-1
@@ -1 +1 @@
|
||||
@VERSION@=1.3.0
|
||||
@VERSION@=1.3.2
|
||||
|
||||
@@ -264,13 +264,14 @@ if [ -n "$DEB_PATH" ]; then
|
||||
exit 1
|
||||
fi
|
||||
log.info "DEB 包安装完成(ssaudit)"
|
||||
fi
|
||||
|
||||
# 清理 apt 缓存
|
||||
# 清理 apt 缓存和包列表(无论是否有 DEB 文件或是否 manual 模式)
|
||||
log.info "清理 apt 缓存..."
|
||||
sudo -E chrootEnvPath="$chrootEnvPath" /var/lib/apm/apm/files/ace-run-pkg aptss clean || true
|
||||
sudo -E chrootEnvPath="$chrootEnvPath" /var/lib/apm/apm/files/ace-run-pkg rm -vfr /var/lib/apt/lists || true
|
||||
sudo -E chrootEnvPath="$chrootEnvPath" /var/lib/apm/apm/files/ace-run-pkg rm -vfr /var/lib/aptss/lists || true
|
||||
sudo -E chrootEnvPath="$chrootEnvPath" /var/lib/apm/apm/files/ace-run-pkg rm -vfr /var/cache/apt/archives/* || true
|
||||
fi
|
||||
|
||||
# 5. 清理 .dpkg-new 文件
|
||||
log.info "搜索并清理 .dpkg-new 文件..."
|
||||
@@ -292,18 +293,43 @@ ORIG_ARCH="$(dpkg --print-architecture 2>/dev/null || echo "unknown")"
|
||||
if [ -z "$PKGNAME" ]; then
|
||||
if [ "$MANUAL_MODE" = true ]; then
|
||||
read -r -p "请输入要创建的 addons 包名 (建议格式: ${BASE_NAME}-<描述>-addons): " PKGNAME
|
||||
else
|
||||
if [ -n "$DEB_PATH" ]; then
|
||||
DEB_PKG_NAME=$(dpkg-deb -f "$DEB_PATH" Package 2>/dev/null || echo "")
|
||||
if [ -n "$DEB_PKG_NAME" ]; then
|
||||
log.info "未指定包名,使用 Deb 包名生成默认格式: ${BASE_NAME}-${DEB_PKG_NAME}-addons"
|
||||
PKGNAME="${BASE_NAME}-${DEB_PKG_NAME}-addons"
|
||||
else
|
||||
log.warn "无法读取 Deb 包名,使用默认格式: ${BASE_NAME}-addons"
|
||||
PKGNAME="${BASE_NAME}-addons"
|
||||
fi
|
||||
else
|
||||
log.warn "未指定包名,使用默认格式: ${BASE_NAME}-addons"
|
||||
PKGNAME="${BASE_NAME}-addons"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 确定版本
|
||||
if [ -z "$VERSION" ]; then
|
||||
if [ "$MANUAL_MODE" = true ]; then
|
||||
read -r -p "请输入要创建的版本 (Version) [默认 1.0.0-apm]: " VERSION
|
||||
fi
|
||||
VERSION="${VERSION:-1.0.0-apm}"
|
||||
else
|
||||
if [ -n "$DEB_PATH" ]; then
|
||||
DEB_PKG_VERSION=$(dpkg-deb -f "$DEB_PATH" Version 2>/dev/null || echo "")
|
||||
if [ -n "$DEB_PKG_VERSION" ]; then
|
||||
log.info "未指定版本,使用 Deb 版本号: ${DEB_PKG_VERSION}"
|
||||
VERSION="$DEB_PKG_VERSION"
|
||||
else
|
||||
log.warn "无法读取 Deb 版本号,使用默认版本: 1.0.0-apm"
|
||||
VERSION="1.0.0-apm"
|
||||
fi
|
||||
else
|
||||
log.warn "未指定版本,使用默认版本: 1.0.0-apm"
|
||||
VERSION="1.0.0-apm"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
NEW_PKGNAME="$PKGNAME"
|
||||
|
||||
@@ -1,32 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 检测是否安装了 XFCE、DDE 或 GNOME 桌面环境
|
||||
# 检测是否安装了 KDE Plasma 桌面环境
|
||||
# 通过检查系统中是否存在相关的 desktop 文件或关键程序
|
||||
is_xfce_or_dde_or_gnome() {
|
||||
# 检查 XFCE
|
||||
if [ -f /usr/share/xsessions/xfce.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/xfce.desktop ] || \
|
||||
command -v xfce4-session >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
# 检查 DDE/Deepin
|
||||
if [ -f /usr/share/xsessions/deepin.desktop ] || \
|
||||
[ -f /usr/share/xsessions/dde.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/deepin.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/dde.desktop ] || \
|
||||
command -v dde-session >/dev/null 2>&1 || \
|
||||
command -v startdde >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
# 检查 GNOME
|
||||
if [ -f /usr/share/xsessions/gnome.desktop ] || \
|
||||
[ -f /usr/share/xsessions/gnome-xorg.desktop ] || \
|
||||
[ -f /usr/share/xsessions/gnome-wayland.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/gnome.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/gnome-xorg.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/gnome-wayland.desktop ] || \
|
||||
command -v gnome-session >/dev/null 2>&1 || \
|
||||
command -v gnome-shell >/dev/null 2>&1; then
|
||||
is_kde_plasma() {
|
||||
# 检查 KDE Plasma
|
||||
if [ -f /usr/share/xsessions/plasma.desktop ] || \
|
||||
[ -f /usr/share/xsessions/plasma-xorg.desktop ] || \
|
||||
[ -f /usr/share/xsessions/plasma-wayland.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/plasma.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/plasma-xorg.desktop ] || \
|
||||
[ -f /usr/local/share/xsessions/plasma-wayland.desktop ] || \
|
||||
command -v startplasma-x11 >/dev/null 2>&1 || \
|
||||
command -v startplasma-wayland >/dev/null 2>&1 || \
|
||||
command -v plasmashell >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
@@ -39,13 +25,13 @@ if grep -q "Kylin" /etc/os-release; then
|
||||
echo "检测到麒麟系统,使用目标目录: $TARGET_BASE"
|
||||
else
|
||||
TARGET_BASE="/usr/local/share"
|
||||
# 检测是否为 XFCE、DDE 或 GNOME 桌面环境
|
||||
if is_xfce_or_dde_or_gnome; then
|
||||
APP_TARGET_DIR="$TARGET_BASE/applications"
|
||||
echo "检测到 XFCE/DDE/GNOME 桌面环境,使用目标目录: $APP_TARGET_DIR"
|
||||
else
|
||||
# 检测是否为 KDE Plasma 桌面环境
|
||||
if is_kde_plasma; then
|
||||
APP_TARGET_DIR="$TARGET_BASE/applications/apm"
|
||||
echo "使用目标目录: $APP_TARGET_DIR"
|
||||
echo "检测到 KDE Plasma 桌面环境,使用目标目录: $APP_TARGET_DIR"
|
||||
else
|
||||
APP_TARGET_DIR="$TARGET_BASE/applications"
|
||||
echo "使用标准目标目录: $APP_TARGET_DIR"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -143,11 +129,3 @@ if ! grep -q "Kylin" /etc/os-release; then
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新桌面数据库
|
||||
if command -v update-desktop-database >/dev/null 2>&1; then
|
||||
echo "正在更新桌面数据库..."
|
||||
update-desktop-database "$TARGET_BASE/applications/"
|
||||
else
|
||||
echo "警告: update-desktop-database 命令未找到"
|
||||
fi
|
||||
@@ -81,6 +81,8 @@ while ! network-check; do
|
||||
done
|
||||
|
||||
# 每日更新星火源文件
|
||||
apm autoremove -y
|
||||
apm clean
|
||||
|
||||
exit
|
||||
###########################################################################
|
||||
|
||||
@@ -61,7 +61,7 @@ fi
|
||||
#########################################################################################
|
||||
##########合成bwrap 1. 基础函数配置段
|
||||
# 初始化 EXEC_COMMAND 为 bwrap 基础指令
|
||||
EXEC_COMMAND="bwrap --dev-bind / / bwrap"
|
||||
EXEC_COMMAND="bwrap --dev-bind / /"
|
||||
|
||||
# add_command 函数定义
|
||||
function add_command() {
|
||||
|
||||
@@ -28,7 +28,7 @@ fi
|
||||
#########################################################################################
|
||||
##########合成bwrap 1. 基础函数配置段
|
||||
# 初始化 EXEC_COMMAND 为 bwrap 基础指令
|
||||
EXEC_COMMAND="bwrap --dev-bind / / bwrap"
|
||||
EXEC_COMMAND="bwrap --dev-bind / /"
|
||||
|
||||
# add_command 函数定义
|
||||
function add_command() {
|
||||
|
||||
@@ -14,16 +14,15 @@ export ACE_PACKAGE_NAME=$PKGNAME
|
||||
|
||||
chrootEnvPath=/var/lib/apm/$PKGNAME/files/ace-env
|
||||
|
||||
if [ ! -e $chrootEnvPath/finish.flag ];then
|
||||
# if [ ! -e $chrootEnvPath/finish.flag ];then
|
||||
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
`dirname $chrootEnvPath`/bin/ace-init
|
||||
else
|
||||
pkexec `dirname $chrootEnvPath`/bin/ace-init
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
# if [ "$(id -u)" = "0" ]; then
|
||||
# `dirname $chrootEnvPath`/bin/ace-init
|
||||
# else
|
||||
# pkexec `dirname $chrootEnvPath`/bin/ace-init
|
||||
# fi
|
||||
# Ubuntu 26.04 中断了我们配置容器
|
||||
#fi
|
||||
non_root_user=$(who | awk '{print $1}' | head -n 1)
|
||||
uid=$(id -u $non_root_user)
|
||||
|
||||
@@ -43,7 +42,7 @@ fi
|
||||
#########################################################################################
|
||||
##########合成bwrap 1. 基础函数配置段
|
||||
# 初始化 EXEC_COMMAND 为 bwrap 基础指令
|
||||
EXEC_COMMAND="bwrap --dev-bind / / bwrap"
|
||||
EXEC_COMMAND="bwrap --dev-bind / /"
|
||||
|
||||
# add_command 函数定义
|
||||
function add_command() {
|
||||
|
||||
Reference in New Issue
Block a user