opkg 更新软件

2023-11-17

opkg 不同的版本存在不同的配置文件,一般常用的是 /etc/opkg.conf 、/etc/opkg/customfeeds.conf 和 /etc/opkg/distfeeds.conf三个。这三个配置文件将会影响opkg运行时软件资源的取向,opkg软件源定义在/etc/opkg/distfeeds.conf(更新/etc/opkg.conf并没有作用)文件中,包含软件源索引的目录路径。下面就软件包升级进行简单的介绍。

本地仓库 — 配置opkg 从本地获取软件包

在通过修改 /etc/opkg/distfeeds.conf 达到在opkg获取文件源时,到相应的目录下载。修改如下:

src/gz %n_base file:/tmp/packages/base
src/gz %n_kernel file:/tmp/packages/kernel

以上为例,在执行opkg update时,将会以本地 /tmp/packages/base 目录以及 /tmp/packages/kernel 目录作为软件源,下载 Packages.gz 文件保存到 机器的 /var/opkg-lists 目录下,分别以%n_base 和 %n_kernel 命名。在执行 opkg update 之后,再通过 opkg upgrade <pkg> 升级某一个软件包,假设 该pkg位于 /tmp/packages/base 源,将会到 /tmp/packages/base 目录下载 pkg.ipk 并安装。如果安装过程报错,可根据具体错误,参考 OpenWrt 官网中的 OPKG软件包管理 中 强制性选项 进行操作。
以上是opkg本地仓库软件资源的升级过程,其他服务器的也就都类似,只是资源路径相应替换。

如何生成 .ipk 包

opkg 工具 (一个 ipkg 变种) 是一个用来从本地软件仓库或互联网软件仓库上下载并安装 OpenWrt 软件包的轻量型软件包管理器。所以,这个东西在OpenWrt上肯定是有的,那么OpenWrt是如何操作的。
在使用 OpenWrt 时会发现,最后是通过 scripts/ipkg-build 这个脚本实现的,调用如下:

ipkg-build -c -o 0 -g 0  源文件路径  ipk目标文件路径

脚本有些长,就不一一罗列,主要就是检查该package的主要文件是否存在,然后再打包压缩为 .ipk 文件。该文件实质是 .tar.gz 文件,解压之后,将会有三个文件,分别是 control.tar.gz 、data.tar.gz 和 debian-binary。debian-binary 文本文件包含二进制软件包的版本号,该版本号应该是 2.0 。control.tar.gz 文件包含控制文件、postinst 文件和 prerm 文件,postinst 文件包含了有关在安装了该软件包后如何做的指令,而 prerm 文件则包含了除去指令。control.tar.gz 可能还包括另外两个文件:一个文件名为 conffiles,包含有关软件包配置文件的信息,另一个名为 md5sums,包含软件包的 MD5 校验和。
data.tar.gz 包含软件包的实际“有效载荷”。即,它包含一个带有程序全部相关文件的文件系统,这些文件在安装时会被放到系统的文件系统中适当的位置。
通过以上解析,简单的之后,手动造一个 .ipk 文件的主要操作。

如何生成 Packages.gz

在使用 opkg update 更新软件源时,主要是下载 Package.gz 文件,通过该文件确认软件包有没有更新。
那么,该文件是怎样生成的呢。在OpenWrt的源码中,存在 scripts/ipkg-make-index.sh 脚本,通过该脚本生成相应的 Packages.gz 。该脚本使用如下:

