跳到內容
Syno Package Land
語言: 繁體中文

錯誤碼

錯誤碼是固定的字串。請依錯誤碼判斷,不要依訊息文字判斷。

出現位置格式
CLI 文字輸出stderr 上的 [CODE] message。結束碼為 1。
CLI --jsonstdout 上的 {"ok":false,"code":"CODE","message":"…","hint":"…"}。部分失敗會多一個含報告的 data 欄位。
App RPC(UI 呼叫後端){"success":false,"error":{"code":"…","message":"…"}},HTTP 狀態為 200。在瀏覽器中,ctx.call 會以 {code, message} 拒絕。請見 App API 參考。

check 在專案中發現問題時,錯誤訊息會包含檔案、行號與建議。code 是第一個錯誤的錯誤碼。

下表列出 synopkgland 指令可能回報的所有錯誤碼。以 COMPOSE_、CONTRACT_、INSTALL_、HOMES_ 開頭的錯誤碼屬於容器(Compose)App。以 STANDALONE_ 開頭的錯誤碼屬於原生 App(dsm-package.yaml)。

錯誤碼意思處理方式
ADD_FILE_CONFLICTadd 發現既有檔案與該能力要寫入的檔案不同。移動或合併列出的檔案後再執行 add。add 不會覆寫內容不同的檔案。
ADD_LAYOUT_UNSUPPORTED該能力需要標準的 backend 資料夾。在 dsm-package.yaml 設定 backend.dir: backend,或手動合併該能力的檔案。
APP_SCRIPT_INVALIDdsm-scripts/<DSM 腳本名稱> 是 symlink、資料夾或特殊檔案。改成專案 dsm-scripts/ 資料夾裡的一般檔案。
APP_SCRIPT_NOT_EXECUTABLEdsm-scripts/<DSM 腳本名稱> 檔案沒有執行權限;DSM 會直接執行它。對該檔案執行 chmod +x。
APP_SCRIPT_NO_SHEBANGdsm-scripts/<DSM 腳本名稱> 檔案開頭不是 #!。在檔案開頭加上直譯器行,例如 #!/bin/sh。
APP_SCRIPT_UNKNOWN專案 dsm-scripts/ 資料夾裡有檔案的名稱不是 SDK 會執行的 DSM 套件腳本名稱。命名為 preinst、postinst、preuninst、postuninst、preupgrade、postupgrade 或 start-stop-status,或移出 dsm-scripts/。不支援 prereplace 與 postreplace。
BUILD_NOT_REPRODUCIBLEbuild --verify-reproducible 再建置一次的 SPK 與第一次不同。查看列出的 payload 與 metadata 檔案,移除每次建置都會變的內容(時間戳、隨機或絕對路徑、未鎖定的依賴)後重新建置。
BUILD_SPK_FAILEDdeploy 打包 SPK 時失敗。執行 synopkgland check、修正錯誤、檢查專案內的檔案權限後重試。
CAPABILITY_COMBINATION_INVALID這些能力無法一起使用,或無法與你的 UI 或 daemon 搭配。login 與 delegate 需要 --ui vue。除非 delegate.lifetime 是 until-revoked,否則 daemon 不能與 jobs 並用。
CAPABILITY_INVALID能力名稱或值不合法。使用 files: session、jobs: true(或 {worker: sha256-v1})、identity: standalone、rootOps: true,或合法的 delegate 區塊。
CAPABILITY_UNSUPPORTED這種專案類型不支援能力。能力需要原生 Go 專案(init -t native-go)。容器(Compose)與 binary 專案不支援。
CATALOG_INSTALL_FAILED透過 DSM 套件中心移除或安裝套件失敗。閱讀訊息,到 NAS 的套件中心查看安裝記錄,或手動重試。
CLI_ARCH_INVALID--arch 的值不合法。使用 x86_64、aarch64 或 armv7。armv7 用於 native-go 與 binary,不用於 Container Manager App。
CLI_ARGUMENT_MISSING缺少必要的引數。以 --help 執行該指令,查看它的引數。
CLI_COMMAND_UNKNOWN沒有這個指令。執行 synopkgland --help 列出指令。
CLI_JOBS_INVALID--jobs 的值不是正整數。使用 --jobs 1(預設)或更大的整數。
CLI_OPTION_ARGUMENT_MISSING選項需要值,但沒有提供。在選項後補上值。
CLI_OPTION_INVALID選項的值不合法,或該選項不適用於此指令。以 --help 執行該指令。--param、--share、--run-as 請寫成 NAME=value。--project 不適用於 init。
CLI_OPTION_MISSING缺少必要的選項。以 --help 執行該指令,查看必要的選項。
CLI_OPTION_UNKNOWN沒有這個選項。以 --help 執行該指令,列出它的選項。
CLI_OUTPUT_ARCH_REQUIRED用 -o 輸出單一檔案時,必須指定恰好一個架構。-o 搭配單一 --arch,或改用 --out-dir。
COMMAND_FAILED指令失敗,且沒有更具體的錯誤碼。閱讀訊息與 stderr,排除原因後重試。
COMPOSE_BIND_SOURCE_FORBIDDEN磁碟區掛載使用了不允許的主機路徑。掛載 ${SYNOPKG_PKGVAR}、${SYNO_APP_SECRETS_DIR},或你以 shared_folder 安裝參數宣告的 ${SLOT}。
COMPOSE_BIND_SOURCE_UNDECLARED磁碟區掛載使用了未宣告的共用資料夾變數。在 synology-app.yaml 的 install 下宣告該 shared_folder 參數。
COMPOSE_BIND_SUFFIX_INVALID共用資料夾變數後面的子路徑不合法,含有 .. 或控制字元。使用單純的相對子路徑,例如 ${MEDIA_SHARE}/data:/data。
COMPOSE_BUILD_FORBIDDENcompose.yaml 使用了 build:。NAS 只執行既有的映像。移除 build:,改用映像,最好以 digest 固定(image@sha256:…)。再執行一次 check。
COMPOSE_CAP_ADD_FORBIDDEN服務使用了 cap_add,但未宣告 privilege.cap_add。在 synology-app.yaml 設定 privilege.cap_add: true,或移除 cap_add。
COMPOSE_DEVICES_FORBIDDEN服務使用了 devices,但未宣告 privilege.devices。在 synology-app.yaml 設定 privilege.devices: true,或移除 devices。
COMPOSE_DYNAMIC_ROUTE_UNSUPPORTEDcompose.yaml 使用了不支援的變數形式,或 DSM 不會載入的 secret、config 來源。只使用 ${NAME} 搭配字串或布林安裝答案。移除 secrets 與 configs。
COMPOSE_ENV_MISSINGsynopkgland test 找不到為 Compose App 建立的資料夾(SYNOPKG_PKGVAR 與 secrets 資料夾)。確認測試執行時能建立這些資料夾,然後再執行一次 test。
COMPOSE_GATEWAY_PORT_EXPOSEDDSM 登入閘道必須是唯一的入口,但 adminport 對應的發布連接埠監聽在所有網路介面上。將連接埠綁定到 loopback,例如 "127.0.0.1:18333:18333",或設定 integration.web.access: public。
COMPOSE_HOST_BIND_FORBIDDEN磁碟區掛載寫死了主機路徑,例如 /volume1/… 或 ./。宣告 shared_folder 安裝參數,並以 ${SLOT} 掛載。
COMPOSE_HOST_IPC_FORBIDDEN服務使用了 ipc: host,但未宣告 privilege.host_ipc。設定 privilege.host_ipc: true,或移除 ipc: host。
COMPOSE_HOST_NETWORK_FORBIDDEN服務使用了 host 網路,但未宣告 privilege.host_network。設定 privilege.host_network: true,或改用一般的 Compose 網路。
COMPOSE_HOST_PID_FORBIDDEN服務使用了 pid: host,但未宣告 privilege.host_pid。設定 privilege.host_pid: true,或移除 pid: host。
COMPOSE_MISSINGcheck 找不到 compose.yaml,也找不到 dsm-package.yaml。在專案根目錄執行指令,或建立其中一個檔案。
COMPOSE_NAMED_VOLUME_UNDECLARED服務使用了未在頂層 volumes 宣告的具名磁碟區。將該磁碟區加到 compose.yaml 的頂層 volumes,或改掛載受控資料夾。
COMPOSE_NOT_HEALTHY執行 synopkgland test 時,某個服務沒有在時限內變成 healthy。檢查 healthcheck 與 App 記錄。
COMPOSE_NOT_RUNNING執行 synopkgland test 時,某個服務沒有維持執行。檢查容器的啟動指令與記錄,找出它結束的原因。
COMPOSE_NUMERIC_COMMAND_ARG_FORBIDDENcommand 或 entrypoint 清單中有純數字的項目。DSM 可能把它轉成數字,導致專案無法啟動。把整個指令寫成單一字串,例如 command: ["sh", "-c", "httpd -f -p 8080 -h /srv"],或把旗標與值合併成 "-p8080"。
COMPOSE_POSIX_ALL_SHARES_SUFFIX_FORBIDDENposix_all_shares 的值被加上了子路徑。使用完整的 ${ALL_SHARES} 來源,後面不要加任何內容。
COMPOSE_POSIX_ALL_SHARES_UNDECLAREDcompose.yaml 使用了 all-shares 變數,但沒有安裝參數是 type: posix_all_shares。宣告一個 type: posix_all_shares 的安裝參數。
COMPOSE_PRIVILEGED_FORBIDDEN服務使用了 privileged: true,但未宣告 privilege.privileged。設定 privilege.privileged: true,或移除 privileged: true。
COMPOSE_ROUTE_UNSUPPORTED專案使用了 DSM 無法執行的 Compose 功能。使用預先建置的映像與支援的安裝參數。移除不支援的權限、secrets 或 build。
COMPOSE_SERVICE_NOT_FOUNDdepends_on 指名了 compose.yaml 沒有定義的服務。修正 depends_on,指向已定義的服務。
COMPOSE_SOCKET_MOUNT_FORBIDDEN服務掛載了 Docker socket 或其他敏感的系統 socket。移除 docker.sock 掛載。要存取檔案,請使用 shared_folder 或 App 自己的檔案 API。
COMPOSE_USER_CONFLICTS_DSM_USER服務設定了 user,而 App 又宣告了 dsm_user 安裝參數。移除 compose.yaml 中的 user。dsm_user 參數會替你設定 ${NAME_UID}:${NAME_GID} 與 group_add。
COMPOSE_USER_NUMERIC_FORBIDDEN服務寫死了數字的 uid:gid。宣告 dsm_user 安裝參數,並使用 ${NAME_UID}:${NAME_GID}。
COMPOSE_USER_ROOT_FORBIDDEN容器以 root(0:0)執行。宣告 dsm_user 安裝參數,並使用 ${USER_UID}:${USER_GID}。
CONTAINER_ARCH_UNSUPPORTED容器 App 只支援 x86_64 與 aarch64。DSM 沒有 armv7 的 Container Manager。使用 --arch x86_64 或 --arch aarch64,或改建原生 Go App。
CONTRACT_ACCESS_GROUPS_INVALIDintegration.web.groups 缺少、格式不符,或沒有搭配 access: dsm-groups 使用。使用 access: dsm-groups 並列出 DSM 群組名稱,或移除 groups。
CONTRACT_ACCESS_INVALIDintegration.web.access 的值未知。使用 dsm-users(預設)、dsm-admins、dsm-groups(搭配 groups)或 public。
CONTRACT_ACCESS_REQUIRES_WEB沒有網頁的 App 設定了 integration.web.access 或 groups。移除它們,或加上對應已發布 Compose 連接埠的 adminport。
CONTRACT_ADMINPORT_INVALIDadminport 不是整數。將 adminport 設為對應已發布 Compose 連接埠的整數。
CONTRACT_ADMINPORT_UNMAPPEDadminport 與 compose.yaml 中任何已發布的連接埠都不相符。在 ports 下加上對應的連接埠映射,例如 "8080:80"。
CONTRACT_DSM_USER_DUPLICATEApp 宣告了不只一個 dsm_user 安裝參數。只保留一個。
CONTRACT_HOMES_PATH_FORBIDDENhomes 安裝參數寫了路徑或預設值。只宣告 type: homes,並在 Compose 中引用該參數。套件會在安裝時解析路徑。
CONTRACT_HOMES_UNSUPPORTED不支援 homes 安裝參數類型。check 會回報警告,deploy 會拒絕。若要讓管理員選一個資料夾,請使用 type: shared_folder。
CONTRACT_I18N_INVALIDsynology-app.yaml 的 i18n 區塊不合法。只使用 i18n.info,以 zh-TW、ja 等支援的語言為 key,displayname / description 為單行且不含 " 或 \。英文寫在頂層。
CONTRACT_ICON_INVALIDsynology-app.yaml 的 icon 不是可用的套件圖示。icon 指向專案內至少 256×256 的正方形 PNG,或含 icon_256.png 的 icon_<size>.png 目錄。移除即使用 SDK 預設圖示。
CONTRACT_INVALID_STRINGsynology-app.yaml 中的字串含有控制字元,或含有不允許的 ${…} 代換。移除控制字元與 ${。安裝參數請在 install 下宣告。
CONTRACT_LAUNCH_INVALIDintegration.web.launch 的值未知。使用 dsm-window(預設)或 new-page。沒有網頁的 App 請省略。
CONTRACT_LAUNCH_REQUIRES_WEB沒有網頁的 App 設定了 integration.web.launch。移除它,或加上對應已發布 Compose 連接埠的 adminport。
CONTRACT_MISSING_FIELDsynology-app.yaml 缺少必填欄位。補上訊息指出的欄位,例如 package、version 或 displayname。
CONTRACT_PACKAGE_TOO_LONG套件名稱超過 32 個字元,這是 DSM 的上限。將 package 縮短到 32 個字元以內。
CONTRACT_PORTAL_REQUIRES_EXECUTORCompose App 宣告了 integration.web.portal。Compose App 沒有 executor,而解除安裝後要讓 DSM 網頁伺服器停止提供登入入口網站別名,只有 root 做得到。移除 integration.web.portal。需要別名時,由管理員在 DSM 設定反向代理。
CONTRACT_POSIX_ALL_SHARES_LISTING_UNSUPPORTEDposix_all_shares 需要 CLI 在安裝時讀取 NAS 的共用資料夾清單。套件中心與 Package Source 上架做不到這點。以 synopkgland deploy --host <name> 安裝。不要把這個 App 上架到 Package Source。
CONTRACT_POSIX_ALL_SHARES_VALUE_FORBIDDENposix_all_shares 參數寫了 default 或路徑。只宣告 type: posix_all_shares。
CONTRACT_SCHEMA_INVALIDsynology-app.yaml 不符合 schema。修正訊息指出的欄位。請見 Compose manifest 參考。
CONTRACT_SCHEMA_UNSUPPORTEDsynology-app.yaml 的 schema 值不受支援。設定 schema: 1。
CONTRACT_SECRET_UNSUPPORTED不支援 secret 安裝參數類型。check 會回報警告,deploy 會拒絕。非敏感的值請使用 type: string。若是機密,讓 App 在啟動時自行取得,或放進 ${SYNO_APP_SECRETS_DIR} 內的檔案。
DEPLOY_ARCH_UNDETERMINEDdeploy 無法判定 NAS 的架構。傳入 --arch x86_64、aarch64 或 armv7。
DEPLOY_BUILD_OUTPUT_INVALID建置沒有為 deploy 產生恰好一個 SPK。傳入單一 --arch,再執行一次 deploy。
DEPLOY_FAILEDdeploy 失敗,且沒有更具體的錯誤碼。檢查與 NAS 的網路連線,並執行 synopkgland logs --host <nas>。
DEPLOY_PARAM_TYPE_INVALID--param 的值與宣告的類型不符。string 參數請傳非空字串。boolean 參數請只傳 true 或 false。
DEPLOY_PARAM_REQUIREDinstall-selected delegate 首次安裝沒有指定範圍,其 preinst 會拒絕安裝。加上 --param delegate_share=<共用資料夾> 或 --param delegate_home=true。
DEPLOY_PARAM_UNDECLARED--param 指名了未宣告的安裝參數,或 native-go、binary 套件沒有這個安裝精靈值。Compose 只傳 synology-app.yaml 的 install 下宣告的 string 或 boolean 名稱。native-go 與 binary 只傳 install-selected delegate 的 delegate_share 或 delegate_home。
DEPLOY_PLAN_INVALID部署計畫與專案類型不符。執行 check 後再部署。
DEPLOY_POSIX_ALL_SHARES_LOOKUP_FAILEDdeploy 無法用管理員工作階段列出 NAS 上的共用資料夾。確認管理員可以在 DSM 列出共用資料夾,或以 --param NAME=… 提供清單。
DEPLOY_VERSION_INVALID套件版本不合法、低於已安裝的版本(“Refusing downgrade”),或 version 相同但 build 沒有更高。設定更高且合法的 version 或 build,再部署。
DEVELOPMENT_INSTANCE_UNSUPPORTED原生 Go App 不支援 --dev。以不同的套件名稱執行 init,取得另一個開發用 App。
DSM_COMPOUND_FAILEDDSM 安裝請求的其中一個步驟失敗。查看回應中的 api、method、errorCode,以及 NAS 上的套件中心記錄,然後重試。
DSM_DEPENDENCY_CONFLICTDSM 拒絕請求,因為有執行中的套件依賴這個套件。停止 DSM 列出的套件,然後重試升級。
DSM_TLS_UNTRUSTEDDSM 的憑證是自簽、已過期或名稱不符,這台電腦不信任它。把 NAS 憑證或其 CA 匯出成 PEM,用 NODE_EXTRA_CA_CERTS=<該檔> 執行;或讓 DSM 使用與 host profile 名稱相符的受信任憑證。不要關閉憑證檢查。
DSM_REQUEST_FAILED對 DSM 的請求失敗。檢查 DSM 工作階段、請求參數與套件中心記錄,然後重試。
DSM_USER_LOGICAL_NAME_REQUIREDdsm_user 的值是數字。它必須是 DSM 使用者名稱。傳入使用者名稱,例如 --run-as RUN_AS=alice。
DSM_USER_REQUIREDApp 有共用資料夾,但沒有 dsm_user 安裝參數。加上恰好一個 install.<NAME>.type: dsm_user,並在 Compose 中使用 ${NAME_UID}:${NAME_GID}。
EXECUTOR_BUILD_FAILED建置執行管理員操作的輔助程式(供 rootOps 與 delegate 使用)失敗。閱讀訊息中的編譯器輸出並修正。原生 App 需要 Go 1.21 或以上;建置固定使用 Go 1.26.9,取不到(離線)或產物記錄其他 Go 版本時會失敗。
EXECUTOR_DIGEST建置提供給管理員操作輔助程式的 digest 不是 64 字元的 SHA-256 十六進位字串。以 synopkgland build 重新建置。不要自己帶 digest 呼叫組裝器。
EXECUTOR_DIGEST_MISMATCH由 backend/go.mod 的 SDK 版本建出的 executor 與 CLI 內建的 SHA-256 表不符,或表中沒有這個 SDK 版本。require 已發佈的 SDK 版本,並以 Go 1.26.9 建置。版本比 CLI 新時,更新 CLI。
EXECUTOR_DIGEST_UNVERIFIED警告:SYNOPKGLAND_SDK_DIR 指向本機 SDK,executor 沒有對照 SHA-256 表。只用於開發。要發佈 SPK 前取消 SYNOPKGLAND_SDK_DIR 並重新建置。
SDK_REQUIREDrootOps 或 delegate 需要 SDK,但 backend/go.mod 沒有 require github.com/synopackageland/syno-pkg-land-sdk。在 backend/go.mod require 與 CLI 同一 minor 的 SDK,或改用 init 產生的 Go 後端。
SDK_TAG_REQUIREDRust App 的 Cargo.lock 沒有把唯一一個 syno-pkg-land-app 釘在 release tag(branch、rev、path、registry 與多個版本都會被拒絕)。在 Cargo.toml 寫 syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "vX.Y.Z" },執行 cargo update -p syno-pkg-land-app 並提交 Cargo.lock。
SDK_VERSION_MISMATCHfrontend/package.json 的 @synopackageland/sdk 與 backend/go.mod 要求的 SDK 版本不同。兩邊改成同一個版本。file: 相依時,比對的是該目錄 package.json 的 version。
SDK_UNSUPPORTED後端(backend/go.mod 或 backend/Cargo.lock)要求的 SDK 不在這個 CLI 的 minor 版本線上。改用與 SDK 同一 minor 的 CLI,或把 SDK 改成訊息列出的版本。
SDK_DIR_NOT_READYSYNOPKGLAND_SDK_DIR 指向的目錄沒有 go/go.mod,或 Vue 專案需要的 SDK ts 套件尚未建置(沒有 ts/dist)。指向 syno-pkg-land-sdk 的 checkout。Vue 專案先在 $SYNOPKGLAND_SDK_DIR/ts 執行 npm ci && npm run build。
SDK_DOWNLOAD_FAILEDgo mod download 取不到 backend/go.mod 要求的 SDK 版本。CLI 會透過 git 取得 private SDK。請讓 git 有 github.com 的憑證;可用 git ls-remote https://github.com/synopackageland/syno-pkg-land-sdk 驗證存取權限。接著確認版本存在。離線時先在同一台機器連線執行一次 go mod download。
STANDALONE_LOGIN_STYLE_IMAGE_INVALIDlogin_style 指定的圖片不存在、格式錯誤或尺寸錯誤。在專案內使用至少 1920×1080、最多 2 MiB 的 JPEG wallpaper,320×200 的 JPEG wallpaper_thumbnail,以及 680×124 的 PNG title。
STANDALONE_LOGIN_STYLE_INVALIDdsm-package.yaml 的 login_style 格式錯誤,或沒有宣告 portal 就設定了它。宣告 portal,login_style 只寫 color(#RRGGBB)、成對的 wallpaper 與 wallpaper_thumbnail,以及 title。省略 login_style 就使用 CLI 預設樣式。見Manifest 參考。
STANDALONE_PYTHON_SDK_MISSINGApp 的 SDK 版本沒有 Python SDK(python/synopkgland_app)。把 SYNOPKGLAND_SDK_DIR 指向含 python/synopkgland_app 的 syno-pkg-land-sdk checkout,或要求有附帶它的 SDK 版本。
STANDALONE_REQUEST_TIMEOUT_SHORT請求期限在 root.run 可能執行的 root 程式回應前就結束。executor 在 run.timeout_s 之後 10 秒回應,它的 client 再多等 10 秒。把 backend.timeout_seconds 設為至少該程式的 run.timeout_s(預設 20)+ 20,或調低 run.timeout_s。
TEMPLATES_MISSING找不到 @synopackageland/templates。重新安裝 @synopackageland/cli,或把 SYNOPKGLAND_TEMPLATES_DIR 指向 templates checkout。
EXECUTOR_PACKAGE套件名稱不適用於管理員操作輔助程式。使用以英文字母開頭、含 2 到 64 個英文字母與數字的套件名稱。
EXECUTOR_PIN_REQUIRED套件使用了 rootOps 或 delegate,但建置沒有附上輔助程式。以 synopkgland build 建置,讓輔助程式一併打包。
EXECUTOR_POLICYdelegate 的 operations 或 scope 不合法。修正 capabilities.delegate。請見 Manifest 參考。
EXECUTOR_POLICY_REJECTEDApp 的 SDK 版本的 executor 拒絕 CLI 產生的 policy,NAS 核准時也會拒絕。原因會指出被拒的部分:root、stop 或 purge → root.programs、root.stop、uninstall.purge;scope、operation、destination、move 或 lifetime → capabilities.delegate;portal → portal;entry → entry。修正 dsm-package.yaml 的該部分。請見 Manifest 參考。
EXECUTOR_ROOT_PROGRAMS_UNSUPPORTEDdsm-package.yaml 的 root 設定需要支援 root 程式設定的 executor,App 的 SDK 版本沒有。改用有 root 程式的 SDK,或移除 root 設定。
EXECUTOR_TASK_LENGTH管理員操作輔助程式的排程工作腳本比 DSM 允許的長度還長。以 synopkgland build 重新建置。若仍發生,請縮短套件名稱。
EXECUTOR_TASK_PERCENT排程工作腳本含有 % 字元,DSM 不接受。以 synopkgland build 重新建置。若仍發生,檢查套件名稱與 scope 是否含 %。
GATEWAY_ARCH_FAMILY_REQUIREDDSM 登入閘道是原生程式,所以 SPK 需要目標架構。加上 --arch x86_64 或 --arch aarch64。deploy 會從 NAS 讀取。只有不需要 DSM 登入的 App 才使用 integration.web.access: public。
GATEWAY_BUILD_FAILED建置 DSM 登入閘道失敗,或產出的不是目標架構的靜態程式。閱讀 go build 輸出。閘道固定以 Go 1.26.9 建置;離線時請安裝 go1.26.9,或讓 GOPROXY 可以提供 golang.org/toolchain。
GATEWAY_GO_MISSING建置 DSM 登入閘道需要 Go,但找不到 go 指令。從 https://go.dev/dl/ 安裝 Go 1.21 或以上(建置時會使用 Go 1.26.9),或設定 integration.web.access: public。
HOMES_NOT_ENABLEDNAS 沒有開啟 User Home 服務,或 DSM 沒有回傳 home 路徑。在 DSM 開啟 User Home,然後重新部署。
HOST_REQUIRED沒有選擇 NAS。傳入 --host <profile>。不連 NAS 做本機檢查,請用 deploy --dry-run。
IMAGE_PIN_REQUIRED映像沒有以 digest 固定。執行 synopkgland images pin。
INIT_BINARY_BUILD_FAILED建置 binary 模板的範例程式失敗。安裝 Go 後重新執行 init,或提供你自己的靜態 CGI 程式。
INIT_COMPOSE_INVALID以 --from 提供的 Compose 檔案不合法。讓 --from 指向含有 services 的 YAML 檔案。
INIT_DISPLAY_NAME_INVALID顯示名稱不合法。使用單行文字,不含 " 與 \。
INIT_OPTIONS_UNSUPPORTED選項不適用於這個模板。--from 只適用於 -t compose。--ui 只適用於 -t native-go。
INIT_PACKAGE_INVALID套件名稱不合法。以英文字母開頭,使用 2 到 64 個英文字母與數字,例如 PhotoTagger。
INIT_SHARED_FOLDER_INVALID共用資料夾選項不合法。使用 select 或 create。使用 create 時,還要傳入 --shared-folder-name。--shared-folder 只適用於 -t native-go。
INIT_TARGET_NOT_EMPTY目標資料夾中有 init 會覆寫的檔案。使用空資料夾。要為既有專案加入能力,請使用 add。
INIT_TEMPLATE_REQUIRED沒有指定模板。使用 -t native-go、binary 或 compose。
INIT_TEMPLATE_UNKNOWN模板名稱未知。使用 -t native-go、binary 或 compose。
INIT_UI_INVALID--ui 的值不合法。使用 --ui vue 或 --ui plain。
INSTALL_PARAMETER_UNREFERENCED宣告了 install 參數,但 compose.yaml 從未使用。在 compose.yaml 以 ${NAME} 使用它,或從 synology-app.yaml 移除。
INSTALL_STRING_INVALID安裝參數的預設值含有控制字元或 ${…} 代換。從預設值中移除。
INSTALL_STRING_TOO_LONG安裝參數的預設值超過 256 個字元。縮短預設值。
LOCAL_SPK_INSTALL_FAILEDDSM 無法安裝 deploy 上傳的 SPK。到 NAS 的套件中心查看安裝錯誤。檢查套件版本與需求。
MIN_DSM_CONTAINER_FLOOR容器 App 的最低 DSM 版本太低。容器 App 需要 DSM 7.2.1-69057 或以上。
MIN_DSM_INVALID最低 DSM 版本不合法,或對該能力來說太低。指定 7.x 版本,或完整的 7.x-build 版本。rootOps 需要 DSM 7.1-42661 或以上。
NAS_CREDENTIALS_MISSING找不到 NAS 憑證。設定 synoagentcli profile,或設定 DSM_URL 與 DSM_PASSWORD。
NATIVE_ARCH_UNDETERMINEDdeploy 無法判定原生 App 的 NAS 架構。傳入 --arch x86_64、aarch64 或 armv7。
NATIVE_LAYOUT_INVALID原生套件的 manifest、hook 或檔案不符合套件版面規則。使用 schema: 2 搭配 backend.kind: native。檢查路徑、程式是否為靜態 ELF 檔案,以及 checksum。
NATIVE_TOOLKIT_TAR_UNSUPPORTEDnative.toolkits 需要 GNU tar 或 bsdtar 作為 tar,但 PATH 上的 tar 兩者都不是。讓 PATH 上第一個 tar 是 GNU tar 或 bsdtar(macOS 內建 bsdtar,多數 Linux 是 GNU tar),再重新 build。
NATIVE_LAYOUT_SCRIPT_NOT_EXECUTABLE原生套件版面 scripts/ 的生命週期腳本沒有執行權限。DSM 會直接執行它;inspect 對同一個檔案回報 SPK_SCRIPT_NOT_EXECUTABLE。在版面 metadata 資料夾對該腳本執行 chmod +x,再重新 build。
NOTICE_MISSING缺少第三方授權聲明檔案。重新安裝模板相依套件並重新建置 UI,讓授權聲明檔案產生。
NOTICE_UNSAFE授權聲明檔案是 symlink、特殊檔案,或過大。移除 symlink、特殊檔案與過大的授權聲明檔案。
NOT_INSTALLED套件尚未安裝在 NAS 上。先執行 synopkgland deploy --host <nas>。
PACKAGE_IDENTITY_TOO_LONG套件名稱太長。上限為 28 個字元,讓 4 個字元的 .dev 後綴仍能放進 DSM 的 32 字元上限。將 package 縮短到 28 個字元以內。
PORT_ALREADY_IN_USEdeploy 發現某個已發布的 TCP 連接埠已被其他服務或容器使用。更換 synology-app.yaml 或 compose.yaml 中發布的主機連接埠。升級或重新安裝時,同一套件自己的容器不受影響。
PROJECT_NOT_FOUND找不到專案 manifest。在專案根目錄執行指令,或傳入 --project。
PROJECT_RUNTIME_EXCLUSIVE專案同時有 compose.yaml 與 dsm-package.yaml。只保留一個:容器 App 用 compose.yaml,原生 App 用 dsm-package.yaml。
REPRODUCIBLE_INVALIDmanifest 的 reproducible 格式不對,或列出的 input 不是專案內的檔案。使用 reproducible: {inputs: [檔案...], clean: [路徑...]},路徑相對於專案;{arch} 只能用在 clean。
SHARE_LOGICAL_NAME_REQUIRED共用資料夾的值是 /volume1/… 這類路徑。傳入控制台中顯示的共用資料夾名稱,例如 --share MEDIA_SHARE=photos。
SHARE_NOT_FOUNDNAS 上沒有這個共用資料夾。在 DSM 控制台建立它,或修正拼字。
SHARE_RUN_AS_NO_ACCESS選定的執行使用者對選定的共用資料夾沒有權限。安裝會成功,但 App 執行時會得到 “Permission denied”。在 DSM 中授予該使用者(或其群組)該共用資料夾的權限,或改選其他使用者或資料夾。這項檢查只在 deploy 執行,套件中心的安裝精靈不會執行。
SHARE_VALUE_REQUIREDdeploy 沒有已宣告的 shared_folder 參數的值。傳入 --share <SLOT>=<name>。
SPK_INSPECTION_FAILEDinspect 找到至少一個錯誤:dsm.errors 中的 SPK 規則錯誤,或 synopkgland 建置的 SPK 在 findings 中的建置合約問題。修正報告中每個錯誤後重新建置或打包。警告不會導致失敗。
STANDALONE_API_PERMISSIONS_CHANGED建置進行時,permissions.json 被修改。讓檔案保持不變,再執行一次 check 與 build。
STANDALONE_API_PERMISSIONS_INVALIDpermissions.json 不合法。修正 backend/internal/api/permissions.json。請見 App API 參考。
STANDALONE_ARCHES_INVALIDarches 不是合法的清單。至少列出 x86_64、aarch64、armv7 其中一個,不可重複。
STANDALONE_ARCH_NOT_DECLARED你要建置的架構不在 arches 中。將它加入 dsm-package.yaml 的 arches,或改用已宣告的 --arch。
STANDALONE_BACKEND_INVALIDbackend 區塊不合法。恰好使用 go(dir,以及以 ./ 開頭的選用 main)或 binary(以架構為 key 的檔案)其中之一。
STANDALONE_BACKGROUND_ARTIFACT_REQUIREDSPK 組裝器需要已建置的背景工作 worker,但沒有拿到。以 synopkgland build 建置。不要直接呼叫組裝器。
STANDALONE_BACKGROUND_BUILD_FAILED建置背景工作 worker 失敗。安裝 Go 1.25 或以上。確認 backend 內有 cmd/background-worker(init -t native-go --with jobs 會建立)。閱讀編譯器輸出。
STANDALONE_BACKGROUND_INVALIDcapabilities.jobs 不合法。寫成 jobs: true 或 jobs: { worker: sha256-v1 }。worker 一律以套件帳號執行。
STANDALONE_BINARY_ARCH_MISMATCH後端程式是為不同 CPU 建置的,與目標不符。為該架構重新建置,或修正 backend.files 的對應。
STANDALONE_BINARY_ARCH_MISSINGarches 中的某個架構在 backend.files 沒有對應的程式。加上該程式,或從 arches 移除該架構。
STANDALONE_BINARY_DYNAMIC後端程式是動態連結。各 DSM 機型的 libc 版本不同。改為靜態連結。Go 請以 CGO_ENABLED=0 建置。
STANDALONE_BINARY_MISSING找不到後端程式。確認 backend.files 指向的檔案存在。
STANDALONE_BINARY_NOT_ELF後端程式不是該架構所需的 little-endian Linux ELF 檔案(x86_64 與 aarch64 為 64 位元,armv7 為 32 位元)。提供為該架構建置的 Linux 程式。
STANDALONE_BINARY_NOT_REGULAR後端程式不是一般檔案。使用實際檔案,不可是 symlink、資料夾或特殊檔案。
STANDALONE_BINARY_TOO_LARGE後端程式超過 256 MiB。縮小程式,例如使用 -ldflags "-s -w"。
STANDALONE_BRIDGE_APP_INVALIDApp 目錄含有 symlink 或特殊檔案,或超過 256 MiB。App 目錄只保留一般檔案與目錄,大型資料移出。
STANDALONE_BRIDGE_APP_IN_UIPython、Node.js 或 Rust App 的 backend.dir 與 ui.dir 重疊;DSM 會直接提供 ui/ 下的檔案。把 App 放在 ui.dir 以外的目錄(例如 app/);兩者不可互相包含。
STANDALONE_BRIDGE_DESCRIBE_FAILED沒有 backend.methods 時,build 會啟動 App 讀取 hello,而 App 沒有回應 v1 hello。在建置機器安裝 python3 或 node 並確認 App 能啟動,或在 dsm-package.yaml 列出 backend.methods。
STANDALONE_BRIDGE_MANIFEST_INVALIDCLI 產生的 bridge.json 不符合 spec/bridge/v1 的 manifest schema。檢查 backend.entry、methods 與 node.package。仍失敗時請回報 CLI 錯誤。
STANDALONE_BRIDGE_METHODS_MISMATCHApp 的方法與 permissions.json 不一致,或使用了 SDK 的方法名稱;runtime 會拒絕啟動。permissions.json 只列 App 自己的方法;App 方法不可與 SDK 方法同名(nas.*、identity.*、portal.status 等)。
STANDALONE_BUILD_INVALIDbuild 不是 1 到 9999 的整數。將 build 設為 1 到 9999 的整數。每發出一個 SPK 就遞增。
STANDALONE_DAEMON_ARTIFACT_REQUIREDSPK 組裝器需要已建置的 daemon supervisor,但沒有拿到。以 synopkgland build 建置。不要直接呼叫組裝器。
STANDALONE_DAEMON_BUILD_FAILED建置 daemon supervisor 失敗。安裝 Go 1.21 或以上(建置固定使用 Go 1.26.9)並閱讀編譯器輸出。NAS 本身不需要 Go。
STANDALONE_DAEMON_INVALIDdaemon 區塊不合法。檢查 daemon.exec、各架構的 targets、args、env、uninstall_args 與以整數秒表示的逾時。移除 shell、user 與自訂 conf 檔案。
STANDALONE_DAEMON_PAYLOAD_INVALIDdaemon 檔案不是專案內、有大小限制且不含連結的資料夾。重新建置各架構的 bundle。移除 symlink、特殊檔案與 setid 位元。大小保持在 512 MiB 以下。
STANDALONE_ENTRY_INVALIDentry 不合法。使用 admin-only 或 app-privilege。app-privilege 需要至少一個在 permissions.json 標為 authenticated 的 route。
STANDALONE_ENTRY_WIDENEDentry: admin-only 與 permissions.json 中開放給其他使用者的 route 衝突。把這些 route 改為 administrators。要讓一般使用者進入,請改用 entry: app-privilege 或省略 entry。
STANDALONE_ENTRY_UNSUPPORTED後端無法強制執行 entry 模式。使用 Go 後端:backend/go.mod require github.com/synopackageland/syno-pkg-land-sdk,且 backend.main 的 main.go(init 產生的是 cmd/app/main.go)以 dsm.NewEntryGate 包住 authenticator。
STANDALONE_FIELD_UNKNOWNdsm-package.yaml 有不支援的欄位。移除它。原生套件不接受自訂的生命週期腳本或 DSM conf 檔案。
STANDALONE_GO_BUILD_FAILEDgo build 失敗。在 backend 資料夾執行 go build ./... 並修正錯誤。
STANDALONE_GO_MISSING找不到 go 指令。從 https://go.dev/dl/ 安裝 Go 1.25 或以上,或以 backend.files 打包既有的程式。
STANDALONE_I18N_CATALOG_INVALID訊息檔不是扁平的 key 對文字的 JSON 物件。使用 { "greeting.save": "Save" } 這種格式。
STANDALONE_I18N_GLOSSARY_INVALID用語表格式錯誤,或某個用語指向不存在的訊息 key。修正 glossary.json 的 terms(id、text、keys)。
STANDALONE_I18N_GLOSSARY_MISMATCH訊息沒有使用用語表要求的 DSM 用語。使用該語言在用語表中的用語,讓 App 與 DSM 一致。
STANDALONE_I18N_INVALIDi18n 區塊不合法。i18n 只接受 messages、glossary 與 info。info 以 zh-TW、ja 等支援的語言為 key。英文寫在頂層。
STANDALONE_I18N_KEYS_MISMATCH某個語言檔的 key 與 en.json 不同。讓每個語言檔恰好有 en.json 的所有 key。
STANDALONE_I18N_LOCALE_UNSUPPORTED訊息檔的語言不在支援的九種語言內。使用 en、zh-TW、zh-CN、ja、ko、de、fr、es 或 it。其他 DSM 語言會顯示英文。
STANDALONE_I18N_MESSAGES_MISSINGi18n.messages 資料夾缺少 en.json。加入 en.json。它是所有語言的後備文字與 key 清單。
STANDALONE_I18N_PLACEHOLDER_MISMATCH翻譯多了或少了 {placeholder}。保留 en.json 文字中的每個 {name} 佔位符。
STANDALONE_ICON_INVALIDdsm-package.yaml 的 icon 不是可用的套件圖示。icon 指向專案內至少 256×256 的正方形 PNG,或含 icon_256.png 的 icon_<size>.png 目錄。移除即使用 SDK 預設圖示。
STANDALONE_MANIFEST_MISSING找不到 dsm-package.yaml。在專案根目錄執行指令,或以 synopkgland init -t native-go 建立專案。
STANDALONE_MANIFEST_YAMLdsm-package.yaml 不是合法的 YAML 物件。修正 YAML 語法。
STANDALONE_NODE_DEPENDENCY_MISSINGNode.js App 的 package.json 相依套件沒有安裝在它的 node_modules。在 App 目錄執行 npm ci --omit=dev 後重新建置。@synopackageland/app 由 CLI 放入,不需安裝。
STANDALONE_NODE_SDK_NOT_BUILTApp 的 SDK 版本沒有建置好的 Node.js SDK(node/dist)。先在 SYNOPKGLAND_SDK_DIR checkout 的 node/ 執行 npm ci && npm run build;正式發行的 SDK 已含 node/dist。
STANDALONE_OS_MIN_VER_INVALIDos_min_ver 格式不對,或對 rootOps 來說太低。使用 <major>.<minor>-<build>,例如 7.2-64570。rootOps 需要 7.1-42661 或以上。
STANDALONE_PACKAGE_INVALIDpackage 名稱不合法。以英文字母開頭,只使用英文字母與數字,2 到 64 個字元,例如 PhotoTagger。
STANDALONE_PATH_INVALID路徑欄位不是專案內的相對路徑。使用相對於專案根目錄的路徑。
STANDALONE_PATH_OUTSIDE_PROJECT路徑指向專案資料夾之外。把檔案放在專案內。symlink 解析後也必須在專案內。
STANDALONE_PORTAL_ENTRY_INVALIDos_min_ver 低於 DSM 7.2-64570 時由 executor 註冊入口,而套件名稱或 displayname 不符合它的規則。套件名稱只能包含以 .、_ 或 - 分隔的英數字,最多 64 個字元;displayname 為 1–64 個字元且不含控制字元。
STANDALONE_PORTAL_INVALIDportal 格式不符,或別名不合法。使用 portal: {} 或 portal: { alias: my-app }。別名為 1 到 64 個小寫英文字母、數字或 -,且不是 DSM 保留路徑。
STANDALONE_PORTAL_MIN_DSMApp 宣告了 portal,但 os_min_ver 低於 7.1-42661。將 os_min_ver 提高到 7.1-42661 或以上,或移除 portal。
STANDALONE_PORTAL_REQUIRES_EXECUTOR沒有 executor(capabilities.rootOps 或 delegate)的 App 宣告了 portal。解除安裝後要讓 DSM 網頁伺服器停止提供登入入口網站別名,只有 root 做得到,而無升權 App 任何階段都不使用 root。請加入 root-ops 或 delegate,或移除 portal,改由管理員在 DSM 設定反向代理。
STANDALONE_ROOT_OPS_MISSING設定了 capabilities.rootOps: true,但沒有任何 root 操作。至少加入一個 root/<name>.sh,或移除 capabilities.rootOps。
STANDALONE_ROOT_OPS_UNUSED專案有 root/ 資料夾,但 capabilities.rootOps 沒有開啟。設定 capabilities.rootOps: true,或刪除 root/。
STANDALONE_ROOT_OP_INVALIDroot/ 內的檔案不是合法的 root 操作。每個檔案都必須是 root/<小寫名稱>.sh、一般檔案、以 #!/bin/sh 開頭,且不超過 16 KiB。
STANDALONE_ROOT_PROGRAMS_INVALIDdsm-package.yaml 的 root 設定不合法,或 executor 不接受。root 只接受 programs(<name>: {kind, schema, run, job},對應 root/<name>.sh 或 root/<arch>/<name>)、stop(root/ 裡的程式)與 state: true,並需要 capabilities.rootOps: true。請見 Manifest 參考。
STANDALONE_RUNTIME_BUILD_FAILED從 App 的 SDK 版本編譯 bridge runtime(bridge/cmd/runtime)失敗,或不是以 go1.26.9 建置。安裝 Go 1.21 以上並確保可取得 go1.26.9,且使用含 bridge runtime 的 SDK 版本。訊息中有編譯器輸出。
STANDALONE_RUST_BUILD_FAILEDRust App 的 cargo zigbuild 交叉編譯失敗,或沒有產生 backend.entry 的 binary。以 rustup 安裝 Rust 與 x86_64-unknown-linux-musl、aarch64-unknown-linux-musl、armv7-unknown-linux-gnueabihf 三個 target,並安裝 cargo-zigbuild 與 zig。backend.entry 設為 Cargo binary 名稱。訊息中有編譯器輸出。
STANDALONE_SCHEMA_INVALIDschema 值不是 2。設定 schema: 2。使用 backend.kind 與 capabilities。
STANDALONE_SHARED_FOLDER_INVALIDinstall.sharedFolder 不合法。寫成 install: { sharedFolder: { mode: select|create, key: <小寫英文字母、數字、底線>, permission: ro|rw } }。create 還需要 name。select 不可以有 name。
STANDALONE_TEXT_INVALID顯示文字欄位不合法。使用單行、非空、且不含 " 與 \ 的文字。metadata 請檢查文字、email、URL 與螢幕截圖。
STANDALONE_TIMEOUT_UNSUPPORTEDbackend.timeout_seconds 需要 Go main 讀取建置時傳入的 requestTimeout。在 main.go 宣告 var requestTimeout = "" 並以 api.WithRequestDeadline(handler, api.Timeout(...)) 套用,或移除 timeout_seconds。
STANDALONE_UI_BUILD_FAILEDUI 建置指令失敗。在 ui.build.cwd 安裝 UI 相依套件(有 package-lock.json 用 npm ci,否則用 npm install),執行建置指令並修正錯誤。
STANDALONE_UI_BUILD_INVALIDui.build 不合法。ui.build.command 必須是字串清單,不經過 shell 執行,例如 [npm, run, build]。
STANDALONE_UI_ENTRY_MISSINGUI 資料夾沒有 app.js 或沒有 app.css。讓 ui.dir(或 UI 建置輸出)同時包含這兩個檔案。
STANDALONE_UI_INVALIDui 區塊不合法。提供 ui.dir。
STANDALONE_UI_SPECIAL_FILEUI 資料夾含有特殊檔案。只保留一般檔案與資料夾。
STANDALONE_UI_SYMLINKUI 資料夾含有 symlink。以實際檔案取代。
STANDALONE_UI_TOO_LARGEUI 檔案總大小超過 64 MiB。縮小 UI 資產。
STANDALONE_UI_WINDOW_INVALIDui.window 不是有效的 DSM 視窗大小。使用整數:width 320–3840、height 240–2160,minWidth 與 minHeight(預設 700 與 420)不可大於它們。只寫要改的欄位。
STANDALONE_VERSION_INVALIDversion 不是數字版本。使用 1.2.0 這類格式。建置編號請填在 build。
UNINSTALL_EXEC_MISSINGuninstall.purge.exec 不是建置後套件內的一般可執行檔。指向套件內的可執行檔,例如 ui/cgi/api.cgi、background/worker 或 daemon/payload/ 下的檔案。
UNINSTALL_EXEC_UNSAFEuninstall.purge.exec 是試圖取得 root 的 shell script。hook 一律以套件帳號執行。需要 root 的清理放在 root/<name>.sh,並寫在 uninstall.purge.root。
UNINSTALL_INVALIDuninstall 區塊不符合固定的 exec、參數、環境變數與逾時契約。檢查 uninstall.purge:exec 在套件內(不在 executor/ 或 root/)、args、env(不可用 SYNOPKGLAND_*)與 2–120 秒的 timeout,以及 state.items 的 key 不可重複。
UNINSTALL_ROOT_OP_MISSINGuninstall.purge.root 指向不存在的 root 操作。加入 root/<name>.sh,或把 uninstall.purge.root 改成既有的 root 操作名稱。
UNINSTALL_ROOT_REQUIRES_ROOT_OPSuninstall.purge.root 需要管理員核准的 root 操作。宣告 capabilities.rootOps: true 並提供 root/<name>.sh,或移除 uninstall.purge.root。
UNINSTALL_STATE_REQUIRES_PURGEuninstall.state 沒有可以刪除這些狀態的 App 解除安裝 hook。加入 uninstall.purge,讓 App 在 SYNOPKGLAND_DELETE_STATE=1 時刪除列出的狀態,或移除 uninstall.state。
UNINSTALL_STATE_TEXT_MISSING解除安裝精靈缺少 uninstall.state 項目的文字。在 en.json 訊息檔(與其他語言)加入 uninstall.state.<key>。
VALIDATION_FAILED專案未通過合約或安全檢查,所以 deploy 停止。先執行 synopkgland check 並修正錯誤。

synopkgland inspect <spk> 在 DSM 格式區段(--json 的 dsm)回報這些代碼。它們依 DSM 7 套件格式檢查任何 SPK,來源欄寫出每條規則出自 DSM 7 Developer Guide 的哪一頁。error 會讓 inspect 以 SPK_INSPECTION_FAILED 失敗。warning 是可能的錯誤,或指南沒有寫清楚的規則,不會導致失敗。--json 報告中每個問題都有 code、severity、message,適用時還有 path(package.tgz 內的檔案寫成 package.tgz:<path>)。

代碼嚴重度意思來源
SPK_CONF_UNKNOWNwarningconf/ 有 DSM 不讀取的檔案(已知:privilege、resource、PKG_DEPS、PKG_CONX、systemd/)。DSM 7 Developer Guide: conf、Systemd User Unit
SPK_ELF_ARCH_MISMATCHerrorpackage.tgz 的 ELF 執行檔與 INFO arch 的 CPU 不符。DSM 7 Developer Guide: INFO Necessary Fields (arch)、Appendix A
SPK_ENTRY_UNKNOWNwarningSPK 最上層有指南沒有列出的檔案或目錄(檔名區分大小寫)。DSM 7 Developer Guide: Package Structure
SPK_ENTRY_UNSAFEerrorSPK 內的路徑跳出封存根目錄(絕對路徑或 ..),或是連結。DSM 7 Developer Guide: Package Structure
SPK_ICON_INVALIDerrorPACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG 不是 PNG。DSM 7 Developer Guide: Package Structure
SPK_ICON_MISSINGerror缺少 PACKAGE_ICON.PNG 或 PACKAGE_ICON_256.PNG。DSM 7 Developer Guide: Package Structure
SPK_ICON_SIZEwarningPACKAGE_ICON.PNG 不是 64×64,或 PACKAGE_ICON_256.PNG 不是 256×256。DSM 7 Developer Guide: Package Structure
SPK_INFO_ADMINPORT_INVALIDerrorINFO adminport 不是 0–65536 的整數。DSM 7 Developer Guide: INFO Optional Fields (adminport)
SPK_INFO_ARCH_NOARCH_MIXEDwarningINFO arch 同時有 noarch 與其他值。DSM 7 Developer Guide: INFO Necessary Fields (arch)
SPK_INFO_ARCH_UNKNOWNwarningINFO arch 或 exclude_arch 含有 Appendix A 與已知 DSM 7 平台都沒有的值。DSM 7 Developer Guide: Appendix A Platform and Arch Value Mapping Table
SPK_INFO_BOOLEAN_INVALIDerrorINFO 的 yes/no 欄位(例如 startable、silent_install)不是 “yes” 或 “no”。DSM 7 Developer Guide: INFO Optional Fields
SPK_INFO_CHECKSUM_MISMATCHerrorINFO checksum 不是 package.tgz 的 MD5。DSM 7 Developer Guide: INFO Optional Fields (checksum)
SPK_INFO_DISPLAYNAME_MISSINGwarningINFO 沒有 displayname;Package Center 會改顯示 package 值。DSM 7 Developer Guide: INFO Optional Fields
SPK_INFO_FIELD_DUPLICATEwarningINFO 同一個欄位設定了兩次。DSM 7 Developer Guide: INFO
SPK_INFO_FIELD_REQUIREDerrorINFO 缺少必填欄位(package、version、os_min_ver、description、arch、maintainer)。DSM 7 Developer Guide: INFO Necessary Fields
SPK_INFO_FIELD_UNKNOWNwarningINFO 欄位不在指南清單;DSM 不會使用它(拼錯的欄位名稱也會出現在這裡)。DSM 7 Developer Guide: INFO Necessary Fields, Optional Fields
SPK_INFO_LANG_UNKNOWNwarningdisplayname_ 或 description_ 的語言碼不在指南清單(enu、cht、chs、jpn…)。DSM 7 Developer Guide: INFO Optional Fields (description_[language])
SPK_INFO_LINE_INVALIDwarningINFO 有一行不是 key=“value”(空行與 # 註解除外)。DSM 7 Developer Guide: INFO
SPK_INFO_MISSINGerror缺少 INFO。DSM 7 Developer Guide: Package Structure
SPK_INFO_OS_MIN_VER_LOWwarningINFO os_min_ver 低於 7.0-40000。DSM 7 Developer Guide: INFO Necessary Fields (os_min_ver)
SPK_INFO_OS_VER_INVALIDerrorINFO os_min_ver 或 os_max_ver 不是 .-(也接受 ..-)。DSM 7 Developer Guide: INFO Necessary Fields (os_min_ver), Optional Fields (os_max_ver)
SPK_INFO_PACKAGE_INVALIDerrorINFO package 含有 : / > < | = 其中之一。DSM 7 Developer Guide: INFO Necessary Fields (package)
SPK_INFO_VALUE_UNTERMINATEDerrorINFO 欄位值的引號沒有結束。DSM 7 Developer Guide: INFO
SPK_INFO_VERSION_INVALIDerrorINFO version 不是以 .、-、_ 分隔的數字,或某段超過 2147483647。DSM 7 Developer Guide: INFO Necessary Fields (version)
SPK_INFO_VERSION_NO_BUILDwarningINFO version 沒有 - 編號(指南格式為 [feature number]-[build number])。DSM 7 Developer Guide: INFO Necessary Fields (version)
SPK_LICENSE_TOO_LARGEerrorLICENSE 大於或等於 1 MB。DSM 7 Developer Guide: Package Structure
SPK_NOARCH_ELFerrorINFO arch 是 noarch,但 package.tgz 有 ELF 執行檔。DSM 7 Developer Guide: INFO Necessary Fields (arch)、Pack Stage
SPK_NOT_TARerror檔案不是可讀的 tar 封存;SPK 是未壓縮的 tar。DSM 7 Developer Guide: Package Structure
SPK_PAYLOAD_LINK_ABSOLUTEwarningpackage.tgz 的 symlink 指向絕對路徑;目標由 NAS 決定,不在套件內。DSM 7 Developer Guide: Package Structure (package.tgz)
SPK_PAYLOAD_LINK_ESCAPEerrorpackage.tgz 的 symlink 或 hard link 指到套件目錄之外。DSM 7 Developer Guide: Package Structure (package.tgz)
SPK_PAYLOAD_MISSINGerror缺少 package.tgz。DSM 7 Developer Guide: Package Structure
SPK_PAYLOAD_PATH_UNSAFEerrorpackage.tgz 的路徑是絕對路徑或含 ..,會解開到套件目錄之外。DSM 7 Developer Guide: Package Structure (package.tgz)
SPK_PAYLOAD_UNREADABLEerrorpackage.tgz 不是可讀的 tar 或 tar.gz 封存,或是空的。DSM 7 Developer Guide: Package Structure (package.tgz)
SPK_PAYLOAD_XZwarningpackage.tgz 是 xz 壓縮(Synology toolkit 的格式);inspect 讀不了 xz,沒有檢查 payload 內容。DSM 7 Developer Guide: Pack Stage
SPK_PRIVILEGE_INVALIDerrorconf/privilege 不是 JSON 物件、沒有 defaults.run-as,或 run-as 不是 package/root。DSM 7 Developer Guide: Privilege Config
SPK_PRIVILEGE_MISSINGerror缺少 conf/privilege;DSM 7 起必須提供。DSM 7 Developer Guide: conf、Privilege Config
SPK_PRIVILEGE_ROOTwarningconf/privilege 要求以 root 執行(defaults、ctrl-script 或 executable)。DSM 7 Developer Guide: Privilege Config
SPK_RESOURCE_INVALIDerrorconf/resource 不是 JSON 物件。DSM 7 Developer Guide: Resource Config
SPK_RESOURCE_UNKNOWNwarningconf/resource 有指南沒有列出的 resource worker id。DSM 7 Developer Guide: Available Workers
SPK_SCRIPT_HOOK_MISSINGwarning缺少 preinst、postinst、preuninst、postuninst、preupgrade 或 postupgrade;指南列為必備,DSM 缺檔時的行為未驗證。DSM 7 Developer Guide: scripts
SPK_SCRIPT_MISSINGerror缺少 scripts/start-stop-status;DSM 用它啟動、停止與查詢套件狀態。DSM 7 Developer Guide: Package Structure、scripts
SPK_SCRIPT_NOT_EXECUTABLEerrorscripts/ 的生命週期腳本沒有執行權限。DSM 7 Developer Guide: scripts
SPK_SCRIPT_NO_INTERPRETERwarning生命週期腳本開頭沒有 #!(例如 #!/bin/sh),也不是 ELF。DSM 7 Developer Guide: scripts
SPK_SIGNATURE_INVALIDwarningsyno_signature.asc 不是 ASCII-armored PGP 簽章(指南的套件簽章只適用 DSM 6.x,可省略此檔)。DSM 7 Developer Guide: Sign Package (only for DSM6.X)
SPK_UI_CONFIG_INVALIDerrordsmuidir 底下的 config 不是 JSON 物件。DSM 7 Developer Guide: Integrate DSM, Application Config
SPK_UI_TEXTS_MISSINGerrorconfig 的 title/desc 參照套件自己的字串(例如 synopkgland:app_title),但該 entry 沒有宣告 “texts”;DSM 會直接顯示 key。DSM 7.1.1/7.4 實測
SPK_UI_TEXTS_UNDECLAREDwarningconfig 的 title/desc 是 section:key 字串參照,但沒有宣告 “texts”;除非是 DSM 內建 section,否則 DSM 會直接顯示 key。DSM 7.1.1/7.4 實測
SPK_WIZARD_INVALIDwarningWIZARD_UIFILES 的精靈檔不是 JSON 陣列。DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)
SPK_WIZARD_SCRIPT_NOT_EXECUTABLEwarningWIZARD_UIFILES 的 .sh 精靈產生器沒有執行權限。DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)
SPK_WIZARD_UNKNOWNwarningWIZARD_UIFILES 的檔名不是 install/upgrade/uninstall_uifile[_][.sh]。DSM 7 Developer Guide: Package Structure (WIZARD_UIFILES)

