home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / lib / rpm / rpmdb_loadcvt < prev    next >
Text File  |  2006-11-29  |  1KB  |  70 lines

  1. #!/bin/bash
  2.  
  3. ac=$#
  4. cmd=`basename $0`
  5.  
  6. rpmdb=/var/lib/rpm
  7. dbfiles="`/bin/ls -1 $rpmdb/*`"
  8. dbdump=/usr/lib/rpm/rpmdb_dump
  9. dbload=/usr/bin/db_load
  10.  
  11. set `$dbdump -V` || {
  12.     echo "The file $dbdump, usually in the rpm-devel package, is needed."
  13.     echo " Please install the rpm-devel package and retry $cmd."
  14.     exit 1
  15. }
  16. dumpfmt="${5%%:}"
  17.  
  18. set `$dbload -V` || {
  19.     echo "The file $dbload, usually in the db4-utils package, is needed."
  20.     echo " Please install the db4_utils package and retry $cmd."
  21.     exit 1
  22. }
  23. loadfmt="${5%%:}"
  24.  
  25. [ "$dumpfmt" = "$loadfmt" ] && {
  26.     echo "Both $dbdump and $dbload use db-$loadfmt format."
  27.     echo "No conversion is possible."
  28.     exit 0
  29. }
  30.  
  31. [ "$ac" != "0" -o "`/usr/bin/id -u`" != "0" ] && {
  32.     echo "$cmd: Convert $rpmdb files to db-$loadfmt format."
  33.     echo "$cmd: Must be run as root, takes no arguments."
  34.     exit 1
  35. }
  36.  
  37. echo "Converting to db-$loadfmt compatible format (1-10 minutes per file) ..."
  38.  
  39. dbfile=
  40. trap "
  41.     [ -n "$dbfile" ] && {
  42.     [ -f $dbfile-O ] && /bin/mv $dbfile-O $dbfile
  43.     /bin/rm -f $dbfile-N
  44.     }
  45.     exit 1
  46. " 1 2 3 15
  47.  
  48. rm -f $rpmdb/__db*
  49.  
  50. for dbfile in $dbfiles
  51. do
  52.     echo " `/usr/bin/file $dbfile`"
  53.  
  54.     $dbdump $dbfile | $dbload $dbfile-N || {
  55.     echo "Failed conversion:"
  56.     echo "    $dbdump $dbfile | $dbload $dbfile-N"
  57.     echo "Cleaning up and exiting ..."
  58.     /bin/rm -f $dbfile-N
  59.     exit 1
  60.     }
  61.  
  62.     /bin/mv $dbfile $dbfile-O
  63.     /bin/mv $dbfile-N $dbfile
  64.     /bin/rm -f $dbfile-O
  65. done
  66.  
  67. echo "Done!"
  68.  
  69. exit 0
  70.