From 44653e9af835ecb4bc8734b4227c3233d5151347 Mon Sep 17 00:00:00 2001 From: smail Date: Fri, 16 Oct 2026 23:48:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E7=BD=B2=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=9A=E6=94=AF=E6=8C=81=E5=9C=A8=E5=8F=91=E8=A1=8C?= =?UTF-8?q?=E5=8C=85=E7=8B=AC=E7=AB=8B=E7=9B=AE=E5=BD=95=E4=B8=8B=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=89=A7=E8=A1=8C=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/install-systemd.sh | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/deploy/install-systemd.sh b/deploy/install-systemd.sh index e9e52908..d88f98bd 100644 --- a/deploy/install-systemd.sh +++ b/deploy/install-systemd.sh @@ -39,6 +39,10 @@ if [ "$(id -u)" -ne 0 ]; then fi root_dir="$(realpath -e -- "${root_argument:-$(dirname "$0")/..}")" +is_packaged=false +if [ -f "$root_dir/smail" ] && [ -f "$root_dir/smail-admin" ] && [ -f "$root_dir/smail-config" ]; then + is_packaged=true +fi runtime_dir=/opt/smail fresh_confirmation="确认全新部署 Smail" printf '这是不可逆的 Smail 专属数据清理操作。请输入“%s”继续: ' "$fresh_confirmation" @@ -53,8 +57,18 @@ case "$(uname -m)" in esac # 安装前先检查所有输入和运行状态,不能覆盖仍在运行的程序。 -for file in "$root_dir/out/backend/smail_linux_$arch" "$root_dir/out/backend/smail-admin_linux_$arch" \ - "$root_dir/out/backend/smail-config_linux_$arch" \ +if [ "$is_packaged" = true ]; then + backend_smail="$root_dir/smail" + backend_smail_admin="$root_dir/smail-admin" + backend_smail_config="$root_dir/smail-config" +else + backend_smail="$root_dir/out/backend/smail_linux_$arch" + backend_smail_admin="$root_dir/out/backend/smail-admin_linux_$arch" + backend_smail_config="$root_dir/out/backend/smail-config_linux_$arch" +fi + +for file in "$backend_smail" "$backend_smail_admin" \ + "$backend_smail_config" \ "$root_dir/deploy/systemd/smail.service" "$root_dir/deploy/systemd/smail-admin.service"; do if [ ! -f "$file" ] || [ -L "$file" ] || [ ! -s "$file" ]; then echo "安装输入不存在或不是普通文件:$file" >&2 @@ -169,9 +183,9 @@ if [ -S /run/smail/admin-control.sock ]; then chown --no-dereference smail:smail /run/smail/admin-control.sock fi install -d -o root -g root -m 0755 /run/systemd/ask-password -install -o root -g root -m 0755 "$root_dir/out/backend/smail_linux_$arch" "$runtime_dir/smail" -install -o root -g root -m 0700 "$root_dir/out/backend/smail-admin_linux_$arch" "$runtime_dir/smail-admin" -install -o root -g root -m 0700 "$root_dir/out/backend/smail-config_linux_$arch" "$runtime_dir/smail-config" +install -o root -g root -m 0755 "$backend_smail" "$runtime_dir/smail" +install -o root -g root -m 0700 "$backend_smail_admin" "$runtime_dir/smail-admin" +install -o root -g root -m 0700 "$backend_smail_config" "$runtime_dir/smail-config" install -o root -g root -m 0644 "$root_dir/deploy/systemd/smail.service" /etc/systemd/system/smail.service install -o root -g root -m 0644 "$root_dir/deploy/systemd/smail-admin.service" /etc/systemd/system/smail-admin.service systemctl daemon-reload