mc2をdebパッケージにしてみた

この前Twitterでつぶやいたdebパッケージ化を試してみた

を試してみた。

最初はDebianパッケージのアレコレを調べていたんだけど、どうにもうまくできないのでCMakeのCPackを使用して作成。

CMakeLists.txtの改修

CMakeListsにはCPackの設定を追加

INSTALL(
    TARGETS model_camera
    RUNTIME DESTINATION /opt/model-camera
)
INSTALL(
    FILES model-camera.service
    DESTINATION /etc/systemd/system
)

SET(CPACK_GENERATOR "DEB")
SET(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
SET(CPACK_PACKAGE_CONTACT "mattyan.mail@gmail.com")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "mattyan")
SET(CPACK_PACKAGE_VERSION "2.4.0")
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libgstreamer1.0-0, gstreamer1.0-plugins-base, gstreamer1.0-plugins-base-apps, gstreamer1.0-plugins-bad, gstreamer1.0-plugins-good, gstreamer1.0-plugins-ugly")
INCLUDE(CPack)

INSTALLでインストール先を指定。今回は/opt以下に配置。systemdのサービスファイルは/etc/systemd/system以下に配置

SETでCPackの設定を諸々追加。CPACK_DEBIAN_PACKAGE_DEPENDSで依存パッケージをリストアップすると、aptでインストールするときに全部面倒見てくれる。今まで手であれこれ入れてたのが自動化されたのでだいぶインストールが楽になる。

これをビルドするためのDockerも作成

# debパッケージ作成用Docker
FROM debian:bullseye-slim

# パッケージインストール
RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get -y install wget fakeroot cmake gcc build-essential libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev && \
    wget https://project-downloads.drogon.net/wiringpi-latest.deb && \
    dpkg -i wiringpi-latest.deb

# ソース類追加
RUN mkdir /src
COPY src /src/src
COPY img /src/img
COPY CMakeLists.txt /src
COPY model-camera.service /src
COPY build.sh /src

# ビルドスクリプト追加
WORKDIR /src

ENTRYPOINT [ "sh", "./build.sh" ]

raspberrypiosがDebian Bulluseyeベースみたいなので、DockerのベースもDebian Bullseye-slimで作成。パッケージ更新したあと必要なパッケージのインストール。wiringpiだけパッケージから入れられないので、wgetで取得してdpkgでインストール。

ビルドに必要なものを一通りCOPYしてからENTRYPOINTでビルドするようにして完成。

build.shは

#!/bin/bash

###
# ビルドしてdebファイルの作成
###
if [ -d build ]; then
    rm -rf build
fi

mkdir build

cd build
cmake .. -DUSE_RENDERER_LCD=1 -DUSE_RENDERER_WEB_STREAM=1 -DUSE_EVENTLISTENER_GPIO=1 && \
make package && \
cp model_camera*.deb /packages

buildディレクトリを作って中でビルド。完成したパッケージを外にcpするスクリプト。

これを

docker build . --rm -t model-camera-build

でDockerビルドして

docker run -v $PWD/packages:/packages model-camera-build

で走らせたら、$“PWD/packagesにビルドされたパッケージが作成されるので、あとはコレをラズパイに転送してapt install ./model_camera_2.4.0_armhf.debでインストールすればいいはず。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です