---- util-vserver-0.30.215/scripts/pkgmgmt 2008-11-17 22:47:02.486514626 +0200
-+++ util-vserver-0.30.216-r2844/scripts/pkgmgmt 2009-11-05 14:27:48.753407445 +0200
-@@ -185,6 +185,43 @@
+--- util-vserver-0.30.216-pre3038/scripts/pkgmgmt~ 2013-05-27 17:13:26.567683113 +0300
++++ util-vserver-0.30.216-pre3038/scripts/pkgmgmt 2013-05-27 17:13:05.566763191 +0300
+@@ -185,6 +185,47 @@
test -n "$is_ok"
}
+ local host_tool="$3"
+ local guest_tool="$4"
+ local res=0
++ local hostbdb
++ local guestbdb
+
++ hostbdb=$(ldd /bin/rpm | awk '/libdb-[0-9\.]+.so/ { sub(/libdb-/, "", $1); sub(/.so/, "", $1); print $1 }')
++ guestbdb=$(ldd "$vdir"/bin/rpm | awk '/libdb-[0-9\.]+.so/ { sub(/libdb-/, "", $1); sub(/.so/, "", $1); print $1 }')
+ local i host_path guest_path
+ for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do
-+ test ! -x "$i"/$host_tool || { host_path="$i"/$host_tool; break; }
++ test ! -x "$i"/db${hostbdb}_$host_tool || { host_path="$i"/"db${hostbdb}_${host_tool}"; break; }
+ done
+ for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do
-+ test ! -x "$vdir$i"/$guest_tool || { guest_path="$i"/$guest_tool; break; }
++ test ! -x "$vdir$i"/db${guestbdb}_$guest_tool || { guest_path="$i"/"db${guestbdb}_${guest_tool}"; break; }
+ done
+
+ test -n "$host_path" || {
+ warning "
-+* The host does not seem to have the '$host_tool' program which is required
++* The host does not seem to have the 'db${hostbdb}_${host_tool}' program which is required
+ for $type package management. It is suggested to install it before
+ continuing."
+ res=1
+ }
+ test -n "$guest_path" || {
+ warning "
-+* The vserver guest does not seem to have the '$guest_tool' program which is required
++* The vserver guest does not seem to have the '"db${guestbdb}_${guest_tool}"' program which is required
+ for $type package management. It is suggested to install it before
+ continuing."
+ res=1
+ }
+
-+ eval $host_tool=$host_path
-+ eval $guest_tool=$guest_path
++ eval db_$host_tool=$host_path
++ eval db_$guest_tool=$guest_path
+ return $res
+}
+
# Usage: verifyInternalPackages <vserver> <style>
function verifyInternalPackages()
{
-@@ -392,7 +429,12 @@
+@@ -405,7 +446,12 @@
verifyInternalPackages "$vserver" RH || test -n "$IS_FORCE" ||
panic "
Can not continue; use '--force' to override this check"
+
-+ verifyDBTools "$vdir" 'internal' db@RPMDB@_dump db@RPMDB@_load || test -n "$IS_FORCE" ||
++ verifyDBTools "$vdir" 'internal' dump load || test -n "$IS_FORCE" ||
+ panic "
+Can not continue; use '--force' to override this check"
pushd "$vdir" >/dev/null
test ! -L var/lib/rpm || {
-@@ -416,6 +458,10 @@
+@@ -429,6 +475,10 @@
findDir RPMETCDIR "$cfgdir"/rpmetc "$cfgdir"/base/rpm/etc /etc/rpm /
findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state
else
-+ verifyDBTools "$vdir" 'external' db@RPMDB@_load db@RPMDB@_dump || test -n "$IS_FORCE" ||
++ verifyDBTools "$vdir" 'external' load dump || test -n "$IS_FORCE" ||
+ panic "
+Can not continue; use '--force' to override this check"
+
mkdir -m755 -p "$cfgdir"
local need_base=
-@@ -460,8 +506,41 @@
+@@ -473,8 +523,41 @@
pushd "$vdir" >/dev/null
## remove %_dbpath settings
_substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D'
+
+ # dump and reload rpmdb to overcome db version mismatch problems
+ if [ "$db_load" -a "$db_dump" ]; then
-+ # dump with host db@RPMDB@_dump
++ # dump with host db_dump
+ $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
+
-+ # load with guest db@RPMDB@_load.
++ # load with guest db_load.
+ $_RM -f var/lib/rpm/__db.*
+ mv var/lib/rpm/{Packages,.Packages.ORIG}
+ chroot . $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump
+ if [ "$db_load" -a "$db_dump" ]; then
+ # dump and reload rpmdb to overcome db version mismatch problems
+
-+ # dump with guest db@RPMDB@_dump
++ # dump with guest db_dump
+ $_RM -f var/lib/rpm/__db.*
+ chroot . $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump
+
-+ # load with host db@RPMDB@_load
++ # load with host db_load
+ mv var/lib/rpm/{Packages,.Packages.ORIG}
+ $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump
+ rm -f var/lib/rpm/.Packages.*