QDK

QNAPでのQPKGアドオンの開発環境を作ってみる。

  • 2024年10月8日
  • 日常
  • 50view

お世話になりますカトーです!
ファイルサーバやらNASは使ってますでしょうか?まぁ企業でファイルサーバが無いというのは概ね見かけませんが、クラウドやオンプレなどいくつか種類はありますが、国内においてNASというとSynologyとQNAP、またIOデータ、バッファローといくつか限られますが、QNAPを利用して色々ゴリゴリとアドオンを利用している人もいるので、私もちょっとどんなものか開発してみようと思います。なにごともチャレンジですよね。

すでにQNAPでQPKGパッケージを開発している人はあまり参考になりませんが、これから開発しようって人は参考にどうぞ

基礎知識 QPKG

そもそもQNAPはQTS(QNAP Turbo System)と呼ばれる独自のオペレーティングシステムを使用しています。QTSは、Linuxカーネルに基づいて開発されているらしく、パッケージ管理やファイルシステムの構造などがLinux標準に準拠しています。つまりQNAPのQTSはLinuxカーネルをベースにした独自のオペレーティングシステムになります。なので触るとわかりますがDebianやUbuntuやRHELなどで入っているパッケージがなかったりしますのでこのQTSに準じて開発する必要があります。

開発の流れ QPKG

先にざっくりと流れだけ書いておきます。ちなみに私も手探りでおこないましたので、多少間違っていたら申し訳ない。詳しくは公式のガイドラインを見てください。
参考:QPKG開発ガイドライン
https://wiki.qnap.com/wiki/QPKG_Development_Guidelines

 

ステップ1: QDK開発環境のインストール

まずは公式からQDKをダウンロード、現時点(2024/06/23)では、2.3.13があるようでしたが、安定として 2.3.3を利用しまいた。

インストール前にデジタル署名について許可しておきます。これをしておかないとインストール時にエラーになります。

 

QPKG 開発
App Centerから手動でインストールします。

QPKG開発

 

QDK

 

早速使えるようになりました。

 つくりたいアドオン書く

せっかくなので、なにか書いてみます。
参考:https://wiki.qnap.com/wiki/QPKG_Development_Guidelines
https://www.qnap.com/ja-jp/how-to/tutorial/article/qpkg-development-guidelines
クックブックよると構成は以下です。
myqpkg/
├── qpkg.cfg (メタデータファイル)
├── qinstall.sh (インストールスクリプト)
├── autorun.sh (自動実行スクリプト)
├── myapp/ (アプリケーションファイル)
└── shared/ (共有ファイル)

ひとまずサンプルとして、qpkgファイルはQPKGのメタデータを定義して進めます。

QPKGパッケージの作成
QNAP SDKを使ってQPKGファイルを作成するには、すべてのファイルを圧縮して.qpkgという拡張子にします。以下のコマンドを使用してパッケージを作成します。

. 注意事項

今回サンプルで作ってみて、個人的は注意事項は以下です。

  • パスの指定:NASの共有フォルダパスはモデルや設定によって異なる。QPKG内で使うパスはqpkg.cfgの変数を活用。
  • 権限:スクリプトやファイルに適切な実行権限を付与する必要があります。特にシェルスクリプトは実行可能権限(chmod +x)を忘れないように。
  • QNAP OSの互換性QPKG_QTSフィールドで互換性のあるQNAP OSバージョンを指定することで、対応していないバージョンでのインストールを防ぐ。
  • インストール時の依存関係:他のアプリケーションやライブラリに依存する場合は、インストール前にそれらが存在するか確認し、必要であればインストール手順に追加。

現在、業務で作ることがないですが、なにか趣味で書いてみたいところです。

QDK
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG