02_qpkg_settings.md 3.7 KB

QPKG 設定

一個新的 qpkg 專案產生後, 會有幾個比較重要的部分要設定

qpkg.cfg

  • 是一個一堆 key-value 的設定檔
  • 有一堆設定, 可以參考 官方文件
  • 重點 :
    • QPKG_SERVICE_PROGRAM 名稱, 要與下面的 [project_name].sh 相同 ( 包含.sh )
    • QPKG 預設認定你的 app 介面是一個 web application 介面
    • QPKG_WEBUI 預設的 web application path
    • QPKG_WEB_PORT 預設的 web application port
    • QPKG_DESKTOP_APP 預設認定用一個新的 broswer 分頁開啟你的 web application
      • 若是把它設定為 1, 則會用她自己 QTS 的 popup 視窗開啟
      • 但此方式是 iframe, 會有 x-frame-options 問題

package_routines

  • 用來設定 安裝 / 移除 的 callback-function
    • 基本上是個 shell script
  • 這份文件內, 可以使用一些 QPKG 提供的變數, 可以參考 官方文件
    • SYS_QPKG_DIR 是這個 QPKG 被安裝的路徑
  • pkg_post_install, pkg_install, pkg_post_install 三個安裝時的 callback
    • 這三個是一般 shell script 的 function, 可自由使用 SYS_QPKG_DIR 等變數
  • PKG_PRE_REMOVE, PKG_MAIN_REMOVE, PKG_POST_REMOVE 這三個是移除的時候用的 callback 設定
    • 他不是一個 shell script function, 而是一個 shell script 變數
    • 內容是一個 string, 安裝時 QPKG 會把這個 string 拿去產生 shell script function
    • 但是新產生的 function 在執行時無法使用 SYS_QPKG_DIR 等官方提供的變數
    • 因為是個 string, 所以延伸出很多問題
    • 基本概念是把你要執行的 shell 指令寫在指令中
    • shell script 的 string 在宣告時, 會先把 $ 進行一次替變數替換, 若不想被替換, 要加上跳脫字元 \$
    • 基本上 :
    • 官方變數 及 自訂的 help 變數會直接帶入, 使用 $
    • function 運行中儲存資料的變數, 使用 \$
    • 範例
DOCKER=$(/sbin/getcfg container-station Install_Path -f ${QPKG_CONF})/bin/system-docker

PKG_PRE_REMOVE="{
    IMAGE_ID=\$(/bin/cat $SYS_QPKG_DIR/loaded_docker_images)
    $DOCKER image rm \$IMAGE_ID
}"
  • 官方文件(最下方)有提到這件事, 但其內容應該有一些 render 上的錯誤

  • 其他

    • 網路上看到的很多範例 (QPKG 包 docker-compose), 其 package_routines 內容都與此份 官方 nginx 範例 一模一樣, 但還不了解其用意為何, 先備註起來

shared/[project_name].sh

  • 是個 shell script
  • 根據檔案預設的提示, 將 start / stop 的 shell 指令加在適當的位置即可
  • 這個檔案吃不到 SYS_QPKG_DIR 等系統變數, 所以有些參數要用 getcfg 自己拿

shared folder

  • 你的程式主體放在這, 包含用來啟動的 [project_name].sh
  • 若有 X86 等專用的檔案, 要放在對應的資料夾, 而不是 shared

icons

  • 程式 icon, 若 QPKG_NAME Name 為 KdanQPKG, 則需含有
    • KdanQPKG.gif : App 列表顯示的 icon, 64*64px
    • KdanQPKG_80.gif : App details 顯示的 icon, 80*80px,
    • KdanQPKG_gray.gif : KdanQPKG.gif 的 disable 版本, 64*64px
  • 若沒有這些圖片, 會用預設圖片
  • 可在 QDK 路徑下, 找到這三張預設圖片(為隱藏檔案, .開頭), 確認尺寸等詳細資訊
  • 官方文件 有提到詳細尺寸