openwrt下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. Finally: the ipk

8.1 Creating the package

Don’t try to make the ipk by hand. Use the mkipkg provided here. The script is also provided in both the cross and native sdk but it is not compatible some recent versions of tar.

mkipkg will uncover the possible errors in your control file or elsewhere. If mkipkg fails double-check your control file.

When you have a tree structure like:

just do:

and the ipk will be created for you.

ok!从上面可以看出生成ipk需要的文件和文件夹,以及需要的命令mkipkg,有兴趣的同学可以在linux试试!

openwrt上ipkg的实现

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

从上面一部分的搜索结果看到一个特殊的,./scripts/ipkg-build这个文件,查看下这个文件的内容,发现正是这个bash脚本文件生成相关的ipk

文件内容太长,我就不贴出来了,仅仅贴出最后几行重要的命令,里面echo中带有jack:的都是自己加入的打印,更好的了解点ipk生成过程

从上面的脚本可以看出,生成ipk之前先生成了几个重要的文件debian-binary data.tar.gz control.tar.gz,分别保存版本信息、数据内容、ipk的信息,安装方法等

从最后的生成ipk的过程看,其实ipk格式就是tar.gz格式,只是改了个名字而已!

 

2 thoughts on “openwrt下ipk生成过程及原理

发表评论

电子邮件地址不会被公开。 必填项已用*标注