最近在找Linux下如何生成ipk包,找到一篇相关文章,分享一下。。。
大家都知道openwrt的软件包是ipk格式的,使用opkg命令来安装软件包那么请问ipk是如何生成的?
ipk文件本质是什么?
不过不知道也无妨,因为我们一般开发的无需知道这个,只要知道怎么使用即可!但是。。。我蛋疼,必须追根究底的看下!

linux下生成ipk

用百度搜索基本都是没用的,没有人点到问题上!于是谷歌。。找到了一篇文章:http://ftp.nluug.nl/ibiblio/distributions/pdaxrom/download/contrib/docs/making_ipkg_howto.html
标题为:How to create an ipk,
太有用了,虽然不是说openwrt上如何实现的,但是会有很多提示,也讲解了ipk如何生成的。

8.最后:
ipk8.1创建包

在这里插入图片描述

在这里插入图片描述
and the ipk will be created for you.ok!
从上面可以看出生成ipk需要的文件和文件夹,以及需要的命令mkipkg,有兴趣的同学可以在linux试试!

openwrt上ipkg的实现

那么在openwrt的sdk里面怎么实现的呢,顺着上面的思路,find搜索下ipkg相关的文件

jack@openwrtdl:~/10G/cc$ find -name "*ipkg*"
./feeds/luci/modules/luci-base/luasrc/model/ipkg.lua
./feeds/luci/modules/luci-base/luasrc/model/ipkg.luadoc
./feeds/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua
./feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm./include/package-ipkg.mk
./scripts/ipkg-build
./scripts/ipkg-make-index.sh
./scripts/make-ipkg-dir.sh
./scripts/.ipkg-build.swp

从上面一部分的搜索结果看到一个特殊的,./scripts/ipkg-build这个文件,查看下这个文件的内容,发现正是这个bash脚本文件生成相关的ipk
文件内容太长,我就不贴出来了,仅仅贴出最后几行重要的命令,里面echo中带有jack:的都是自己加入的打印,更好的了解点ipk生成过程
在这里插入图片描述
从上面的脚本可以看出,生成ipk之前先生成了几个重要的文件debian-binary data.tar.gz control.tar.gz,分别保存版本信息、数据内容、ipk的信息,安装方法等
从最后的生成ipk的过程看,其实ipk格式就是tar.gz格式,只是改了个名字而已!

Logo

更多推荐