关于openwrt的IPK

作者: PokeBox
上传时间为: 2014-11-19 11:36 PM
2014-11-19
阅读:

嗯,openwrt的安装程序是用IPK来安装的。那么我就来解释一下IPK这个神奇的东西好了。

其实IPK这种东西我很早就接触了,所以对它是再熟悉不过了(IPK文件是基于WebOS手机系统的应用文件)。

首先,IPK是个tar压缩包,安装其实就是通过解压到系统根目录来完成安装的。所以,ipk的安装是覆盖安装。也就是说,如果你之前安装过,然后自己有改动程序的话,再次安装会覆盖掉原来的文件,那你的改动就会被覆盖掉了。所以,如果是重要的改动记得备份。

其次,来是说ipk里的结构。
IPK包里首先是有3个文件,分别是:

  • debian-binary      ##版本信息,一般写的都是2.0……这个无关紧要……无视掉……
  • data.tar.gz           ##安装包的数据包,主要的安装文件都在这里,通过解压这个文件到根目录来达到安装的目的
  • control.tar.gz       ##安装配置文件,里面放的是安装包的配置脚本。

这里主要来说明一下data和control这2个包。
1. data里的文件都是按照系统根目录来建立文件目录放至安装的程序的。这样在解压的时候就会自动的覆盖对应的文件夹和文件。
比如如果要把一个叫做test.sh的文件安装到/usr/local/bin里,那么data里的文件和文件夹夹结构就应该和安装目标是一样的:/usr/local/bin/test.sh。这样执行解压的时候就可以直接自动覆盖安装到对应的目录去了。

2. 然后是control包,这个包里一般有preinst、postinst、prerm和postrm这几个文件。
这些文件都是Linux的sh脚本,它们对应的功能是这样的:

  • preinst(安装前执行)
  • postinst(安装完成执行)
  • prerm(卸载前执行)
  • postrm(卸载完成执行)


就比如说,

如果你需要在安装test.ipk安装包前删掉 /tmp 里的所有文件,那么你就在preinst里写sh命令,

rm -r /tmp/*
如果你需要在安装完成后输出个日志文件,你就在postinst文件里写sh命令,

echo '安装完成' > /tmp/test.ipk.log
其他的也一样的道理。如果有兴趣自己做ipk的同学可以参考一下~

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示