iPKG包制作(ipkg-build)
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 软件包名称
------------------------------------------------------------------------
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
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步