欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 香橙派3B学习笔记7:snap安装管理软件包_打包程序与依赖

香橙派3B学习笔记7:snap安装管理软件包_打包程序与依赖

2025/6/9 18:08:56 来源:https://blog.csdn.net/qq_64257614/article/details/148510907  浏览:    关键词:香橙派3B学习笔记7:snap安装管理软件包_打包程序与依赖

有时可以尝试把程文件与其依赖一块打包安装,这里就学习一下。

ssh  : orangepi@本地ip
密码 : orangepi

操作系统发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange Pi 设备优化。PRETTY_NAME="Orange Pi 1.0.6 Focal"

目录

示例程序:

snap介绍:

Snap 部署:

安装 Snapcraft 工具:

检查Snap状态:

创建 Snapcraft 定义文件:

赋予文件读写权限:

创建snap调用目录:

构建snap包:

解包测试:

输入命令测试运行:


示例程序:

这是一段示例Python程序,他需要 requests这个依赖包,如何打包整个程序与依赖:

#!/usr/bin/env python3
import requests  # 示例依赖def main():response = requests.get('https://api.github.com')print(f"Hello! GitHub API status: {response.status_code}")if __name__ == "__main__":main()

它本身实现的功能是:

  1. 发送 GET 请求到 GitHub API。
  2. 打印 API 的响应状态码(如 200 表示成功)。
  3. 如果直接运行脚本,会输出类似:
    Hello! GitHub API status: 200

snap介绍:

 Snap 包是一种自包含的软件包格式,它不仅包含应用程序的可执行文件,还包括所有依赖项(如库、运行时环境等),从而确保应用程序在不同环境中能够一致地运行。

Snap 包是一个独立的文件系统,包含了应用程序所需的所有文件和依赖项。

这意味着应用程序在运行时不会依赖宿主系统上的库或环境,减少了因依赖冲突导致的问题。

Snap 部署:

不管是目标机器还是打包程序依赖的机器,都得先安装这个snap的支持:

sudo apt-get update  
sudo apt install snapd

安装 Snapcraft 工具:

只有打包程序的机器需要安装 Snapcraft 工具

而目标机器(即运行 Snap 包的机器)不需要安装 Snapcraft,但需要安装 Snap 运行时环境(即 Snap 守护进程)

sudo snap install snapcraft --classic

检查Snap状态:

systemctl status snapd

创建 Snapcraft 定义文件:

在与程序文件统一目录下,创建一个名为 snapcraft.yaml 的文件:

name: test-app# Snap 包名称
version: '0.1'# 版本号
summary: Test app# 简短描述
description: A simple test application.# 详细描述
base: core22
grade: stable# 发布级别(stable 或 devel)
confinement: strict# 安全限制级别(strict 或 classic)parts:test-app:plugin: python# 使用 Python 插件source: .# 源代码位置(当前目录)python-packages:  - requests# 指定 Python 依赖apps:test-app: #app 包名称command: request.py# 启动命令,这里改成自己的python文件名plugs:- network# 允许网络访问  请求网络访问权限

但别复制上面带注释的,会有utf-8报错,复制下面的:

name: test-app
version: '0.1'
summary: Test app
description: A simple test application.
base: core22
grade: stable
confinement: strictparts:test-app:plugin: pythonsource: .python-packages:  - requestsapps:test-app:command: request.pyplugs:- network

赋予文件读写权限:

之前的程序文件需要赋予一下读写权限

chmod +rwx request.py

创建snap调用目录:

还是在之前的文件夹目录,创建meta文件夹

mkdir -p meta

完后将 snapcraft.yaml复制进去

cp snapcraft.yaml meta/snap.yaml

构建snap包:

进入包含 snapcraft.yaml 的目录,根据 snapcraft.yaml 文件构建 Snap 包。

最后的 . 表示就在当前目录生成

snapcraft pack .
  1. 读取配置:Snapcraft 读取当前目录下的 snapcraft.yaml 文件。
  2. 创建构建环境:Snapcraft 会创建一个干净的构建沙箱,避免污染系统。
  3. 安装依赖:根据 snapcraft.yaml 中的 parts 定义,安装应用程序及其依赖项。
  4. 打包:将所有内容打包成一个 .snap 文件(如 hello-app_1.0_amd64.snap)。

然后就会生成一个打包好的snap文件:

解包测试:

现在复制之前构建好的snap包到别的目录进行解包测试:

cp test-app_0.1_all.snap /home/orangepi/snap_packet_test/test_1/

进入该目录

cd /home/orangepi/snap_packet_test/test_1/

安装软件包:

sudo snap install --dangerous test-app_0.1_all.snap

删除软件包:(别运行,这部只是提示有这个操作)

sudo snap remove test-app

输入命令测试运行:

输入 test-app 测试运行:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词