產生的原生 App 會從後端把這些錯誤碼回傳給 UI。處理函式也可以回傳自己的錯誤碼,請見 App API 參考。

處理函式若回傳一般的 Go 錯誤,而不是 api.Error,UI 會收到 internal。這包括 root.run 的所有失敗,以及 executor.status 除了 executor 暫停以外的所有失敗;executor 暫停時會回傳 ready: false、state: "paused" 與下一步 next。

錯誤碼回傳者意思處理方式
session_required所有非 public 的 route沒有有效的 DSM 工作階段,或 File Station 使用者與呼叫者不符。重新登入 DSM。
credential_not_ready以呼叫者 DSM 工作階段執行的 route(root.*、files.*、delegate.*、File Station)請求帶有 DSM 工作階段 cookie,卻沒有可用的 SynoToken。共用視窗 wrapper 會在呼叫後端與 DSM WebAPI 前取得缺少的 token;此錯誤表示必要的 carrier 仍不可用。以同一主機名稱重新登入 DSM,再開啟 App。自訂 transport 應先等待 DSM session helper,再送出請求。
dsm_session_required使用 identity: standalone 時的 nas.*、bg.browse、bg.jobs.submit呼叫需要 DSM 的 id cookie,但沒有。從 DSM 視窗開啟 App 並登入 DSM。
session_revalidation_required使用 identity: standalone 時的其他 routeApp 工作階段需要向 DSM 重新驗證,但沒有 DSM cookie。從 DSM 視窗開啟 App。
admin_required需要管理員的 route呼叫者不在 DSM 管理員群組、entry: admin-only 拒絕了呼叫者,或 api.RequireAdmin 失敗。已註冊但 permissions.json 沒有列出的方法,對非管理員也會得到這個錯誤碼。請使用管理員帳號開啟。admin-only App 不會列在應用程式權限中。若該方法應開放一般使用者,請在 permissions.json 把它列為 authenticated。
app_privilege_denied使用 entry: app-privilege 時的所有 routeDSM 應用程式權限不允許這個帳號或位址使用此 App。請管理員到「控制台 > 應用程式權限」,依顯示名稱選擇此 App 並按「編輯」,允許你的帳號或群組使用。
auth_unavailable所有 routeDSM 驗證或權限查詢失敗。工作階段過多時也會回傳。重試。若持續發生,檢查 DSM 是否正常。
unknown_method所有 route方法名稱沒有註冊。所有已登入的呼叫者都會得到這個錯誤碼,不論是否為管理員。檢查方法名稱,以及是否已加入該能力。
cross_originJSON route請求來自其他來源。只從 App 自己的頁面呼叫後端。
origin_requiredJSON routePOST 請求沒有 Origin 也沒有 Referer,後端無法判斷是哪個頁面送出的。用目前版本的瀏覽器重新開啟 App。
json_requiredJSON route請求沒有 Content-Type: application/json。送出 JSON。ctx.call 會自動處理。
method_not_allowedJSON route請求不是 POST。使用 POST。
request_too_largeJSON route內容超過 1 MiB,或巢狀太深。減少送出的資料。
bad_request所有 route內容或 params 不合法。含有未知欄位的 params 會被拒絕。送出 {"method": "…", "params": {…}},只含該方法接受的欄位。
bad_response所有 route請求逾時(20 秒)或被取消,或伺服器沒有回傳 JSON。重試。
internal所有 route處理函式回傳的錯誤不是 api.Error。詳細資訊在 App 記錄中,不在回應裡。UI 需要看到的錯誤請回傳 api.Error。檢查 App 記錄。
networkDSM 視窗中的 ctx.callNAS 沒有回應。檢查連線後重試。
deniednas.*、bg.browseFile Station 拒絕該操作,通常是使用者對該資料夾沒有權限。在 DSM 授予使用者該資料夾的權限。
conflictnas.*、bg.*目標已存在,或請求與工作目前的狀態衝突。換一個名稱,或重新載入狀態。
invalid-requestnas.*File Station 拒絕這些引數,例如路徑不合法。檢查路徑。
unavailablenas.*、bg.*File Station 或背景儲存空間沒有回應或無法使用。稍後重試。
cancelednas.*、delegate.*呼叫被取消。若不是你取消的,請重試。
not_foundnas.*、bg.jobs.*檔案、工作或排程不存在,或屬於其他使用者。檢查路徑或 id。
commit-uncertainnas.files.create_folder、nas.files.upload回應遺失,所以無法確定變更是否已完成。列出資料夾確認,必要時重試。
upload_size_requirednas.files.upload上傳沒有 Content-Length,或超過 16 GiB。送出不超過 16 GiB 的 Content-Length。
limit-exceedednas.*、bg.jobs.submit、files.read達到大小上限,例如工作輸入超過 512 KiB。送出較小的檔案。
read_failedbg.jobs.submit無法完整讀取檔案。重試。
identity_unavailablebg.*找不到呼叫者的 DSM 使用者 id。重試。若持續發生,重新登入 DSM。
jobs_busybg.*工作儲存區被鎖定超過 5 秒。稍後重試。
not_readybg.jobs.result工作還沒有結果。等到工作變成 succeeded。
queue-fullbg.jobs.submit、bg.schedules.*背景佇列已滿。等工作完成。
quota-exceededbg.jobs.submit背景儲存空間已滿。等工作完成,或移除已完成的工作。
owner-queue-fullbg.jobs.submit呼叫者待處理的工作已達上限。等呼叫者的工作完成。
owner-quota-exceededbg.jobs.submit呼叫者的背景儲存空間已達上限。等呼叫者的工作完成。
schedule-fullbg.schedules.create套件的排程數已達上限。刪除一個排程。
input-unavailablebg.schedules.*工作輸入的私有副本已不存在。重新匯入檔案。
https_requiredidentity.login、identity.session呼叫是透過純 HTTP 發出的。以 HTTPS 開啟 App。
invalid_credentialsidentity.login帳號名稱或密碼錯誤。再試一次。
account_disabledidentity.loginDSM 帳號已停用。使用其他帳號,或在 DSM 啟用該帳號。
otp_requiredidentity.login帳號需要雙重驗證碼。登入時一併送出 otp。
login_not_permittedidentity.loginDSM 不允許這個帳號登入 App。在 DSM 檢查該帳號。
rate_limitedidentity.login嘗試次數過多。等一分鐘後重試。
invalid-destinationdelegate.*目的地不合法。重新選擇目的地。
invalid-sizedelegate.*檔案大小不合法。傳入暫存檔案的實際大小。
unsupporteddelegate.*、bg.*此設定不支援該呼叫。檢查能力與生命週期模式。
needs-scope-confirmationdelegate.*管理員必須先確認資料夾範圍。在 App 的管理員設定中核准範圍。
disableddelegate.*管理員已關閉這項整合。請管理員啟用。
operation-conflictdelegate.*相同的 job id 又以不同的輸入送出。使用新的 job id。
operation-not-founddelegate.operations.*executor 不認得這項操作。檢查 id。
destination-existsdelegate.move_from_staging、delegate 檔案操作目的地已有同名檔案且 conflict 為 fail;或 overwrite 遇到資料夾或符號連結;或 rename 已用到 name (99)。使用其他名稱,或設定 conflict。
invalid-pathdelegate.move_from_staging、delegate 檔案操作name 中的資料夾為空、. 或 ..、超過 255 位元組、含控制字元或 \ : * ? " < > | 之一,或是 #recycle、#snapshot、@eaDir;或整個名稱超過 1024 位元組;或 File Station 認定名稱或路徑不合法而拒絕。修正名稱。
path-too-deepdelegate.move_from_stagingname 超過 16 層資料夾。減少資料夾層數。
destination-not-directorydelegate.move_from_staging、files.createFoldername 中的某個資料夾其實是檔案或符號連結,或位於另一個磁碟區;或在檔案底下呼叫 CreateFolder。換一個資料夾名稱。
name-too-longdelegate.move_from_staging、delegate 檔案操作磁碟區認為名稱過長而拒絕,例如加密共用資料夾超過 143 位元組。改用較短的名稱。
NO_SPACEdelegate.move_from_staging、delegate 檔案操作目的地的儲存空間已滿。釋出空間。
not-founddelegate 檔案操作授權的資料夾內沒有這個路徑,或 File Station 回報該項目不存在。檢查路徑。
not-a-filefiles.read路徑是資料夾或特殊檔案。讀取一般檔案。
recursive-requiredfiles.delete路徑是資料夾,且沒有設定 recursive。設定 Recursive: true。
recycle-bin-disabledfiles.delete共用資料夾沒有資源回收筒,且沒有設定 permanent。開啟資源回收筒,或設定 Permanent: true。
task-not-foundfiles.taskStatus、files.taskCancel任務屬於其他工作,或 executor 已重新啟動。用 files.info 確認結果。
too-many-tasksfiles.copy、files.move、files.deleteexecutor 已在追蹤 64 個任務。等待任務完成。
READ_FAILEDfiles.readexecutor 無法把檔案複製到 staging。重試。若持續發生,請檢查 NAS。
PERMISSION_DENIEDdelegate.*App 代為操作的使用者無法寫入目的地、delegate.select_destination 收到使用者無法寫入的資料夾,或 File Station 因權限不足拒絕某個項目。刪除後項目仍在時也會以此失敗。在 DSM 修正權限,或選擇其他目的地。
STAGING_UNAVAILABLE、STAGING_CHANGEDdelegate.move_from_staging暫存檔案不存在,或在你暫存後被修改。重新暫存檔案。
ADMISSION_PENDING、ADMISSION_EXHAUSTEDdelegate.move_from_staging移動正在等待 executor 接受,或重試次數已用完。等待並檢查 delegate.operations.get。
download_faileddelegate 限時模式的下載下載沒有完成。重試。
jobs_unavailabledelegate.jobs.*工作儲存區無法使用。稍後重試。
spool_unsafe、journal_corruptdelegate.jobs.*工作儲存區未通過安全檢查。重試無法排除。請檢查 App 資料資料夾。
not_cancelable、key_conflict、queue_full、quotadelegate.jobs.*工作在目前狀態下無法取消、key 已被使用、佇列已滿,或儲存空間已滿。修改請求或等待。
EXECUTOR_UNAVAILABLE、EXECUTOR_TIMEOUT、EXECUTOR_TOO_LARGE、EXECUTOR_PROTOCOLdelegate.*、executor.*App 無法連到管理員操作 executor、逾時、訊息過大,或無法理解回應。以 synopkgland status 檢查能力狀態。管理員可能需要重新核准。
EXECUTOR_PAUSEDdelegate.*executor 已暫停,例如套件停止或升級期間。啟動套件。升級後管理員可能需要重新核准。
APP_STOPPED、APP_STARTINGdelegate.*、executor.*套件已停止,或剛啟動、executor 尚未開始接聽。沒有送出任何內容。啟動套件,或稍候:SDK 的面板會顯示套件已停止或啟動中並自行重試,被拒的動作顯示「請啟動後再試一次」(lifecycleRefusal(error, locale))。DSM 視窗遇到 APP_STOPPED 立即回傳,APP_STARTING 與 EXECUTOR_STARTING 約重試 4 秒;executor.control 的啟動最多重試 30 秒。
AUTH_DENIED、INELIGIBLE、APP_DENIED、ADMIN_REQUIRED、DELEGATION_DENIED、SCOPE_DENIED、POLICY_DENIED、UNKNOWN_OPdelegate.*executor 拒絕該操作:呼叫者或 App 不被允許、授權或資料夾範圍未涵蓋它,或該操作不在已核准的政策內。檢查授權、範圍與 manifest。變更政策需要重新建置並重新取得管理員核准。
INVALID_REQUEST、REQUEST_TOO_LARGEdelegate.*送給 executor 的請求不合法,或超過 64 KiB。路徑或名稱不合法時,Go 用戶端會在呼叫 executor 之前就回傳 INVALID_REQUEST。修正請求。
STORAGE_ERROR、INTERNAL、WRITE_FAILED、DSM_FAILEDdelegate.*executor 在讀取狀態、寫入檔案或呼叫 DSM 時失敗。重試。若持續發生,檢查 NAS。
SCOPE_APPROVAL_STALE、IDENTITY_CHANGEDdelegate.*範圍核准已過期,或授權所屬的 DSM 帳號已變更。重新核准範圍,或重新選擇目的地。
ROOT_FAILEDroot.run(顯示為 internal)root 操作以非零狀態結束,或無法執行。測試該腳本。輸出上限為 1 MiB,執行時間上限為 20 秒。
portal_alias_invalidctx.portalDSM 拒絕該別名。使用 1 到 64 個小寫英文字母、數字或 -。
portal_alias_reservedctx.portal該別名是 DSM 保留路徑。選擇其他別名。
portal_alias_in_usectx.portal其他 App 已使用該別名。選擇其他別名。
portal_unavailablectx.portal無法讀取或變更應用程式入口網站設定。重試。若持續發生,請使用控制台。
forbidden容器 App 登入閘道登入的使用者不被 App 的 integration.web.access 允許。將使用者加入允許的群組,或變更 access。
token_required容器 App 登入閘道GET、HEAD、OPTIONS 以外的請求沒有 DSM token。送出 X-SYNO-TOKEN 標頭。
cross_site_blocked容器 App 登入閘道會變更狀態的請求或 WebSocket 交握來自其他網站。只從 App 自己的頁面呼叫。
upgrade_unsupported容器 App 登入閘道請求要求閘道不支援的協定升級。使用一般 HTTP 或 WebSocket。
redirect容器 App 登入閘道路徑需要結尾斜線。跟隨重新導向(HTTP 308)。
bad_path容器 App 登入閘道請求路徑不合法。修正 URL。
body_too_large容器 App 登入閘道請求內容超過 64 MiB。減少送出的資料。
upstream_timeout容器 App 登入閘道容器在 60 秒內沒有回應。檢查容器。
upstream_unavailable容器 App 登入閘道無法連到容器。確認容器正在執行。
bad_gateway容器 App 登入閘道閘道無法從容器取得有效的回應。檢查容器記錄。

