お世話になりますカトーです!
ファイルサーバやら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を利用しまいた。
インストール前にデジタル署名について許可しておきます。これをしておかないとインストール時にエラーになります。
App Centerから手動でインストールします。
早速使えるようになりました。
つくりたいアドオン書く
せっかくなので、なにか書いてみます。
参考: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のメタデータを定義して進めます。
1 2 3 4 5 6 7 8 9 10 |
[QPKG] QPKG_NAME="MyApp" QPKG_VER="1.0.0" QPKG_AUTHOR="Your Name" QPKG_PATH="/share/CACHEDEV1_DATA/.qpkg/MyApp" QPKG_ENABLE="TRUE" QPKG_QTS="5.0.0" QPKG_RC_NUM="101" QPKG_INSTALL_MSG="MyApp installed successfully" QPKG_DESC="This is a sample QPKG" |
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/sh QPKG_PATH="/share/CACHEDEV1_DATA/.qpkg/MyApp" # ディレクトリの作成 mkdir -p $QPKG_PATH # アプリケーションファイルのコピー cp -r myapp/* $QPKG_PATH echo "MyApp has been installed successfully!" exit 0 |
1 2 3 4 5 6 7 8 |
#!/bin/sh QPKG_PATH="/share/CACHEDEV1_DATA/.qpkg/MyApp" # アプリケーションの起動 $QPKG_PATH/myapp/start.sh exit 0 |
1 2 |
#!/bin/sh echo "Hello, QNAP World!" > /share/Public/hello_qnap.txt |
QPKGパッケージの作成
QNAP SDKを使ってQPKGファイルを作成するには、すべてのファイルを圧縮して.qpkg
という拡張子にします。以下のコマンドを使用してパッケージを作成します。
1 |
tar -cvzf MyApp.qpkg myqpkg/ |
. 注意事項
今回サンプルで作ってみて、個人的は注意事項は以下です。
- パスの指定:NASの共有フォルダパスはモデルや設定によって異なる。QPKG内で使うパスは
qpkg.cfg
の変数を活用。 - 権限:スクリプトやファイルに適切な実行権限を付与する必要があります。特にシェルスクリプトは実行可能権限(
chmod +x
)を忘れないように。 - QNAP OSの互換性:
QPKG_QTS
フィールドで互換性のあるQNAP OSバージョンを指定することで、対応していないバージョンでのインストールを防ぐ。 - インストール時の依存関係:他のアプリケーションやライブラリに依存する場合は、インストール前にそれらが存在するか確認し、必要であればインストール手順に追加。
現在、業務で作ることがないですが、なにか趣味で書いてみたいところです。