diff --git a/.gitignore b/.gitignore index 23f5b5d..cf73a00 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ # OS .DS_Store +._* Thumbs.db # IDE diff --git a/dist/mua-2026.08.18.r006-x86_64-1.txz b/dist/mua-2026.08.18.r006-x86_64-1.txz index d3cf6da..b03157c 100644 Binary files a/dist/mua-2026.08.18.r006-x86_64-1.txz and b/dist/mua-2026.08.18.r006-x86_64-1.txz differ diff --git a/plugin/mua.plg b/plugin/mua.plg index 11d202f..a50f5cf 100644 --- a/plugin/mua.plg +++ b/plugin/mua.plg @@ -8,7 +8,7 @@ - + ]> - + &txzURL; &txzSHA256; diff --git a/scripts/package.sh b/scripts/package.sh index e1d1509..6f19650 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -9,10 +9,16 @@ # etc/rc.d/rc.mua (SysVinit-Service) # usr/local/emhttp/plugins/mua/mua.page (WebGUI-Tab) # -# Cross-Platform: .txz ist ein gzip-tar, funktioniert auf macOS + Linux. +# Cross-Platform: .txz ist ein xz-komprimiertes tar und funktioniert auf +# macOS sowie Linux. set -euo pipefail +# macOS erzeugt beim Kopieren/Packen auf manchen Dateisystemen AppleDouble- +# Dateien (._*) und speichert die lokale UID/GID im Archiv. Auf Unraid kann +# das sogar /, /usr oder /etc auf UID 501 umhängen. Beides verhindern. +export COPYFILE_DISABLE=1 + ROOT="$(cd "$(dirname "$0")/.." && pwd)" # Version aus package.json lesen (Argument überschreibt) PKG_VERSION="$(python3 -c "import json;print(json.load(open('${ROOT}/package.json'))['version'])" 2>/dev/null || echo "")" @@ -109,7 +115,22 @@ DESCEOF mkdir -p "${DIST_DIR}" TXZ_NAME="${PKG_NAME}-${VERSION}-${ARCH}-${BUILD_NUM}.txz" echo " Erstelle ${TXZ_NAME}..." -( cd "${BUILD_DIR}" && tar cf - . | xz -9 -c > "${DIST_DIR}/${TXZ_NAME}" ) +find "${BUILD_DIR}" -name '._*' -delete + +if tar --version 2>/dev/null | grep -q 'GNU tar'; then + TAR_OWNER_FLAGS=(--owner=0 --group=0 --numeric-owner) +else + TAR_OWNER_FLAGS=(--uid 0 --gid 0 --uname root --gname root) +fi + +# Absichtlich nicht "." archivieren: Ein Archiveintrag für ./ darf beim +# Installieren niemals Eigentümer oder Modus des Unraid-Wurzelverzeichnisses +# überschreiben. +( + cd "${BUILD_DIR}" + tar --no-xattrs "${TAR_OWNER_FLAGS[@]}" -cf - etc install usr \ + | xz -9 -c > "${DIST_DIR}/${TXZ_NAME}" +) echo "" echo "===================================================="