登入閘道回傳純文字錯誤:第一行是錯誤碼。它也會設定 X-Synopkgland-Error 標頭。DSM 會把某些錯誤狀態換成自己的頁面,所以閘道改送另一個狀態,並把原本的狀態放在 X-Synopkgland-Status:403 改為 401、404 改為 410、500 與 502 改為 520、503 改為 521、504 改為 524。

delegate 檔案操作會讀取 File Station 逐項回報的拒絕原因,所以 PERMISSION_DENIED、destination-exists、not-found、name-too-long、invalid-path、destination-not-directory 與 NO_SPACE 會指出真正的原因。它們不可重試。

失敗的工作會有 errorCode,而不是 RPC 錯誤。請從 bg.jobs.get 或 bg.jobs.list 讀取。

errorCode意思處理方式
timeout工作執行超過 60 秒。使用較小的輸入。
input-changedworker 的結果與輸入的 digest 不符。重新送出工作。
worker-errorworker 失敗。重新送出工作。若重複發生,檢查輸入。
worker-stopped工作執行期間 worker 停止。工作狀態為 interrupted。重新送出工作。
worker-changed你把工作排入佇列後,worker 版本改變了。工作狀態為 interrupted,排程會維持關閉,直到管理員啟用。重新送出工作。管理員以 bg.schedules.enable 啟用排程。
admission-interrupted工作在被接受之前就中斷了。重新送出工作。

