从AUR上 下载, yaourt -G opkg-svn
修改 ./configure --prefix=/usr --with-opkglibdir=/var/lib 和版本号变为650
# Maintainer: Jonathan Liu <net147@gmail.com> pkgname=opkg-svn pkgver=650 pkgrel=1 pkgdesc="Lightweight package management system" arch=('i686' 'x86_64') url="http://code.google.com/p/opkg/" license=('GPL2') depends=('curl' 'gpgme') options=('!libtool') md5sums=() _svntrunk=http://opkg.googlecode.com/svn/trunk/ _svnmod=opkg build() { cd "$srcdir" msg "Connecting to SVN server...." if [[ -d "$_svnmod/.svn" ]]; then (cd "$_svnmod" && svn up -r "$pkgver") else svn co "$_svntrunk" --config-dir ./ -r "$pkgver" "$_svnmod" fi msg "SVN checkout done or server timeout" msg "Starting build..." rm -rf "$srcdir/$_svnmod-build" cp -r "$srcdir/$_svnmod" "$srcdir/$_svnmod-build" cd "$srcdir/$_svnmod-build" # # BUILD HERE # sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADER/' configure.ac ./autogen.sh #./configure --prefix=/usr --with-opkglockfile=/var/lib/opkg/lock ./configure --prefix=/usr --with-opkglibdir=/var/lib make } package() { cd "$srcdir/$_svnmod-build" make DESTDIR="$pkgdir" install #install -d -m 775 "$pkgdir/usr/lib/opkg" install -d -m 775 "$pkgdir/var/lib/opkg" } # vim:set ts=2 sw=2 et:
=====================操作opkg-cl时重点是需要绝对路径===========================
#!/bin/bash #sudo pseudo -P /usr groupadd --root $(pwd)/armv5te_rootfs -r abc ROOTFS_DIR=$(pwd)/armv5te_rootfs LOG_FILE="/tmp/do_opkg.log" export INSTALL_CONF_IPK="${ROOTFS_DIR}/etc/opkg.conf" export INSTALL_ROOTFS_IPK="${ROOTFS_DIR}" BUILD_TEMP="$(pwd)/build_tmp" CACHE_DIR="${BUILD_TEMP}/cache_ipks" TEMP_DIR="${BUILD_TEMP}/temp" export OFFLINE_ROOT=$ROOTFS_DIR export IPKG_OFFLINE_ROOT=$ROOTFS_DIR export OPKG_OFFLINE_ROOT=${IPKG_OFFLINE_ROOT} export D=${ROOTFS_DIR} REMOVE_ARGS="--force-depends" if [ ! -d ${TEMP_DIR} ] ; then mkdir -pv ${TEMP_DIR} fi if [ ! -d $CACHE_DIR ] ; then mkdir -pv $CACHE_DIR fi if [ ! -d $ROOTFS_DIR ] ; then mkdir -pv $ROOTFS_DIR fi if [ ! -d ${ROOTFS_DIR}/var/lib/opkg ] ; then mkdir -p ${ROOTFS_DIR}/var/lib/opkg fi if [ ! -e ${ROOTFS_DIR}/var/lib/opkg/status ] ; then touch ${ROOTFS_DIR}/var/lib/opkg/status fi if [ ! -d ${ROOTFS_DIR}/etc/opkg ] ; then mkdir -pv ${ROOTFS_DIR}/etc/opkg fi if [ ! -e ${ROOTFS_DIR}/etc/opkg.conf ] ; then echo "arch all 1 arch any 6 arch noarch 11 arch arm 16 arch armv4 21 arch armv5 26 arch armv5-vfp 31 arch armv5te 36 arch armv5e-vfp 41 arch armv6 46 arch armv6-vfp 51 arch armv7a 56 arch armv7a-vfp 61 arch armv7a-vfp-neon 66 arch am335x_evm 71 arch ru2416 77 arch qemuarm 86 src/gz python http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/python src/gz base http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/base src/gz debug http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/debug src/gz locales http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/locales src/gz qemuarm http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/machine/qemuarm src/gz oe-all http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/all " > ${ROOTFS_DIR}/etc/opkg.conf #cp opkg.conf ${ROOTFS_DIR}/etc/opkg.conf fi opkg-cl -t ${TEMP_DIR} --cache ${CACHE_DIR} -f $INSTALL_CONF_IPK -o $INSTALL_ROOTFS_IPK --force_postinstall --prefer-arch-to-version $@ 2>&1 | tee -a $LOG_FILE #opkg-cl -f $INSTALL_CONF_IPK -o $INSTALL_ROOTFS_IPK --force_postinstall --prefer-arch-to-version --force-depends remove update-rc.d base-passwd || true #opkg-cl -f $INSTALL_CONF_IPK -o $INSTALL_ROOTFS_IPK --force_postinstall --prefer-arch-to-version status | opkg-query-helper.py -a #opkg-cl -f $INSTALL_CONF_IPK -o $INSTALL_ROOTFS_IPK --force_postinstall --prefer-arch-to-version list_installed | awk '{ print $1 }'
# opkg-query-helper.py 位于 openembedded-core/scripts目录下
不指定 --conf (或 -f) 则默认查找 ${D}/etc/opkg/目录下的配置
export D=${ROOTFS_DIR} 非常重要,因为pkg_postinstall文件会判断 $D 来确定是否为在交叉方式安装包
OFFLINE_ROOT 变量在opkg源代码里会操作使用, OPKG_OFFLINE_ROOT变量则由 /usr/bin/update-alternatives 判断是否为外部rootfs操作
--offline-root <dir> offline installation of packages. 使用--offline-root离线安装模式
cat angstrom_rootfs/etc/opkg/angstrom-base.conf
src/gz angstrom-base http://us.feeds.angstrom-distribution.org/feeds/unstable/ipk/glibc/armv7a/base
mkdir rootfs/etc/opkg -pv
mkdir rootfs/var/lib/opkg -pv
注意要将arch.conf拷到rootfs/etc/opkg 目录下
================================================
rootfs/etc/opkg.conf内容 适用于单个文件,架构 + 下载境像地址
arch all 1 arch any 6 arch noarch 11 arch arm 16 arch armv4 21 arch armv5 26 arch armv5-vfp 31 arch armv5te 36 arch armv5e-vfp 41 arch armv6 46 arch armv6-vfp 51 arch armv7a 56 arch armv7a-vfp 61 arch armv7a-vfp-neon 66 arch am335x_evm 71 arch ru2416 77 arch qemuarm 86 src/gz python http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/python src/gz base http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/base src/gz debug http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/debug src/gz locales http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/locales src/gz qemuarm http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv5te/machine/qemuarm src/gz oe-all http://feeds.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/all
rootfs/etc/opkg/arch.conf 内容 代表允许安装的架构
arch all 1 arch any 6 arch noarch 11 arch arm 16 arch armv4 21 arch armv5 26 arch armv5-vfp 31 arch armv5e 36 arch armv5e-vfp 41 arch armv6 46 arch armv6-vfp 51 arch armv7a 56 arch armv7a-vfp 61 arch armv7a-vfp-neon 66 arch am335x_evm 71
cat build_index.sh 用于将目录下的 ipk目录制做Packages等文件
#!/bin/bash pkgdir=$(pwd)/am335x touch $pkgdir/Packages flock $pkgdir/Packages.flock -c "opkg-make-index -r $pkgdir/Packages -p $pkgdir/Packages -m $pkgdir/"