$(curdir)/index: FORCE
	@echo Generating package index...
	@for d in $(PACKAGE_SUBDIRS); do ( \
		mkdir -p $$d; \
		cd $$d || continue; \
		$(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages.manifest; \
		grep -vE '^(Maintainer|LicenseFiles|Source|Require)' Packages.manifest > Packages && \
			gzip -9nc Packages > Packages.gz; \
	); done
ifdef CONFIG_SIGNED_PACKAGES
	@echo Signing package index...
	@for d in $(PACKAGE_SUBDIRS); do ( \
		[ -d $$d ] && \
			cd $$d || continue; \
		$(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \
	); done
endif

显示,进入软件包目录,然后执行 ipkg-make-index.sh 脚本,相应的生成packages 信息,压缩生成 Packages.gz。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opkg 更新软件 的相关文章

随机推荐

  • 误区 一下代码是曾经误认为 radio的onclick 事件在 发生 以下是实例代码

    实际上onclick事件还是在radio上发生 只不过是通过js把 a 标签的href属性的 值 给动态的发生该表了而已 误以为是在 a 标签上发生了onclick事件 a a
  • playwright自动化项目搭建

    具备功能 关键技术 pylaywright测试库 pytest单元测试框架 pytest playwright插件 非关键技术 pytest html插件 pytest rerunfailures插件 seldom 测试框架 实现功能 元素
  • 静态链接原理以及过程

    通常程序的编译中 或多或少会调用其它库中的函数接口 本篇blog就是讲静态库的调用流程 通常我们知道编译一个可执行程序会有这四个过程 预处理 编译 汇编以及链接 前面三步就是产生目标文件 o的过程 链接就是把各个 o文件粘在一起 构成一个可
  • 杂项设备(misc device)和字符设备(char device)区别

    杂项设备 misc device 杂项设备也是在嵌入式系统中用得比较多的一种设备驱动 在 Linux 内核的include linux目录下有Miscdevice h文件 要把自己定义的misc device从设备定义在这里 其实是因为这些
  • Go语言基础面试题

    一 选择题 1 关于异常设计 下面说法正确的是 A 在程序开发阶段 坚持速错 让程序异常崩溃 开发 测试 准生产 生产 B 在程序部署后 应恢复异常避免程序终止 C 一切皆错误 不用进行异常设计 D 对于不应该出现的分支 使用异常处理 参考
  • 2021-08-03训练记录

    2021 08 03训练记录 Magic Line String Invasion A B C 小biu放牛 小A的游戏 A B C Magic Line 样例输入 1 4 0 1 1 0 1 0 0 1 样例输出 1 999000000
  • 原始GPS与百度、谷歌、高德地图的相互转换(c语言转换)

    原始GPS与百度 谷歌 高德地图的相互转换 c语言转换 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种坐标系 2 WGS84 GCJ02 BD09之间的相互转换 C语言实现 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种
  • centos 7中NGINX负载均衡(最详细)

    环境 centos7 192 168 186 140 负载均衡 centos7 192 168 186 141 web端 centos7 192 168 186 142 web端 1 关闭防火墙与setenforce web端也要执行 ro
  • json 模块:处理 JSON 数据

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 易于人阅读和编写 同时也易于机器解析和生成 JSON 基础 JSON 的基础结构有两种 键值对 name value pairs 和数组 array
  • VS编译程序缺失msvcp140d.dll、vcruntime140d.dll和ucrtbased.dll解决方法

    今天编译的一个程序到客户现场电脑上运行闪退 查看发现缺少msvcp140d dll vcruntime140d dll以及ucrtbased dll 总结一下解决办法 供大家参考 方式一 找到对应的 msvcp140d dll vcrunt
  • Java的SSH连接远程服务器

    在我们的示例中 我们将首先打开SSH连接 然后执行一个命令 读取输出并将其写入控制台 最后关闭SSH连接 我们将使示例代码尽可能简单 2 JSch JSch 是SSH2的Java实现 它使我们可以连接到SSH服务器并使用端口转发 X11转发
  • 记几个数据查询语句

    查看某用户所在的表空间SELECT USERNAME DEFAULT TABLESPACE FROM DBA USERS WHERE USERNAME GISAP 查看用户表分区select from user tab partitions
  • java中 instanceof 关键字 作用 和 实际用途

    instanceof 闲聊一下 所谓看书只看前三章 基础java决定上限 所以说基础很重要 Java也是基础扎实决定你的上限 1 instanceof 是Java中的一个关键字 Java中的关键子都是小写 2 instanceof关键字的作
  • 【不忘初心】Windows11 22000.652 X64 四合一[纯净精简版][2.68G](2022.5.3)

    此版可正常更新补丁关闭按流量计费 WIN11全新的UI界面出炉 可以说这一次Windows 11全新升级 无论是从Logo上还是UI界面设计 都有很大的变化 母版来自UUP WIN11 22000 652 为了保证稳定初心的系统全部都是离线
  • 【模拟集成电路】电荷泵(CP)设计

    电荷泵 CP 设计 前言 一 电荷泵 CP 原理 1 电流失配问题 2 开关管的时钟馈通问题 3 电荷注入问题 二 电荷泵 CP 电路 三 电荷泵性能测试 测试原理图 充电测试 放电测试 参考文献 各部分链接链接 前言 本文主要内容是对电荷
  • NLP 算法工程师面试问答-DeepLearningAlgorithm

    关于生成对抗网络GAN 那些你不知道的事 一 动机 之前我们提到玻尔兹曼机 Boltzmann machine 波尔茨曼机作为一种基于能量函数的概率模型 因为能量函数比较复杂 所以存在较多的限制 虽然受限玻尔兹曼机 Restricted B
  • C#通过读取appconfig文件连接数据库

    以Oracle为例 C 连接数据库的时候 需要一些连接字符串 一开始写在程序中 这样会有两个问题 通用性不太好 如果程序具有普遍性 但是连接字符串写死了 每次替换很麻烦 一个工程有很多个项目 每个项目都需要连接字符串 每次更改或者设置也很麻
  • 手机一键制作u盘启动盘_老毛桃U盘启动盘制作教程

    制作前准备 1 准备一个U盘 建议U盘内存8G以上 因为制作时会格式化 请注意备份U盘原资料 2 下载老毛桃U盘装机工具套装 官网 www laomaotao net 老毛桃U盘装机工具下载链接 www laomaotao net 制作过程
  • django 报错:urllib3.exceptions.ConnectTimeoutError 问题解决方法

    问题描述 django项目运行时报错 urllib3 exceptions ConnectTimeoutError
  • opkg 更新软件

    opkg 不同的版本存在不同的配置文件 一般常用的是 etc opkg conf etc opkg customfeeds conf 和 etc opkg distfeeds conf三个 这三个配置文件将会影响opkg运行时软件资源的取向