管理員操作 executor 以這些錯誤碼回應 App 後端。它們是 @synopackageland/sdk 與 Go module github.com/synopackageland/syno-pkg-land-sdk 中 executor 協定 v1 的錯誤碼;下表由其 errors.json 產生。kind 表示錯誤碼出現的位置:refusal 是被拒絕的請求,outcome 與 reason 記錄在操作上,client 由 App 內的用戶端產生,executor 不會送出。App 後端會把其中大多數依 App 錯誤 所列傳給 UI。

代碼類型可重試HTTP意義
AUTH_DENIEDrefusal否401auth 中的 DSM 工作階段缺少、無效或已過期。
INELIGIBLErefusal否403此 DSM 帳號無法委派:系統帳號、已過期,或不是呼叫者本人。
APP_DENIEDrefusal否403DSM 應用程式權限不允許此帳號使用 App 或 File Station。
ADMIN_REQUIREDrefusal否403此操作需要 DSM 管理員。
DELEGATION_DENIEDrefusal否403授權不存在、屬於其他使用者或套件,或已撤銷。
SCOPE_DENIEDrefusal否403路徑超出授權或已核准的資料夾範圍。
POLICY_DENIEDrefusal否403此操作不在已核准的政策內。
PEER_DENIEDrefusal否403socket 對端不是套件使用者或 root。
PERMISSION_DENIEDrefusal否403受委派的使用者在 DSM 中無法存取該路徑。
UNKNOWN_OPrefusal否400executor 不認得此操作。
INVALID_REQUESTrefusal否400請求或其 params 不合法。
REQUEST_TOO_LARGErefusal否413請求行超過 64 KiB。
EXECUTOR_PAUSEDrefusal是503executor 已暫停,例如套件停止或升級期間。
EXECUTOR_STARTINGrefusal是503executor 正在執行安裝或升級後的 App start 步驟;結束前 status 回報 state starting。
STORAGE_ERRORrefusal是500executor 無法讀寫其受保護的狀態。
INTERNALrefusal是500executor 發生非預期的失敗。
WRITE_FAILEDrefusal是500executor 無法寫入檔案。
READ_FAILEDrefusal是500executor 無法把檔案複製到 staging。
DSM_FAILEDrefusal是502executor 呼叫 DSM 失敗。
ROOT_FAILEDrefusal否500root 程式無法執行、被訊號終止,或其輸出無法保存。
ROOT_TIMEOUTrefusal是504root 程式超過 policy 的時限,已被終止。
ROOT_BUSYrefusal是429此套件同時執行的 root 程式已達上限。
ROOT_STAGING_FULLrefusal是507staging 資料夾中等待取走的 root 輸出已達配額。
ROOT_JOB_NOT_FOUNDrefusal否404此套件沒有這個 job_id 的 root 工作。
PORTAL_FAILEDrefusal是502DSM 未接受應用程式入口的變更;status 的 portal 說明是否需要再移除一次。
NO_SPACErefusal否507目的地的儲存空間已滿。
SCOPE_APPROVAL_STALErefusal否409資料夾範圍的核准已過期。
IDENTITY_CHANGEDrefusal否409授權所綁定的 DSM 帳號或資料夾已變更。
needs-scope-confirmationrefusal否409管理員必須先確認資料夾範圍。
disabledrefusal否409管理員已關閉這項整合。
invalid-destinationrefusal否400目的地不在政策內。
invalid-sizerefusal否400檔案大小缺少、為負數或過大。
operation-conflictrefusal否409相同的 job id 又以不同的輸入送出。
operation-not-foundrefusal否404此授權與呼叫者沒有這項操作。
destination-existsrefusal否409目的地已有同名檔案,且 conflict 不允許取代。
invalid-pathrefusal否400名稱或路徑為空、保留字、過長或含禁止字元。
path-too-deeprefusal否400名稱超過 16 層資料夾。
destination-not-directoryrefusal否409名稱中的某個資料夾其實是檔案或符號連結,或位於另一個磁碟區。
name-too-longrefusal否400磁碟區認為名稱過長而拒絕。
not-foundrefusal否404路徑不存在。
not-a-filerefusal否400路徑是資料夾或特殊檔案。
recursive-requiredrefusal否400路徑是資料夾,且未設定 recursive。
recycle-bin-disabledrefusal否409共用資料夾沒有資源回收筒,且未設定 permanent。
task-not-foundrefusal否404任務屬於其他工作,或 executor 已重新啟動。
too-many-tasksrefusal是429executor 已在追蹤 64 個任務。
queue-fullrefusal是429executor 的操作佇列已滿。
limit-exceededrefusal否413檔案超過 max_bytes,或 root 輸出超過 policy 的 max_output。
OPERATION_CANCELEDoutcome否409操作已取消;reason 說明原因。
CANCEL_REQUESTEDoutcome否202已要求取消,複製尚未停止。
CLEANUP_PENDINGoutcome是500操作已結束,但部分檔案尚未清除。
grant-revokedreason否409授權已撤銷。
destination-replacedreason否409較新的授權取代了此目的地。
integration-disabledreason否409管理員停用了此整合。
validation-deniedreason否403授權未通過 DSM 的重新驗證。
scope-changedreason否409已核准的資料夾範圍已變更。
storage-errorreason是500受保護的狀態無法寫入。
operation-canceled-by-userreason否409擁有者取消了操作。
operation-deadline-exceededreason是504操作超過期限。
EXECUTOR_UNAVAILABLEclient是503用戶端無法連到 executor socket。
APP_STOPPEDclient是503套件已停止:生命週期信箱要求 executor 停止。用戶端沒有送出任何內容。
APP_STARTINGclient是503套件剛啟動,executor 尚未開始接聽。用戶端沒有送出任何內容。
EXECUTOR_TIMEOUTclient是504executor 未及時回應。
EXECUTOR_TOO_LARGEclient否413請求或回應超過 64 KiB。
EXECUTOR_PROTOCOLclient否502executor 的回應不是有效的 v1 回應。