Raspberry Pi board

详细了解有关在树莓派上使用 Debian 包实现服务。

如果你有一个树莓派,你必须使用它为许多不同的项目。通常,开发人员使用树莓派来运行使用流行语言(如 Python)的 Web 服务。

但它不是具有冗余的服务器,并且很可能进行重新启动。在这种情况下,您不希望每次服务都停机。

您可能还喜欢:
如何在 Debian 或 Ubuntu 上设置您的 Minecraft 服务器

有两种方法可以解决此问题:

1. 手动确保将其挂钩 systemdinit.d

2. 使用在任何 Pi/Debian 计算机上部署的软件包自动执行

通过第二种方法,您可以与朋友和同事共享您的服务。因此,下面是有关如何为树莓派创建 Debian 包的分步指南。让我们开始吧!

开始

在开始之前,有几个要求:

  • 计算机– 下面列出的步骤是使用 MacBook,但只要可以在它上安装 它,就无关紧要 dkpg-deb

  • 树莓派或任何其他 Debian 机器

就是这样!

步骤 1

安装 dpkg-deb ,这是 Debian 软件包管理套件中的实用程序。有关详细信息,请查看Wiki页面。在 Mac 上,如果您安装了冲煮,则非常简单。

brew install dpkg

命令完成执行后,您将看到一组可用的新命令。对于本指南,我们感兴趣的是 dpkg-deb

步骤 2

接下来,我们需要使工作区准备好创建 Debian 包。要创建简单的 Debian 包,您需要组织工作区,以便在安装后将所需的文件放置在预期位置。

例如,如果您有一个二进制文件,您希望该二进制文件作为命令可用,则需要将其放入 $PATH 中。假设我们必须把它放在 /usr/local/bin

在我们的案例中,我们为代理构建了一个二进制文件,用于将指标从树莓派发送到云上的 Web 服务器。这只是一个例子。

二进制文件的名称: http-client

因此,在工作区中,创建一个根文件夹,该文件夹的名称包含所需的包的名称:

mkdir alphamon-agentpi_0.0-1
mkdir alphamon-agentpi_0.0-1/usr
mkdir alphamon-agentpi_0.0-1/usr/local
mkdir alphamon-agentpi_0.0-1/usr/local/bin

alphamon-agentpi_0.0_1将在您的包的结束名称。

: 标准版本适用于 0.0_1, Major.Minor_Revision

现在,复制二进制文件:

cp http-client alphamon-agentpi_0.0-1/usr/local/bin

这样,创建包后,请确保它将放置在 /usr/local/bin 中。

步骤 3

下一步是添加有关包的详细信息,以便使用它的任何人都可以了解有关它的详细信息0-1/
姆克迪尔·贝比安

现在,创建一个名为的文件 control 并添加以下行:

Package: alphamonagent
Version: 0.0-1
Section: base
Priority: optional
Architecture: armhf
Maintainer: Sameer <sss@gmail.com>
Description: Agent to support device discovery and reporting of AlphaMon

有关每个字段的详细信息,请访问此处。所有字段都是不言自明的。

步骤 4

现在,我们在路径中有一个二进制文件,我们需要确保每次启动时都会调用二进制文件(在本例中是一个小服务)。

为此,我们依赖于 systemd ,它是嵌入式系统的一个相当常见的服务管理器,并且在树莓派上安装的大多数操作系统中都受支持。

我们利用现有的 system-v systemd 转换,使我们的生活轻松。

首先,我们创建一个 shell 脚本,该脚本将放在 /etc/init.d/.

start() {
    # code to start app comes here
    echo "hello alphamonagent here" 

}

stop() {
    # code to stop app comes here 
      echo "hello alphamonagent here" 
}

case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

可在此处找到一个完全工作的示例

步骤 5

如果您希望在安装之前或安装后执行某些操作,则需要添加 preinst/postinst 文件。

postinst /etc/init.d 下面可以找到支持我们在步骤 4 中创建的服务的示例文件:

#!/bin/sh


echo "\033[36m HI I'M A POSTINST SCRIPT `date +"%s"` \033[39m"
systemctl enable alphamonagent
systemctl start alphamonagent

exit 0

步骤 6

我们都一定了;现在,我们只需要执行一个简单的命令来创建 Debian 包。

导航到工作区根文件夹。

ls
alphamon-agentpi_0.0-1

然后,执行以下操作:

dpkg-deb --build alphamon-agentpi_0.0-1/

瞧!你有Debian包 alphamon-agentpi_0.0-1.deb

最后一步

在树莓派上安装 deb 包:

dpkg -i  <package_name>

当我们在维护者脚本中添加命令以启用和启动服务时 postinst ,服务会自动启动,每次重新启动后,服务将自行启动。

上面使用的代码在GitHub上可用。

进一步阅读

如何在 Debian 或 Ubuntu 上设置您的 Minecraft 服务器

Comments are closed.