在嵌入式系统中使用opkg做版本升级

在嵌入式系统中使用opkg做版本升级一、opkg工具版本使用opkg0.3.5版本,原buildroot自带是opkg0.3.0版本,opkg0.3.0版本不支持.gz文件的解压,所以需要升级到opkg0.3.5版本。opkg工具的默认配置文件目录:/etc/opkg/opkg.conf包服务器地址:http://sylk-sh-buffer.oss-cn-beijing.aliyuncs.com/pac…

大家好,又见面了,我是你们的朋友全栈君。

 

一、opkg工具版本

使用opkg0.3.5版本,原buildroot自带是opkg0.3.0版本,opkg0.3.0版本不支持.gz文件的解压,所以需要升级到opkg0.3.5版本。

opkg工具的默认配置文件目录:

   /etc/opkg/opkg.conf

包服务器地址:http://sylk-sh-buffer.oss-cn-beijing.aliyuncs.com/packageBuffer/update/packages/base

 

二、.ipk包的打包

1、打包命令:ipkgmake 包名 版本号 版本信息文件 文件列表

 

版本信息文件(control文件)内容格式:

Package:

Source:

Priority:

Section:

Maintainer:

Architecture: aarch64

Version:

Depends:

Description:

 

文件内容经调查可自定义增加,在包装完成后会安装在/var/lib/opkg/info目录下,文件为:包名.control,文件列表信息文件为:包名.list(记录安装的文件及目录信息)。

 

2、packages文件生成

使用工具命令:ipkg-make-index.sh ipk包目录

作用:将所有包的control信息、对应ipk包的md5sum和sha256sum校验值、包文件大小输出到Packages文件。

输出文件:Packages、Packages.gz

需要编译服务器支持md5sum、sha256sum校验工具。

Packages文件说明:此文件信息是记录包的control信息+包的md5sum+包的sha256sum+包文件大小,测试中信息字段有2个关键字段ArchitectureFilename2者缺一不可、信息错误也会导致安装失败;Architecture是运行安装系统的CPU体系、opkg install时会读取Architecture与当前系统信息进行匹配、如CPU体系为aarch64Filenameopkg install时要下载服务器上的包文件名(例如:cms-0.0.3.ipk)。

 

3、opkg命令相关

Opkg配置文件默认目录: /etc/opkg/opkg.conf

使用其它目录:opkg –f 配置文件目录

opkg install 包名|包路径

安装:

在嵌入式系统中使用opkg做版本升级

测试发现安装下载的ipk包在安装完后就删除了、本地找不到.ipk包。

 

卸载:

在嵌入式系统中使用opkg做版本升级

重新安装:

在嵌入式系统中使用opkg做版本升级

重新安装时没有提示下载ipk包,原因待调查

 

此外,测试opkg install不能同时安装同一个ipk包。

在一个包安装过程中,如果再install这个包,会有以下安装错误提示:

在嵌入式系统中使用opkg做版本升级

在安装完成后,再install这个包,会有以下安装错误提示:

在嵌入式系统中使用opkg做版本升级

 

opkg list-installed:显示已安装完包的信息。

在嵌入式系统中使用opkg做版本升级

 

opkg update:执行下载服务器端的Packages.gz文件,文件下载后,将解压的文件放到 默认目录/var/lib/opkg/lists下面,并重全名为barrier_breaker_base,这个文件里包含了服务器端Package里面所有的软件包的信息,

 

opkg info:显示包安装的相关信息,此信息与包的control文件信息不同

 

 

在嵌入式系统中使用opkg做版本升级

如上图,cms是在本地直接安装ipk包的,在信息里没有检验及包文件名等信息,perconn是从服务器端同步安装过的、信息里包含有校验、此信息是从/var/lib/opkg/lists/barrier_breaker_base文件里获取,barrier_breaker_base文件是从服务器下载下来的Packages文件。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132237.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月11日 上午8:00
下一篇 2022年6月11日 上午8:00


相关推荐

  • fastdfs工作原理(技术原理)

    FastDFS架构:FastDFS服务端有三个角色:跟踪服务器(trackerserver)、存储服务器(storageserver)和客户端(client)。**trackerserver:**跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。**storageserver:**存储服务器(又称:存储节点或数据服务器),文件和文件属性(me

    2022年4月13日
    45
  • ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)

    ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)主要参考链接ES内容大全(Elastic中国社区官方博客)ES视频教程(Elastic中国社区官方博客)Elastic相关软件和插件(官网)ES中文社区(讨论和提问)我的ELK专栏Linux操作(鸟哥的私房菜)Linux常用命令一、什么是ELK(端口9200)ELK学习总结——我们为什么要用ELK一般我们需要进行日志分析场景:直接在日志文件中grep、awk就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢

    2025年7月23日
    5
  • Navicat 15 for MySQL 激活码(破解版激活)

    Navicat 15 for MySQL 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    180
  • mysql系列:全网最全索引类型汇总「建议收藏」

    mysql系列:全网最全索引类型汇总「建议收藏」前言除了常见的普通索引,唯一索引,组合索引,大家还能说一下mysql中有哪些其他类型的索引吗?今天和大家一起总结mysql中有哪些索引类型。一、mysql中有哪些索引类型?聚簇索引(ClusteredIndex)非聚簇索引主键索引(PRIMARYKEY)辅助索引(SecondaryIndexes)HASH索引BTREE索引T-TREE索引R-Tree索引自适应hash索引(AdaptiveHashIndex)唯一索引(UNIQUEIndexs)普通索引(No

    2022年5月22日
    37
  • 如何用两个栈实现一个队列

    如何用两个栈实现一个队列如何实现使用两个栈实现一个队列呢 这里主要还是自己的思想问题 在这里我们首先整理一下自己的思维 1 首先准备两个栈 栈 A 与栈 B2 栈 A 专门用来完成入队列操作 栈 B 专门用来出队列与取队首元素操作 3 每次入队列操作时 首先得判断 B 栈是否为空 不空则将 B 栈元素全都依次入 A 栈 最后继续入新元素 即将要入栈元素添加到栈 A 4 每次出队列与取队首元素操作时 将 A 栈中的元素依次入 B 栈 出队列即取出 B 栈中的元素 取队首元素即取 B 栈栈顶元素即可 importjava util Stack public

    2025年10月15日
    5
  • java取两个list的交集_怎么判断两个list有交集

    java取两个list的交集_怎么判断两个list有交集List<Integer>accountIdListOne=newArrayList<>();accountIdListOne.add(1);accountIdListOne.add(2);accountIdListOne.add(3);List<Integer>accountIdListTwo=newArrayList<>();acc…

    2022年10月7日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号