パッケージ依存関係

依存パッケージの追加 #

dependencies.json を使って、アプリに依存パッケージを追加することができます。 actdk build時に、dependencies.json を参照し、必要な依存が入ったアプリイメージがビルドされます。

{
  "apt": [package1, package2,...],
  "pip": [package1, package2,...],
}

たとえばサンプルアプリでは以下のように指定されています。

{
  "apt": [
    "libv4l-0",
    "libv4lconvert0",
    "python3-pil",
    "python3-numpy",
    "fonts-dejavu-core",
    "libraspberrypi0"
  ],
  "pip": ["actfw-raspberrypi"],
}

指定したパッケージは、デフォルトでは idein/actcast-rpi-app-base:buster-2 の docker イメージ上にインストールされます。

apt パッケージ #

.apt セクションには、apt を通じてインストールするパッケージ名を記述します。

{
  "apt": [
    "libv4l-0",
    "libv4lconvert0",
    "libraspberrypi0"
  ],
  ...(省略)...
}

これらのパッケージは actdk build 時に apt-get でインストールされます。 デフォルトでは以下の apt リポジトリが参照されます。

deb http://archive.raspbian.org/raspbian buster main firmware
deb http://archive.raspberrypi.org/debian buster main

pip パッケージ #

.pip セクションには、pip を通じてインストールする Python の依存パッケージ名を記述します。

{
  ...(省略)...,
  "pip": ["actfw-raspberrypi"],
}

これらのパッケージは actdk build 時に pip install でインストールされます。デフォルトでは Python3.7 の環境が使用されます。

カスタムイメージ機能 #

上記標準の方法でインストールできないパッケージやファイルを追加するにはカスタムイメージ機能が使えます。

dependencies.json の各ターゲットタイプ以下で .base_image セクションに Docker イメージを指定することで、アプリのベースイメージをカスタマイズできます。 ターゲットタイプとして .actdk/setting.jsontarget_types に記述されているものをキーとして利用できます。

{
  "apt": [...(省略)...],
  "pip": [...(省略)...],
  "raspberrypi-buster": {
    "base_image": "<repo>:<tag>"
  }
}

この Docker イメージは、actdk コマンドを実行するマシンと actsim が起動しているマシンから docker pull できる必要があります。

apt パッケージで指定したパッケージは、ここで指定したベースイメージ中の設定を参照してインストールされます。

例: ffmpeg のインストール #

例として、apt で提供されているバージョンより新しい FFmpeg をインストールする場合を考えます。以下の Dockerfile は、新しいバージョンの FFmpeg をダウンロードしインストールする手順を示しています。

FROM idein/actcast-rpi-app-base:buster-2

RUN apt-get update \
    && apt-get install -y wget xz-utils \
    && apt-get clean \
    && apt-get autoclean \
    && apt-get autoremove -y \
    && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*

RUN wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz \
    && tar -Jxvf ffmpeg-release-armhf-static.tar.xz \
    && mv ffmpeg-6.0-armhf-static/ffmpeg /usr/local/bin/ \
    && rm -rf ffmpeg-release-armhf-static.tar.xz ffmpeg-6.0-armhf-static

この Dockerfile を元に my-org/my-base-image:ffmpeg-6.0 という Docker イメージをビルドした場合、dependencies.json で以下のように指定します。

{
  "apt": [...(省略)...],
  "pip": [...(省略)...],
  "raspberrypi-buster": {
    "base_image": "my-org/my-base-image:ffmpeg-6.0"
  }
}

イメージ名は適切に変更してください。

これにより、アプリは新しいバージョンの FFmpeg を含むカスタムイメージを使用することができます。


Actcast SDKリファレンスマニュアル に戻る