update 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/sh
  2. set -e
  3. vardir="$1"
  4. method=$2
  5. option=$3
  6. cd "$vardir/methods/disk"
  7. . ./shvar.$option
  8. if [ -z "$p_main_packages" ] && [ -z "$p_ctb_packages" ] && \
  9. [ -z "$p_nf_packages" ] && [ -z "$p_nus_packages " ] && \
  10. [ -z "$p_lcl_packages" ]
  11. then
  12. echo '
  13. No Packages files available, cannot update available packages list.
  14. Hit RETURN to continue. '
  15. read response
  16. exit 0
  17. fi
  18. xit=1
  19. trap '
  20. rm -f packages-main packages-ctb packages-nf packages-nus packages-lcl
  21. if [ -n "$umount" ]
  22. then
  23. umount "$umount" >/dev/null 2>&1
  24. fi
  25. exit $xit
  26. ' 0
  27. if [ -n "$p_blockdev" ]
  28. then
  29. umount="$p_mountpoint"
  30. mount -rt "$p_fstype" -o nosuid,nodev "$p_blockdev" "$p_mountpoint"
  31. fi
  32. if [ -n "$p_nfs" ]
  33. then
  34. umount="$p_mountpoint"
  35. mount -rt nfs "$p_nfs" -o nosuid,nodev "$p_mountpoint"
  36. fi
  37. updatetype=update
  38. for f in main ctb nf nus lcl
  39. do
  40. eval 'this_packages=$p_'$f'_packages'
  41. case "$this_packages" in
  42. '')
  43. continue
  44. ;;
  45. scan)
  46. eval 'this_binary=$p_'$f'_binary'
  47. if [ -z "$this_binary" ]; then continue; fi
  48. if [ "$updatetype" = update ]
  49. then
  50. dpkg --admindir $vardir --clear-avail
  51. updatetype=merge
  52. fi
  53. echo Running dpkg --record-avail -R "$p_mountpoint$this_binary"
  54. dpkg --admindir $vardir --record-avail -R "$p_mountpoint$this_binary"
  55. ;;
  56. *)
  57. packagesfile="$p_mountpoint$this_packages"
  58. case "$packagesfile" in
  59. *.gz | *.Z | *.GZ | *.z)
  60. echo -n "Uncompressing $packagesfile ... "
  61. zcat <"$packagesfile" >packages-$f
  62. echo done.
  63. dpkg --admindir $vardir --$updatetype-avail packages-$f
  64. updatetype=merge
  65. ;;
  66. '')
  67. ;;
  68. *)
  69. dpkg --admindir $vardir --$updatetype-avail "$packagesfile"
  70. updatetype=merge
  71. ;;
  72. esac
  73. ;;
  74. esac
  75. done
  76. echo -n 'Update OK. Hit RETURN. '
  77. read response
  78. xit=0