查看: 6050|回复: 1

关于openwrt的IPK

[复制链接]
  • TA的每日心情
    开心
    2019-6-25 09:54
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2014-11-19 22:35:50 | 显示全部楼层 |阅读模式
    分享到:
    嗯,openwrt的安装程序是用IPK来安装的。那么我就来解释一下IPK这个神奇的东西好了。
    其实IPK这种东西我很早就接触了……所以对它是再熟悉不过了。

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

    其次,来是说ipk里的结构。
    IPK包里首先是有3个文件,分别是:
    debian-binary        ##版本信息,一般写的都是2.0……这个无关紧要……无视掉……
    data.tar.gz            ##安装包的数据包,主要的安装文件都在这里,通过解压这个文件到根目录来达到安装的目的
    control.tar.gz        ##安装配置文件,里面放的是安装包的配置脚本。

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

    然后是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的同学可以参考一下~
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-11-20 08:25:23 | 显示全部楼层
    不错,学习了。谢谢楼主分享
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 18:32 , Processed in 0.127520 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.