嗯,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