]>
Commit | Line | Data |
---|---|---|
5e7538d0 ER |
1 | --- util-vserver-0.30.215/scripts/pkgmgmt 2008-11-17 22:47:02.486514626 +0200 |
2 | +++ util-vserver-0.30.216-r2844/scripts/pkgmgmt 2009-11-05 14:27:48.753407445 +0200 | |
6a6b3452 ER |
3 | @@ -185,6 +185,43 @@ |
4 | test -n "$is_ok" | |
5 | } | |
6 | ||
7 | +## Usage: verifyDBTools <vdir> <type> <host_tool> <guest_tool> | |
8 | +function verifyDBTools | |
9 | +{ | |
10 | + local vdir="$1" | |
11 | + local type="$2" | |
12 | + local host_tool="$3" | |
13 | + local guest_tool="$4" | |
14 | + local res=0 | |
15 | + | |
16 | + local i host_path guest_path | |
17 | + for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do | |
18 | + test ! -x "$i"/$host_tool || { host_path="$i"/$host_tool; break; } | |
19 | + done | |
20 | + for i in /bin /usr/bin /usr/lib/rpm /usr/local/bin; do | |
21 | + test ! -x "$vdir$i"/$guest_tool || { guest_path="$i"/$guest_tool; break; } | |
22 | + done | |
23 | + | |
24 | + test -n "$host_path" || { | |
25 | + warning " | |
26 | +* The host does not seem to have the '$host_tool' program which is required | |
27 | + for $type package management. It is suggested to install it before | |
28 | + continuing." | |
29 | + res=1 | |
30 | + } | |
31 | + test -n "$guest_path" || { | |
32 | + warning " | |
69c81f2b | 33 | +* The vserver guest does not seem to have the '$guest_tool' program which is required |
6a6b3452 ER |
34 | + for $type package management. It is suggested to install it before |
35 | + continuing." | |
36 | + res=1 | |
37 | + } | |
38 | + | |
39 | + eval $host_tool=$host_path | |
40 | + eval $guest_tool=$guest_path | |
41 | + return $res | |
42 | +} | |
43 | + | |
44 | # Usage: verifyInternalPackages <vserver> <style> | |
45 | function verifyInternalPackages() | |
46 | { | |
47 | @@ -392,7 +429,12 @@ | |
48 | verifyInternalPackages "$vserver" RH || test -n "$IS_FORCE" || | |
49 | panic " | |
50 | Can not continue; use '--force' to override this check" | |
51 | + | |
35d779f2 | 52 | + verifyDBTools "$vdir" 'internal' db@RPMDB@_dump db@RPMDB@_load || test -n "$IS_FORCE" || |
6a6b3452 ER |
53 | + panic " |
54 | +Can not continue; use '--force' to override this check" | |
55 | ||
56 | + | |
57 | pushd "$vdir" >/dev/null | |
58 | ||
59 | test ! -L var/lib/rpm || { | |
60 | @@ -416,6 +458,10 @@ | |
61 | findDir RPMETCDIR "$cfgdir"/rpmetc "$cfgdir"/base/rpm/etc /etc/rpm / | |
62 | findDir RPMSTATEDIR "$cfgdir"/rpmstate "$cfgdir"/base/rpm/state | |
63 | else | |
35d779f2 | 64 | + verifyDBTools "$vdir" 'external' db@RPMDB@_load db@RPMDB@_dump || test -n "$IS_FORCE" || |
6a6b3452 ER |
65 | + panic " |
66 | +Can not continue; use '--force' to override this check" | |
67 | + | |
68 | mkdir -m755 -p "$cfgdir" | |
69 | local need_base= | |
70 | ||
5e7538d0 | 71 | @@ -460,8 +506,41 @@ |
6a6b3452 ER |
72 | pushd "$vdir" >/dev/null |
73 | ## remove %_dbpath settings | |
74 | _substFile /etc/rpm/macros '/^%_dbpath[ \t].*/D' | |
75 | + | |
5e7538d0 ER |
76 | + ## remove vserver-packages ignore |
77 | + _substFile /etc/poldek/poldek.conf '/^ignore[ \t]*=/s/vserver-packages//' | |
78 | + | |
6a6b3452 ER |
79 | + # dump and reload rpmdb to overcome db version mismatch problems |
80 | + if [ "$db_load" -a "$db_dump" ]; then | |
35d779f2 | 81 | + # dump with host db@RPMDB@_dump |
6a6b3452 ER |
82 | + $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump |
83 | + | |
35d779f2 | 84 | + # load with guest db@RPMDB@_load. |
6a6b3452 ER |
85 | + $_RM -f var/lib/rpm/__db.* |
86 | + mv var/lib/rpm/{Packages,.Packages.ORIG} | |
87 | + chroot . $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump | |
88 | + chroot . bin/rpm --rebuilddb 2>/dev/null | |
89 | + rm -f var/lib/rpm/.Packages.* | |
90 | + fi | |
91 | + | |
92 | popd >/dev/null | |
93 | else | |
94 | + | |
95 | + pushd "$vdir" >/dev/null | |
96 | + if [ "$db_load" -a "$db_dump" ]; then | |
97 | + # dump and reload rpmdb to overcome db version mismatch problems | |
98 | + | |
35d779f2 | 99 | + # dump with guest db@RPMDB@_dump |
6a6b3452 ER |
100 | + $_RM -f var/lib/rpm/__db.* |
101 | + chroot . $db_dump var/lib/rpm/Packages > var/lib/rpm/.Packages.dump | |
102 | + | |
35d779f2 | 103 | + # load with host db@RPMDB@_load |
6a6b3452 ER |
104 | + mv var/lib/rpm/{Packages,.Packages.ORIG} |
105 | + $db_load var/lib/rpm/Packages < var/lib/rpm/.Packages.dump | |
106 | + rm -f var/lib/rpm/.Packages.* | |
107 | + fi | |
108 | + popd >/dev/null | |
109 | + | |
110 | if test -n "$have_poldek"; then | |
111 | _copySecureRev "$vdir" /etc/poldek "$POLDEKETCDIR" | |
112 | _unhashAuto "$POLDEKETCDIR"/poldek.conf '/' |