zoukankan      html  css  js  c++  java
  • iPKG包制作(ipkgbuild)

    Maybe this information is of use to someone, so I'll write it down. Maybe it has been mentioned elsewhere already, but you'll have to forgive me then. Better an abundance of information than a shortage, eh?

    - Download the latest version of the iPKG tools from ftp://ftp.handhelds.org/packages/ipkg-utils/ (version 1.7 seems to be the latest);
    - untar the archive, cd into the just untarred directory, and type 'make install' (make sure you're root);
    - open /usr/local/bin/ipkg-build, find the line where it says "outer=ar" (line 159 in version 1.7), and change "ar" into "tar";

    That sets up your build environment. From here on it's pretty straightforward. To create a package copy everything you want in it into a directory, in the directorystructure it needs to be on the target device. Also, you need to create a control file with some meta data about the package, and it has to live in the CONTROL directory. e.g. Say I have a binary, foo, and I need it to be available as /bin/foo on the target device. The  procedure would be something like this:

    Code:

    mkdir -p /tmp/foo/bin
    cp foo /tmp/foo/bin
    mkdir -p /tmp/foo/CONTROL
    cat >/tmp/foo/CONTROL/control <<EOF
    Package: foo
    Version: 0.1
    Architecture: mipsel
    Maintainer: foo bar <foo@bar.com>
    Section: base
    Priority: optional
    Description: This package provides foo, which does nothing.
    Source: http://foo.bar/foo
    EOF
    ipkg-build -o root -g root /tmp/foo /tmp
    

    The result will be a package /tmp/foo-0.1_mipsel.ipk, which is ready to install on a standard openwrt distribution.

    If modifying your ipkg environment is not an option, there's the possibility to modify your openwrt installation.
    A standard ipkg-build produces packages which are basically two tarballs put together with "ar". In a standard openwrt, busybox is compiled without support for "ar", so to use standard iPKG packages in openwrt this has to be compiled back in. Modify buildroot/sources/busybox.config to include "CONFIG_AR=y" (line 39). Then modify buildroot/build_mipsel/root/bin/ipkg to use "ar" for extracting ipkg files (line 729, change "tar" into "ar -p", just like 2 lines below it). Possibly also a symlink has to be made to busybox for ar, so while you're in buildroot/build_mipsel/root/bin/ anyway, type "ln -s busybox ar". Rebuild your openwrt image, and it *should* support standard iPKG packages now...well, except for the ones which were already created for openwrt :-)

    Chicken, egg, time to make a decision on whether or not to support standard iPKGs?

    That's all for now, more to follow as I progress. Happy packaging.

    ------------------------------------------------------------------------
    openwrt包操作
    ------------------------------------------------------------------------
    如果是下载到的*.ipk,则:
    White Russian版本,请使用ipkg命令安装。
    ipkg install  软件包名称
    对于Kamikaze以及backfire版本,请使用opkg命令安装
    opkg install  软件包名称

    ------------------------------------------------------------------------ipkg-build
    ------------------------------------------------------------------------
    mkdir -p /tmp/foo/bin
    cp foo /tmp/foo/bin
    mkdir -p /tmp/foo/CONTROL
    cat >/tmp/foo/CONTROL/control <<EOF
    Package: foo
    Version: 0.1
    Architecture: mips   <uname -a 可以查看到linux的类型:mips/others>
    Maintainer: foo bar <foo@bar.com>
    Section: base
    Priority: optional
    Description: This package provides foo, which does nothing.
    Source: http://foo.bar/foo
    EOF
    ipkg-build -o root -g root /tmp/foo /tmp
    ------------------------------------------------------------------------测试实例
    ------------------------------------------------------------------------
    ../testme/
    ../testme/CONTROL/  control文件。
    ../testme/..other   包文件。

    kevin@debian:~/test$ ./ipkg-build testme
    kevin@debian:~/test$ ls

    hellokevin-1.0.0.ipk  ipkg-build  ipkgmake  op  testme  testme_1.0.0_mips.ipk


    原博文地址:http://blog.chinaunix.net/uid-22605471-id-1772170.html


  • 相关阅读:
    git 备查
    PyQt5 信号与槽机制
    Python 循环报错 'int' object is not iterable
    docker instructions命令及dockerfile实践
    shell脚本中set指令
    你知道什么是Python算法和数据结构、抽象数据和面向对象、数组和列表、链表吗?
    Python爬虫抓取B站人类高质量男性求偶视频的弹幕,康康都在讨论什么!❤️
    Python从入门到精通要掌握哪些基础知识?
    想搞个恶作剧吗? 代码丢给他,生死有命富贵在天,看我学会python用代码整蛊朋友
    妹妹画的小恐龙和我用Python画的小恐龙,你更加喜欢谁的!❤️
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218514.html
Copyright © 2011-2022 走看看