01_build_qpkg.md 4.9 KB

How To Build QPKG

簡介

QPKG

  • QPKG 是 qnap 提供, 專門放在 qnap 環境使用的檔案格式. 可以把其他軟體包裝成 QPKG 格式, 供其他 user 在 qnap 上使用
  • QPKG 是以 shell script 為基礎進行包裝, 以一份 shell script 檔提供 start, stop 等指令
  • 可在 QNap NAS 上, 或其他 Linux 環境安裝 QPKG 開發工具進行開發

QNap QTS

  • QNap 上搭載的 GUI 管理介面
    • 可以網頁形式開啟 (host_ip:8080)
  • 上面有 APP Center 可以
    • 可以搜尋 App 並安裝, 管理
    • 所有安裝好的 QPKG 會出現在 APP Center 上
  • 上面有 Container Station, 是 docker 的 GUI 介面
    • 可以使用 docker
    • 包含一般的 container / image 控制
    • 可以搜尋 docker hub
    • 支援 docker-compose
    • container-station > create 分頁 > create application 按鈕可出現視窗, 讓你輸入 docker-compose.yml 的內容

QDK

  • QDK 全名 QNAP Development Kit.
    • 是用來開發 QPKG 的工具
    • QDK 也被包裝成一個 QPKG 以供使用

建立環境

建立 QDK 環境 ( on QNap NAS )

  • 安裝 QDK

    • QDK 是 QNap 官方提供用來建立 QNap Nas 專用 App 的工具
    • 在 QTS 介面中的 App Center 搜尋 QDK 並安裝
    • 有提供 command line 安裝方式, 一般 linux 也可以安裝來開發
  • 環境

    • 指令 cd `getcfg QDK Install_Path -f /etc/config/qpkg.conf` 切換到 qnap 的安裝路徑, 其中
    • bin/qbuild 這個檔案應該是 qbuild 指令的本體
    • template folder 中放置新 qpkg 開發環境的 template file
  • 其他

    • QDK 沒有提供 GUI 開發介面, 以 command line 介面下指令進行相關的包裝行為
    • getcfg
    • 用來取得 某檔案 -> 某個設定集合 -> 某個設定值
    • 指令格式 :
      • getcfg [config_group] [key_1] [key_2] ... -f [config_path]
      • getcfg [ QDK ] [Install_Path] -f [/etc/config/qpkg.conf]
      • 可以開 /etc/config/qpkg.conf 這份檔案 看對應的檔案格式

建立 QPKG 專案

  • qbuild --create-env 指令

    • 用來建立一個新的 QPKG App 專案
    • 需在 QPKG 安裝路徑下使用
    • 指令 qbuild --create-env MyQPKG, 其中 MyQPKG 替換成你的 Project Name
    • 此時會有一個新的 MyQPKG folder 出現 ( 跟原本的 folder 和在一起 )
  • 所有建立新的 QPKG 開發環境指令如下

    • cd `getcfg QDK Install_Path -f /etc/config/qpkg.conf`
    • qbuild --create-env KdanQPKG
    • cd KdanQPKG
  • 將路徑切到 QPKG 專案中 ( 如上述的 KdanQPKG folder ) 可看到

    • qpkg.cfg file
    • 主要的 config 檔, 包含多種設定
    • package_routines file
    • 程式 install 時的一些 callback function
    • icons/ folder
    • 程式 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 路徑下, 找到這三張預設圖片(為隱藏檔案, .開頭), 確認尺寸等詳細資訊
    • 官方文件 有提到詳細尺寸
    • build/ folder
    • 放最後 build 好的 QPKG 檔
    • config/ folder
    • 不知道幹嘛的
    • arm_64/, arm-x19/, arm-x31/, arm-x41/, x86/, x86_64/, x86_ce53xx/
    • 放你的 code ( 給特定 cpu 架構 ), 用不到可以刪掉 * shared/
    • 放你的 code, 不區分 cpu 架構的部分都放這裡 (docker-compose 相關也是).
    • 其中會有預設的 sh 檔, 要負責程式 start, stop 等 shell 指令設定

Build QPKG

  • 建立專案內容

    • (略, 參考下段 docker-compose 範例)
  • Build App 並安裝 (在你的 QPKG 專案 root folder 上)

    • qbuild : (把你的程式 build 成 QPKG 檔)
    • cd build : 結果放在 build 資料夾下
    • sh KdanQPKG_0.1.qpkg : 直接執行 buid 出來的 qkpg 檔, 進行安裝 (或透過他的 QTS 介面, 上傳此檔案)
  • 安裝完, 在 QTS App Center 可看到你的 QPKG 出現, 可在此處 stop / remove

reference :