Hello,

I have a problem with opkg reporting built-in packages as upgradable
because of differences in /usr/lib/opkg/status file on /rom and
/overlay (USB pendrive block-extroot).

I just reflashed my router with a fresh build from trunk and now "opkg
list_upgradable" wrongly shows a bunch of packages that are built into
the image. Let's take libc as an example:

  r...@marvin:~# opkg list_upgradable | grep libc
  Multiple packages (libc and libc) providing same name marked HOLD or
PREFER. Using latest.
  Multiple packages (libc and libc) providing same name marked HOLD or
PREFER. Using latest.
  libc - 0.9.31-60 - 0.9.31-61

This is because there's 2 different versions of /usr/lib/opkg/status -
one in /rom and one /overlay - and the package is, for some reason, in
both of them:

  r...@marvin:~# grep -A1 libc$ /rom/usr/lib/opkg/status
/overlay/usr/lib/opkg/status
  /rom/usr/lib/opkg/status:Package: libc
  /rom/usr/lib/opkg/status-Version: 0.9.31-61
  --
  /overlay/usr/lib/opkg/status:Package: libc
  /overlay/usr/lib/opkg/status-Version: 0.9.31-60

Now, as far as I can tell, libc has never been installed in the
extroot /overlay:

  r...@marvin:~# opkg files libc
  Package libc (0.9.31-60) is installed on root and has the following files:
  /lib/libdl-0.9.31.so
  /lib/libnsl.so.0
  /lib/libutil-0.9.31.so
  /lib/libnsl-0.9.31.so
  /lib/libresolv.so.0
  /lib/ld-uClibc-0.9.31.so
  /lib/libm.so.0
  /lib/libm-0.9.31.so
  /lib/libutil.so.0
  /lib/libuClibc-0.9.31.so
  /lib/libresolv-0.9.31.so
  /lib/ld-uClibc.so.0
  /lib/libdl.so.0
  /lib/libcrypt-0.9.31.so
  /lib/libc.so.0
  /lib/libcrypt.so.0

  r...@marvin:~# ls /overlay/lib/
  firmware  modules   uci       upgrade   wifi

  r...@marvin:~# ls /rom/lib/
  ar71xx.sh             libdl.so.0            libuClibc-0.9.31.so
  config                libgcc_s.so.1         libuci.so
  firewall              libm-0.9.31.so        libuci.so.2010-09-28
  firmware              libm.so.0             libutil-0.9.31.so
  firstboot             libnsl-0.9.31.so      libutil.so.0
  functions             libnsl.so.0           modules
  ld-uClibc-0.9.31.so   libpthread-0.9.31.so  network
  ld-uClibc.so.0        libpthread.so.0       preinit
  libc.so.0             libresolv-0.9.31.so   upgrade
  libcrypt-0.9.31.so    libresolv.so.0        wifi
  libcrypt.so.0         librt-0.9.31.so
  libdl-0.9.31.so       librt.so.0


Setup details:

* I'm using my own build of trunk with block-extroot and relevant usb
and fs kmods built into the image.
* rootfs on the USB pendrive is mounted through /etc/config/fstab:

   config mount
        option device   /dev/sda1
        option fstype   ext3
        option options  rw,async
        option enabled  1
        option enabled_fsck 0
        option is_rootfs 1

* /etc/opkg.conf:

   src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
   src/gz local http://10.7.7.7:8000
   dest root /
   dest ram /tmp
   lists_dir ext /var/opkg-lists
   option overlay_root /overlay


Am I doing something wrong? How do I deal with this kind of situation,
how to avoid it, what is common practice for using external rootfs
when reflashing the /rom?
_______________________________________________
openwrt-users mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-users

Reply via email to