Help us understand the problem. What is going on with this article?

第16回(最終回) Raspberry Pi で監視カメラを作ろう! ~インストーラ作成編~

Raspberry Piと専用のカメラモジュールを使用し、ONVIF対応の監視カメラを作成するシリーズ記事です。
本記事はリンク情報システム株式会社の有志が作成しています。

本シリーズの最終回です。


Linuxの場合、アプリは自分でソースからビルドして使うのが普通という時代もありました。(一部、今でもそう言うツールは存在していますし、最新版を追求する場合は、自分でビルドする事も必要かと思います。)

ですが、最近は、dpkgやapt-get等のパッケージをインストールするツールを用いる方法が普及し、一般ユーザでも簡単にアプリがインストールできるようになりました。
また、セキュリティアップデートも容易に行う事ができます。

そこで今回は、第5回で使用した監視カメラ映像配信アプリのインストーラ「RedBrick-1.0.1-Linux.deb」を作成する方法を記述します。

インストーラ作成

debパッケージ作成

Raspberry pi は debian から派生しているため、 インストーラとして deb パッケージを作成します。
また、第7回の監視カメラ映像配信アプリのビルドコマンドにあるように、監視カメラ映像配信アプリはcmakeを使用しているので、make 実行後にcpackコマンドを実行するだけで deb パッケージを作成する事ができます。

$ make
$ cpack -C CPackConfig.cmake

cpackコマンドを実行するとdeb パッケージ「RedBrick-1.0.1-Linux.deb」が作成されます。

インストーラ実行

作成したインストーラを使用して監視カメラ映像配信アプリをインストールします。

$ sudo dpkg -i RedBrick-1.0.1-Linux.deb

インストールできたら、アンインストールも試してみます。

$ sudo dpkg -r RedBrick

debパッケージのオプション設定

cmakeツールで、debパッケージを作成するためには、CMakeList.txtには以下の記述を行います。「include (InstallRequiredSystemLibraries)」以降

cmake_minimum_required(VERSION 2.8)

project(RedBrick)

ADD_SUBDIRECTORY(mhengine)
    :
ADD_SUBDIRECTORY(redbrick)

include (InstallRequiredSystemLibraries)

set (CPACK_GENERATOR "DEB")
set (CPACK_PACKAGE_CONTACT "連絡先") 
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set (CPACK_PACKAGE_VERSION_MAJOR "1")
set (CPACK_PACKAGE_VERSION_MINOR "0")

set (CPACK_DEBIAN_PACKAGE_DEPENDS "libxml2, libuuid1, libavformat57, libavcodec57, libavutil55, libavresample3, libswscale4, libssl1.1 libjson-c3 insserv")

configure_file (postinst.in postinst \@ONLY)
configure_file (postrm.in postrm @ONLY)
set (CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "postinst;postrm")

include (CPack)

設定している項目について、簡単に説明します。

項目 説明
CPACK_GENERATOR パッケージの形式
CPACK_PACKAGE_CONTACT 連絡先
CPACK_RESOURCE_FILE_LICENSE ライセンスファイル
CPACK_PACKAGE_VERSION_MAJOR メジャーバージョン
CPACK_PACKAGE_VERSION_MINOR マイナーバージョン
CPACK_DEBIAN_PACKAGE_DEPENDS 依存関係のあるパッケージ
CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA インストール、アンインストール時に実行するスクリプトファイル名

上記のような設定を行う事で、deb形式のパッケージが作成できます。

CPACK_DEBIAN_PACKAGE_DEPENDSによって、このプログラムを実行するために必要なパッケージを記述しているため、もし必要なツールやライブラリがインストールされていない場合は、それらのインストールを促す事ができます。

作成されたdeb形式のパッケージはファイルのコピーだけではなく、postinst、postrmスクリプトによって、インストール、アンインストール時に、追加の処理を実行する事ができます。
今回のスクリプトでは、inssrvコマンドを実行し、アプリをデーモンとしてシステムへの登録します。

postinstファイル(インストール時に実行される)
#!/bin/sh
insserv redbrick

監視カメラを作成するシリーズ記事は本記事が最後となります。
他の記事もどうぞご参照ください!

インデックス記事へ
第15回記事へ


リンク情報システム株式会社では一緒に働く仲間を随時募集しています!
また、お仕事のご依頼、ビジネスパートナー様も募集しております。お気軽にご連絡ください。
 
 

link_information_systems
放送・航空宇宙・商社・自動車・通信・防災・データセンター・社会インフラなど広範囲な分野で、ソフトウエア開発からシステム運用まで、またテレビの字幕制作など幅広いサービスを提供しています。
https://www.lis.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした