---
title: 3.3 パッケージの作成をする
description: "## 3.3 パッケージの作成をする エッジゲートウェイではパッケージ管理システ…"
url: "https://manual.amnimo.com/docs/utilization-dev/3-3-dev/"
updated: "2026-11-09"
category: デベロッパーズマニュアル / 第3章　エッジゲートウェイの活用
---

# 3.3 パッケージの作成をする

## 3.3 パッケージの作成をする

エッジゲートウェイではパッケージ管理システムを利用できます。ユーザーが作成したアプリケーションをパッケージとして管理することで、パッケージ同士の依存関係の管理することも可能です。

ここでは、ネイティブ開発環境でパッケージを作成する方法について説明します。

> ![warning](https://manual.amnimo.com/wp-content/uploads/2026/11/warning.png) **注意**: インストールしたパッケージは rootfs 領域に入るため、ファームウェアの全体更新で削除されます。全体更新の後も使う方法は『[2.3.5 パッケージを残す](/docs/firmware-dev/2-3-dev/#235-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E6%AE%8B%E3%81%99)』を参照してください。

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: パッケージ管理システムの詳細については、Ubuntuのサイトで詳細を確認してください。
>
>
>
> [https://ubuntu.com/server/docs/package-management](https://ubuntu.com/server/docs/package-management)

### 3.3.1 準備

必要なアプリケーションをインストールします。

#### 関連パッケージのインストール

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ sudo apt update
admin@amnimo:~$ sudo apt upgrade
admin@amnimo:~$ sudo apt install devscripts cdbs debhelper dh-make
```

#### サンプルアプリケーションのソースコード

サンプルプログラムには、『[1.3.2 クロスビルドの実行](/docs/dev-environment-dev/1-3-dev/#132-%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9F%E8%A1%8C)』のサンプルコードを利用します。また、サービスのユニットファイルには、『[3.2.1 ユニットファイルの作成](/docs/utilization-dev/3-2-dev/#321-%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90)』で作成したユニットファイルを利用します。

##### main.c

```
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    while(1){
    printf("Hello World!\n");
    sleep(10);
  }
  return 0;
}
```

##### Makefile

『[1.3.2 クロスビルドの実行](/docs/dev-environment-dev/1-3-dev/#132-%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9F%E8%A1%8C)』のMakefileに、サービスユニットのインストール処理を追記します。

```
CC = gcc
CFLAGS = -O3 -Wall
DESTDIR :=
LIBS =
OBJS = main.o
PROG = amnimo-sample-app
UNITFILE = amnimo-sample-app.service

all: $(PROG)
$(PROG): $(OBJS)
	$(CC) $(OBJS) $(LIBS) -o $(PROG)

clean:
	rm -f *.o $(PROG)

install: $(PROG)
	install -D -s $(PROG) $(DESTDIR)/usr/sbin/$(PROG)
	install -D -m 644 $(UNITFILE) $(DESTDIR)/lib/systemd/system/$(UNITFILE)
```

##### amnimo-sample-app.service

```
[Unit]
Description=amnimo sample application
After=syslog.target

[Service]
Type=simple
ExecStart=/usr/sbin/amnimo-sample-app

[Install]
WantedBy=multi-user.target
```

ディレクトリ構造とファイル配置を以下に示します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~/sample$ tree
.
├── amnimo-sample-app.service
├── main.c
└── Makefile
```

### 3.3.2 パッケージの作成

#### パッケージのテンプレートの作成

dh_makeを使用して、サンプルアプリケーションのディレクトリ内にパッケージのテンプレートを作成します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ cd sample
admin@amnimo:~/sample$ dh_make --native --single --email support@amnimo.com --packagename amnimo-sample-app_1.0.0
Maintainer Name: unknown
Email-Address	: support@amnimo.com
Date		: Wed, 19 Aug 2020 10:33:40 +0000
Package Name	: amnimo-sample-app
Version		: 1.0.0
License		: gpl3
Package Type	: single
Are the details correct? [Y/n/q]		← 「Y」キーに続けてEnterを入力し、一旦終了する
admin@amnimo:~/sample$
```

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: 上記の実行例で使用しているdh_makeのオプションを以下に示します。
>
>
>
> | オプション | 設定内容 |
> | --- | --- |
> | --native | ネイティブ形式（upstream のソースの tar アーカイブを別に持たない形式）のパッケージの作成 |
> | --single | アプリケーションの作成 |
> | --email | 各ファイル上のメールアドレスの設定 |
> | --packagename | 各パッケージファイルのパッケージ名 |
>
>
>
> また、上記の例で設定している各パラメーターを以下に示します。
>
>
>
> | パラメーター | 設定内容 |
> | --- | --- |
> | パッケージ名 | amnimo-sample-app |
> | バージョン | 1.0.0 **補足**: 例ではセマンティックバージョニング2.0.0の形式で指定しています。 [https://semver.org/lang/ja/](https://semver.org/lang/ja/) バージョンの比較は Debian のバージョン番号の規則に従います。 [https://www.debian.org/doc/debian-policy/ch-controlfields.html#version](https://www.debian.org/doc/debian-policy/ch-controlfields.html#version) |
> | メールアドレス | [support@amnimo.com](mailto:support@amnimo.com) **注意**: 例のアドレスです。作成するパッケージの保守担当者（Maintainer）のアドレスになるため、お客様のアドレスを指定してください。 |

パッケージのテンプレートを作成すると、debian ディレクトリとその配下のファイルが出力されます（「←」を付けたもの）。

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: 実行例はファームウェア Ver.1（Ubuntu 18.04 LTS）の dh_make の出力です。dh_make の版によって、生成されるファイルの種類は異なる場合があります。ライセンスの既定値（GPL3）も、お客様のパッケージに合わせて `copyright` を書き換えてください。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~/sample$ tree
.
├── amnimo-sample-app.service
├── debian		← 作成（配下のファイルすべて）
│   ├── amnimo-sample-app.cron.d.ex
│   ├── amnimo-sample-app.doc-base.EX
│   ├── amnimo-sample-app-docs.docs
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── manpage.1.ex
│   ├── manpage.sgml.ex
│   ├── manpage.xml.ex
│   ├── menu.ex
│   ├── postinst.ex
│   ├── postrm.ex
│   ├── preinst.ex
│   ├── prerm.ex
│   ├── README
│   ├── README.Debian
│   ├── README.source
│   ├── rules
│   └── source
│       └── format
├── main.c
└── Makefile
```

##### 主な生成ファイル

| ファイル名 | 内容 |
| --- | --- |
| control | パッケージ管理ツールが使用する情報です。 |
| copyright | パッケージの著作権やライセンスに関する情報です。 デフォルトは、GPLv3です。 **補足**: 本ファイルは必須ではありません。 |
| changelog | パッケージのバージョン番号、リビジョン、ディストリビューション、緊急度（urgency）を識別するために利用します。 以下のフォーマットに従って記載する必要があります。 [https://www.debian.org/doc/debian-policy/ch-source.html](https://www.debian.org/doc/debian-policy/ch-source.html) **補足**: debchangeコマンドで、フォーマットのテンプレートを取得できます。 |
| rules | パッケージを作成するためのルールが記載されています。 基本的なMakefileの記述（all、clean、installなど）の場合は、特に変更する必要はありません。 |

> ![note](https://manual.amnimo.com/wp-content/uploads/2026/11/note.png) **補足**: パッケージ情報をカスタマイズする場合は、Debianのサイトの詳細情報を確認してください。
>
>
>
> [https://www.debian.org/doc/manuals/maint-guide/dreq.ja.html](https://www.debian.org/doc/manuals/maint-guide/dreq.ja.html)

#### パッケージの作成

dh_makeを実行したことで、パッケージの作成に必要なファイルは作成されています。続いて、debuildでパッケージを作成します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~/sample$ debuild -us -uc -ui
```

実行すると、以下に示すファイル（「← 作成」を付けたもの）が出力されます。パッケージ関連のファイルは、実行ディレクトリの1つ上の階層に出力されます。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~/sample$ tree ../
../
├── amnimo-sample-app_1.0.0_arm64.build		← 作成
├── amnimo-sample-app_1.0.0_arm64.buildinfo		← 作成
├── amnimo-sample-app_1.0.0_arm64.changes		← 作成
├── amnimo-sample-app_1.0.0_arm64.deb		← 作成
├── amnimo-sample-app_1.0.0.dsc		← 作成
├── amnimo-sample-app_1.0.0.tar.xz		← 作成
├── sample
│   ├── amnimo-sample-app		← 作成
│   ├── debian
│   │   ├── amnimo-sample-app		← 作成（配下のファイルすべて）
│   │   │   ├── DEBIAN
│   │   │   │   ├── control
│   │   │   │   └── md5sums
│   │   │   ├──lib
│   │   │   │   └── systemd
│   │   │   │     └──system
│   │   │   │       └── amnimo-sample-app.service
│   │   │   └── usr
│   │   │        ├── sbin
│   │   │        │   └── amnimo-sample-app
│   │   │        └── share
│   │   │           └── doc
│   │   │               └── amnimo-sample-app
│   │   │                   ├── changelog.gz
│   │   │                   ├── copyright
│   │   │                   └── README.Debian
│   │   ├── amnimo-sample-app.cron.d.ex
│   │   ├── amnimo-sample-app.doc-base.EX
│   │   ├── amnimo-sample-app-docs.docs
│   │   ├── amnimo-sample-app.substvars		← 作成
│   │   ├── changelog
│   │   ├── compat
│   │   ├── control
│   │   ├── copyright
│   │   ├── debhelper-build-stamp		← 作成
│   │   ├── files		← 作成
│   │   ├── manpage.1.ex

（略）

│   │   └── source
│   │       └── format
│   ├── main.c
│   ├── main.o		← 作成
│   └── Makefile
```

##### 主な生成ファイル

| ファイル名 | 内容 |
| --- | --- |
| amnimo-sample-app_1.0.0_arm64.deb | バイナリパッケージです。 dpkgコマンドを使ってインストール／アンインストールすることができます。 |
| amnimo-sample-app_1.0.0.dsc | ソースコード内容の概要です。 |
| amnimo-sample-app_1.0.0_arm64.changes | リビジョンパッケージにおける変更点がすべて記載されているファイルです。 |
| amnimo-sample-app_1.0.0_arm64.build | パッケージ生成時のログです。 |
| amnimo-sample-app_1.0.0_arm64.buildinfo | パッケージの依存情報、ビルド時刻などが記載されています。 |
| amnimo-sample-app_1.0.0.tar.xz | ソースコードtarアーカイブです。 sampleディレクトリ内にあるdebianディレクトリの中身が含まれています。 |

#### 作成したパッケージの内容確認

作成したdebパッケージのアーカイブの中身を確認します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ dpkg -c amnimo-sample-app_1.0.0_arm64.deb
drwxr-xr-x root/root         0 2020-01-02 00:53 ./
drwxr-xr-x root/root         0 2020-01-02 00:53 ./lib/
drwxr-xr-x root/root         0 2020-01-02 00:53 ./lib/systemd/
drwxr-xr-x root/root         0 2020-01-02 00:53 ./lib/systemd/system/
-rw-r--r-- root/root       163 2020-01-02 00:53 ./lib/systemd/system/amnimo-sample-app.service
drwxr-xr-x root/root         0 2020-01-02 00:53 ./
drwxr-xr-x root/root         0 2020-01-02 00:53 ./usr/
drwxr-xr-x root/root         0 2020-01-02 00:53 ./usr/sbin/
-rwxr-xr-x root/root      5864 2020-01-02 00:53 ./usr/sbin/amnimo-sample-app
drwxr-xr-x root/root         0 2020-01-02 00:53 ./usr/share/
drwxr-xr-x root/root         0 2020-01-02 00:53 ./usr/share/doc/
drwxr-xr-x root/root         0 2020-01-02 00:53 ./usr/share/doc/amnimo-sample-app/
-rw-r--r-- root/root       193 2020-01-02 00:53 ./usr/share/doc/amnimo-sample-app/README.Debian
-rw-r--r-- root/root       145 2020-01-02 00:53 ./usr/share/doc/amnimo-sample-app/changelog.gz
-rw-r--r-- root/root      1412 2020-01-02 00:53 ./usr/share/doc/amnimo-sample-app/copyright
```

### 3.3.3 パッケージのインストール／アンインストール

生成したパッケージは、dpkgコマンドでインストール／アンインストールすることができます。

#### パッケージのインストール

パッケージファイル名を指定します。

インストールする前に、`-s`（シミュレーション）オプションを付けて実行し、削除されるパッケージ（`The following packages will be REMOVED:`）がないことを確認してください。理由は、このページの最後の「注意」を参照してください。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ sudo apt -s install /home/admin/amnimo-sample-app_1.0.0_arm64.deb
```

以下は、/home/admin配下にあるパッケージをインストールする例です。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ sudo apt install /home/admin/amnimo-sample-app_1.0.0_arm64.deb
```

#### インストールしたパッケージの確認

パッケージ名を指定します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ apt list amnimo-sample-app
Listing... Done
amnimo-sample-app/now 1.0.0 arm64 [installed,local]
```

#### パッケージのアンストール

パッケージ名を指定します。

**実行環境**: エッジゲートウェイ

```
admin@amnimo:~$ sudo apt remove amnimo-sample-app
```

> ![warning](https://manual.amnimo.com/wp-content/uploads/2026/11/warning.png) **注意**: パッケージのインストール・アンインストール時の注意
>
>
>
> 一部のUbuntuパッケージはアムニモのアプリケーションとの依存性があり、アンインストールすると連動してアムニモのアプリケーションが削除される場合があり、製品として必要な機能を失い、製品が動作しない恐れがあります。
>
>
>
> 以下はntpのパッケージをインストールする例です（ファームウェア Ver.1 の出力例）。`The following packages will be REMOVED:` にアムニモのパッケージ（amnimo-cli、amnimo-meta-ag など）が表示された場合は、インストールを中止してください（`Do you want to continue? [Y/n]` に「n」を入力します）。事前に `sudo apt -s install パッケージ名` で確認できます。ntpパッケージはエッジゲートウェイのNTP機能を実現しているchronyパッケージと競合し、インストールするとchronyパッケージとともに依存しているアムニモのアプリケーションも削除されます。この場合、エッジゲートウェイは正常に起動できないようになります。
>
>
>
> **実行環境**: エッジゲートウェイ
>
>
>
> ```
> admin@amnimo:~$ sudo apt install ntp
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> ・・・
> The following additional packages will be installed:
>   libevent-core-2.1-7 libevent-pthreads-2.1-7 libopts25 sntp
> Suggested packages:
>   ntp-doc
> The following packages will be REMOVED:
>   amnimo-api amnimo-cli amnimo-gui amnimo-meta-ag amnimo-mobile amnimo-shell
>   chrony libag-cfg libag-ctl
> The following NEW packages will be installed:
>   libevent-core-2.1-7 libevent-pthreads-2.1-7 libopts25 ntp sntp
> 0 upgraded, 5 newly installed, 9 to remove and 0 not upgraded.
> Need to get 834 kB of archives.
> After this operation, 45.0 MB disk space will be freed.
> N: Ignoring file 'amnimo.list.staging' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension
> Do you want to continue? [Y/n] n
> ```
