home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / update701 / install / postremove < prev    next >
Text File  |  1998-08-10  |  14KB  |  513 lines

  1. #ident  "@(#)postremove    17.11    98/08/10"
  2. #copyright    "%c%"
  3. #!/usr/bin/sh
  4.  
  5. # Define variables for use
  6. BIN=/usr/bin
  7. TTY=/dev/tty
  8. PKGINST=${PKG}
  9. UPDINST=/var/sadm/pkg/${PKGINST}/install
  10. UPDLOGFILE=/var/sadm/install/logs/${PKGINST}.out
  11. UPDTMP=/tmp/${PKGINST}
  12. UPDMENUANS=${UPDTMP}/results
  13. UPDVARFILE=${1}
  14.  
  15. export TTY UPDINST UPDTMP UPDMENUANS
  16.  
  17. # Load RC Scripts
  18. . ${UPDINST}/updpkg.rc
  19.  
  20. MenuLang
  21.  
  22. #
  23. # Define trap and trap command for interruption (delete key)
  24. # of the Update Installation.
  25. #
  26. TrapCmd ()
  27. {
  28.     MsgHandler 1 UpdIntrMsg
  29.     RmExit 3
  30. }
  31. trap 'TrapCmd' 2 3 15
  32.  
  33. #
  34. # Restore update backup from disk location
  35. #
  36. RestoreFromDisk ()
  37. {
  38.     LogMsg "RestoreFromDisk: `GetText STARTED`"
  39.     DbgMsg "RestoreFromDisk: STARTED"
  40.  
  41.     DbgMsg "  RestoreFromDisk: display brmsg menu"
  42.     MenuCmd regular brmsg
  43.     DbgMsg "  RestoreFromDisk: up ulimit to ${UPD_ULIMIT}"
  44.     ulimit ${UPD_ULIMIT}
  45.  
  46.     #
  47.     # Restore backup.
  48.     #
  49.     cd /
  50.     ECPIO=${UPDTMP}/upd.cpio.err
  51.     OCPIO=${UPDTMP}/upd.cpio.out
  52.     DbgMsg "  RestoreFromDisk: try to restore from ${UPDBKUPFILE}.Z or ${UPDBKUPFILE}"
  53.     if [ -f ${UPDBKUPFILE}.Z ]
  54.     then
  55.         DbgMsg "  RestoreFromDisk: run zcat/cpio on ${UPDBKUPFILE}.Z"
  56.         ${BIN}/zcat ${UPDBKUPFILE} | \
  57.             ${BIN}/cpio -icdmu >${OCPIO} 2>${ECPIO}
  58.     else
  59.         DbgMsg "  RestoreFromDisk: run cpio on ${UPDBKUPFILE}.Z"
  60.         ${BIN}/cpio -icdmu -I ${UPDBKUPFILE} >${OCPIO} 2>${ECPIO}
  61.     fi
  62.     rc=${?}
  63.     DbgMsg "  RestoreFromDisk: cpio completed"
  64.  
  65.     ${BIN}/grep "ERROR" ${ECPIO} >/dev/null 2>&1
  66.     greprc=${?}
  67.  
  68.     if [ ${rc} -ne 0 -o ${greprc} -eq 0 ]
  69.     then
  70.         DbgMsg "  RestoreFromDisk: error during cpio, cpio rc = ${rc}, grep rc = ${rc}"
  71.         CPIOEFILES="${ECPIO}"
  72.         export CPIOEFILES
  73.         DbgMsg "  RestoreFromDisk: display cperr menu"
  74.         MenuCmd error cperr
  75.         rc=1
  76.         unset CPIOEFILES
  77.     fi
  78.     unset OCPIO ECPIO
  79.  
  80.     LogMsg "RestoreFromDisk: `GetText COMPLRET` - ${rc}"
  81.     DbgMsg "RestoreFromDisk: completion return code - ${rc}"
  82.     return ${rc}
  83. }
  84.  
  85. #
  86. # Perform the restore the main control section.
  87. #
  88. RestoreMain ()
  89. {
  90.     LogMsg "RestoreMain: `GetText STARTED`"
  91.     DbgMsg "RestoreMain: STARTED"
  92.  
  93.     CPIOFILE=update.cpio
  94.  
  95.     # Get the number of Update Package Overlays performed.
  96.     . ${UPDCNTFILE}
  97.     LogMsg "  RestoreMain: From ${UPDCNTFILE}, UPDCNT=${UPDCNT}"
  98.  
  99.     CNT=${UPDCNT}
  100.     while [ ${CNT} -ge 0 ]
  101.     do    
  102.         if [ ! -f ${UPDBKUPDIR}/bkup${CNT}/bkup.disk ]
  103.         then
  104.             # Display restore starting menu.
  105.             LogMsg "  RestoreMain: display rsmain menu"
  106.             MenuCmd regular rsmain
  107.             break
  108.         fi
  109.         CNT=`${BIN}/expr ${CNT} - 1`
  110.     done
  111.  
  112.     CNT=${UPDCNT}
  113.     while [ ${CNT} -ge 0 ]
  114.     do
  115.         DbgMsg "  RestoreMain: try to restore part ${CNT}"
  116.         UPDBACKUP=${UPDBKUPDIR}/bkup${CNT}
  117.         UPDBKUPFILE=${UPDBACKUP}/${CPIOFILE}
  118.         export UPDBACKUP UPDBKUPFILE
  119.         DbgMsg "  RestoreMain: UPDBACKUP=${UPDBACKUP}"
  120.         DbgMsg "  RestoreMain: UPDBKUPFILE=${UPDBKUPFILE}"
  121.  
  122.         DbgMsg "  RestoreMain: restore from disk"
  123.         DbgMsg "  RestoreMain: exec RestoreFromDisk"
  124.         RestoreFromDisk
  125.         rc=${?}
  126.         DbgMsg "  RestoreMain: RestoreFromDisk rc = ${rc}"
  127.         if [ ${rc} -ne 0 ]
  128.         then
  129.             LogMsg "RestoreMain: `GetText COMPLRET` - ${rc}"
  130.             DbgMsg "RestoreMain: COMPLRET - ${rc}"
  131.             return ${rc}
  132.         fi
  133.  
  134.         # Process next backup.
  135.         DbgMsg "  RestoreMain: restore of part ${CNT} succeeded"
  136.         CNT=`${BIN}/expr ${CNT} - 1`
  137.     done
  138.     DbgMsg "  RestoreMain: All files restored"
  139.  
  140.     if [ -f ${UPDBACKUP}/bkup.disk ]
  141.     then
  142.         DbgMsg "  RestoreMain: display brsucc menu"
  143.         MenuCmd regular brsucc
  144.         ${BIN}/sleep 3
  145.     fi
  146.  
  147.     LogMsg "RestoreMain: `GetText COMPLRET` - 0"
  148.     DbgMsg "RestoreMain: COMPLRET - 0"
  149.     return 0
  150. }
  151.  
  152. LogMsg "postremove: `GetText STARTED`"
  153. DbgMsg "postremove: STARTED"
  154.  
  155. #
  156. # Create temporary work directory.
  157. #
  158. DbgMsg "  postremove: remake dir UPDTMP = ${UPDTMP}"
  159. ${BIN}/rm -rf ${UPDTMP} 2> /dev/null
  160. ${BIN}/mkdir -p ${UPDTMP}
  161.  
  162. UPD_INSTRM="${UPD_INSTRM_r}"
  163. UPD_instrm="${UPD_instrm_r}"
  164. UPD_INSTRMED="${UPD_INSTRMED_r}"
  165. UPD_BKUPREST="${UPD_BKUPREST_r}"
  166. export UPD_INSTRM UPD_instrm UPD_INSTRMED UPD_BKUPREST
  167. unset UPD_INSTRM_i UPD_instrm_i UPD_INSTRMED_i UPD_BKUPREST_i
  168. unset UPD_INSTRM_r UPD_instrm_r UPD_INSTRMED_r UPD_BKUPREST_r
  169. unset ProcMsg GenericProcMsg
  170. DbgMsg "    UPD_INSTRM=${UPD_INSTRM}"
  171. DbgMsg "    UPD_instrm=${UPD_instrm}"
  172. DbgMsg "    UPD_INSTRMED=${UPD_INSTRMED}"
  173. DbgMsg "    UPD_BKUPREST=${UPD_BKUPREST}"
  174.  
  175. #
  176. # Perform the restore.
  177. #
  178. DbgMsg "  postremove: exec RestoreMain"
  179. RestoreMain
  180. rc=${?}
  181. DbgMsg "  postremove: Restore Main exited with rc = ${rc}"
  182. if [ ${rc} != 0 ]
  183. then
  184.     LogMsg "postremove: `GetText RESFAIL`"
  185.     DbgMsg "  postremove: Restore Failed"
  186.     menu_colors regular
  187.     MenuClear
  188.     LogMsg "postremove: `GetText COMPLEXIT` - ${1}\n"
  189.     DbgMsg "postremove: exit with rc=1"
  190.     RmExit 1
  191. fi
  192.  
  193. #
  194. # Display working menu.
  195. #
  196. DbgMsg "  UPD_POSTREMOVE_MSG=${UPD_POSTREMOVE_MSG}"
  197. DbgMsg "  postremove: display working menu at 0%"
  198. WorkMenu "${UPD_POSTREMOVE_MSG}" 0
  199.  
  200. #
  201. # Remove all marks about the updated packages.
  202. #
  203. ${BIN}/rm -f /var/sadm/pkg/*/${PKGINST} 2> /dev/null
  204.  
  205. #
  206. # Prepare list of packages and their files for installf
  207. #
  208. ${BIN}/cat ${UPDBKUPDIR}/contents >${UPDTMP}/installf
  209.  
  210. DbgMsg "  postremove: display working menu at 5%"
  211. WorkMenu "" 5
  212.  
  213. DbgMsg "  postremove: display working menu at 10%"
  214. WorkMenu "" 10
  215.  
  216. DbgMsg "  postremove: display working menu at 15%"
  217. WorkMenu "" 15
  218.  
  219. ########################################
  220. # Update 1 BL1 specific postremove code
  221. ########################################
  222.  
  223.  
  224. # ul98-16307 alexma (Xenix removal)
  225.  
  226. # recreate hard links for Xenix restoration
  227. ln -f /usr/bin/xrestor /usr/bin/xrestore
  228. ln -f /usr/bin/touch /usr/bin/settime
  229. if `/bin/pkginfo usoftint >/dev/null 2>&1`
  230.     then    
  231.     ln -f /usr/lib/libxtermlib.a /usr/lib/libxtermcap.a
  232. fi
  233. ln -f /usr/bin/.restore /usr/sbin/.restore
  234. ln -f /usr/bin/.restore /usr/bin/restore
  235. ln -f /usr/bin/.restore /usr/sbin/restore
  236. cp /sbin/.restore /sbin/restore
  237. ln -f /usr/bin/.backup /usr/sbin/.backup
  238. ln -f /usr/bin/.backup /usr/bin/backup
  239. ln -f /usr/bin/.backup /usr/sbin/backup
  240. #ln -s /etc/fs/XENIX/fsck /usr/lib/fs/XENIX/fsck 
  241. #ln -s /etc/fs/XENIX/mount /usr/lib/fs/XENIX/mount 
  242. #ln -s /usr/bin/dosdir /usr/bin/dosls
  243. #ln -s /usr/bin/dosrm /usr/bin/dosrmdir
  244. #ln -s /sbin/xinstall /usr/sbin/xinstall
  245. #ln -s /usr/bin/.restore /sbin/.restore
  246. #ln -s /usr/bin/.backup /sbin/.backup
  247. #ln -s /etc/Backup /usr/sbin/Backup
  248. #ln -s /etc/Ignore /usr/sbin/Ignore
  249.  
  250. DbgMsg " postinstall: finished creating hard links for Xenix restoration"
  251.  
  252. # ul98-16307 end
  253.  
  254. # ul98-06811a0 kd (reverse postinstall actions)
  255. cp /sbin/rc1 /usr/sbin/rc1
  256. installf base /usr/sbin/rc1
  257. installf -f base
  258. DbgMsg "postinstall for ul98-06811a0 done"
  259. # ul98-06811a0 kd end
  260.  
  261. # PTF7003 specific remove of the /etc/.snum file
  262. removef ${PKGINST} /etc/.snum > /dev/null 2>&1
  263. removef -f ${PKGINST} > /dev/null 2>&1
  264. # end PTF7003 specific removal
  265.  
  266. # PTF7011 begin
  267. # The dlpi driver in /etc/inst/nd/dlpi has been replaced by the saved version
  268. # but now do the same for the driver in the link kit (assuming its been configured).
  269. [ -f /etc/conf/pack.d/dlpi/Driver.o ] && {
  270.     cd /etc/inst/nd/dlpi
  271.     if ${CONFBIN}/idinstall -u -k dlpi 
  272.     then
  273.         DbgMsg "Restoring original dlpi driver into the linkkit"
  274.     else
  275.         DbgMsg "DLPI Driver restoration failed"
  276.     fi
  277. }
  278. # PTF7011 end
  279.  
  280. # ul98-11502a0 begin
  281. # The dlpibase driver in /etc/inst/nd/dlpibase has been replaced by the saved 
  282. # version but now do the same for the driver in the link kit (assuming its 
  283. # been configured).
  284.  
  285. #echo
  286. #echo "Restoring the original dlpibase driver into the link kit..."
  287. #echo
  288. [ -f /etc/conf/pack.d/dlpibase/Driver_atup.o ] && {
  289.     cd /etc/inst/nd/dlpibase
  290.     if ${CONFBIN}/idinstall -u -k dlpibase
  291.     then
  292.         DbgMsg "Restoring original dlpibase driver into the linkkit"
  293.     else
  294.         DbgMsg "DLPIbase Driver restoration failed"
  295.     fi
  296. }
  297. # ul98-11502a0 end
  298.  
  299. ########################################
  300. # Update 1 BL2 specific postremove code
  301. ########################################
  302.  
  303. # ul98-14106 anurags start
  304. # although the files have been deleted, deconfigure the hotplug object
  305. DbgMsg " postremove - ul98-14106:Removing the SCOadmin Hotplug object"
  306. /usr/bin/scoadmin -f -p Hardware -d hotplug.obj
  307. # ul98-14106 end
  308.  
  309. # PTF7002 begin
  310. # restore the mpio depend file to its original state
  311. [ -f /var/sadm/pkg/mpio/install/depend ] && {
  312.     sed "s/^P/R/" /var/sadm/pkg/mpio/install/depend > /var/sadm/pkg/mpio/install/depend_tmp
  313.     sed '/^#/d' /var/sadm/pkg/mpio/install/depend_tmp > /var/sadm/pkg/mpio/install/depend
  314.     rm /var/sadm/pkg/mpio/install/depend_tmp
  315. }
  316. # PTF7002 end
  317.  
  318. # Update the LIBRARIES from /usr/lib/tmp and /usr/ccs/lib/tmp
  319. for file in /usr/lib/tmp/* /usr/ccs/lib/tmp/*
  320. do
  321.     if [ -f "${file}" ]
  322.     then
  323.         orig=`echo ${file} | ${BIN}/sed 's%/tmp/%/%'`
  324.         DbgMsg "    installing ${orig}"
  325.         ${BIN}/mv -f ${file} ${orig} >/dev/null 2>&1
  326.         rc=${?}
  327.         DbgMsg "        mv to lib rc=${rc}"
  328.     fi
  329. done
  330. unset file orig rc
  331.  
  332. ${BIN}/rm -rf    /usr/lib/tmp /usr/ccs/lib/tmp >/dev/null 2>&1
  333.  
  334. #
  335. # Strictly speaking, we should not make the link to libsocket.so.2
  336. # when restoring to UW2.1; but safest to leave that link lying around
  337. #
  338. ${BIN}/ln -f /usr/lib/libthread.so.1 /usr/lib/libthread.so >/dev/null 2>&1
  339. ${BIN}/ln -f /usr/lib/libthreadT.so.1 /usr/lib/libthreadT.so >/dev/null 2>&1
  340. ${BIN}/ln -f /usr/lib/libsocket.so /usr/lib/libsocket.so.1 >/dev/null 2>&1
  341. ${BIN}/ln -f /usr/lib/libsocket.so /usr/lib/libsocket.so.2 >/dev/null 2>&1
  342. ${BIN}/ln -f /usr/lib/libresolv.so /usr/lib/libresolv.so.2 >/dev/null 2>&1
  343. ${BIN}/ln -f /usr/lib/libc.so.1 /usr/lib/ld.so.1 >/dev/null 2>&1
  344.  
  345.  
  346. # ul98-05506 start
  347. # check for "crypt" package, re-create link back to original library.
  348. Ver=`grep "^VERSION=" /var/sadm/pkg/base/pkginfo | cut -f2 -d'='`
  349. if [ "${Ver}" = "7" ] 
  350. then
  351.     rm -f /usr/lib/libnsl_i.so > /dev/null 2>&1
  352.         removef ${PKGINST} /usr/lib/libnsl_i.so > /dev/null 2>&1
  353.         removef -f ${PKGINST} > /dev/null 2>&1
  354. else
  355.     if `/bin/pkginfo crypt >/dev/null 2>&1`
  356.     then
  357.          ${BIN}/ln -f /usr/lib/libnsl_d.so /usr/lib/libnsl.so >/dev/null 2>&1
  358.         DbgMsg " postremove libnsl"
  359.         DbgMsg " link libnsl.so to libnsl_d.so "
  360.         sumd=`/usr/bin/sum -r /usr/lib/libnsl_d.so`
  361.         DbgMsg " sum of libnsl_d.so is ${sumd}"
  362.     else
  363.          ${BIN}/ln -f /usr/lib/libnsl_i.so /usr/lib/libnsl.so >/dev/null 2>&1
  364.         DbgMsg " postremove libnsl"
  365.         DbgMsg " link libnsl.so to libnsl_i.so "
  366.         sumi=`/usr/bin/sum -r /usr/lib/libnsl_i.so`
  367.         DbgMsg " sum of libnsl_i.so is ${sumi}"
  368.     fi
  369. fi
  370. ${BIN}/ln -f /usr/lib/libnsl.so /usr/lib/libnsl.so.1 >/dev/null 2>&1
  371. installf base /usr/lib/libnsl.so.1=/usr/lib/libnsl.so l > /dev/null 2>&1
  372. installf -f base > /dev/null 2>&1
  373.  
  374. # ul98-05506 end
  375.  
  376. DbgMsg "  postremove: old tmp files removed and new ones relinked"
  377.  
  378.  
  379. ########################################
  380. # Update 1 BL3 specific postremove code
  381. ########################################
  382.  
  383. # fix acp links
  384. ${BIN}/ln -f /usr/bin/ls /usr/bin/lx >/dev/null 2>&1
  385. ${BIN}/ln -f /usr/bin/ls /usr/bin/l >/dev/null 2>&1
  386. ${BIN}/ln -f /usr/bin/ls /usr/bin/lc >/dev/null 2>&1
  387. ${BIN}/ln -f /usr/bin/ls /usr/bin/lf >/dev/null 2>&1
  388. ${BIN}/ln -f /usr/bin/ls /usr/bin/lr >/dev/null 2>&1
  389.  
  390. # ul98-15517 rene fix to sdistatic
  391. sed '/pdi0/d' /etc/inittab > /tmp/inittab.new
  392. cp -f /tmp/inittab.new /etc/inittab
  393. chmod 444 /etc/inittab
  394. chown bin /etc/inittab
  395. chgrp bin /etc/inittab
  396. DbgMsg " postremove: sdistatic entry removed from /etc/inittab"
  397.  
  398. # remove /etc/sdistatic entry from /etc/conf/init.d/kernel
  399. sed '/pdi0/d' /etc/conf/init.d/kernel > /tmp/kernel.new
  400. cp -f /tmp/kernel.new /etc/conf/init.d/kernel
  401. chmod 0644 /etc/conf/init.d/kernel
  402. chown root /etc/conf/init.d/kernel
  403. chgrp sys /etc/conf/init.d/kernel
  404. DbgMsg " postremove: sdistatic entry removed from /etc/conf/init.d/kernel"
  405. # ul98-15517 end
  406.  
  407. ########################################
  408. # end Update specific postremove code
  409. ########################################
  410.  
  411. DbgMsg "  postremove: display working menu at 20%"
  412. WorkMenu "" 20
  413.  
  414. DbgMsg "  postremove: display working menu at 20%"
  415. WorkMenu "" 20
  416.  
  417. #
  418. # Man Command postremove:
  419. # - restore /etc/default/man configuration file
  420. #
  421. if [ -f /etc/default/man.bak ]
  422. then
  423.         mv /etc/default/man.bak /etc/default/man
  424. fi
  425.  
  426. #
  427. # Mail postremove:
  428. # - restore sendmail.cf configuration
  429. # - restore mailx.rc configuration
  430. # - remove the sticky bit on /var/mail
  431. #
  432. if [ -f /etc/sendmail.cf.bak ]
  433. then
  434. #        mv /etc/sendmail.cf.bak /etc/sendmail.cf
  435. # Changed "mv" to "cp" and "rm" to correct pkgadd ownership problem 8/3/09
  436.     cp /etc/sendmail.cf.bak /etc/sendmail.cf
  437.     rm -f /etc/sendmail.cf.bak
  438. fi
  439. if [ -f /etc/mail/mailx.rc.bak ]
  440. then
  441. #        mv /etc/mail/mailx.rc.bak /etc/mail/mailx.rc
  442. # Changed "mv" to "cp" and "rm" to correct pkgadd ownership problem 8/1/09
  443.     cp /etc/mail/mailx.rc.bak /etc/mail/mailx.rc
  444.     rm -f /etc/mail/mailx.rc.bak
  445. fi
  446. chmod 777 /var/mail
  447.  
  448. DbgMsg "  postremove: display working menu at 25%"
  449. WorkMenu "" 25
  450.  
  451. DbgMsg "  postremove: display working menu at 30%"
  452. WorkMenu "" 30
  453.  
  454. DbgMsg "  postremove: display working menu at 35%"
  455. WorkMenu "" 35
  456.  
  457. #
  458. # Restore original file information in the software
  459. # installation database.
  460. #
  461. pkglist=`${BIN}/cut -f1 -d' ' ${UPDTMP}/installf | ${BIN}/sort -u`
  462. DbgMsg "  RestoreFileParameters: pkglist = ${pkglist}"
  463.  
  464. step=0
  465. steps=`echo ${pkglist} | ${BIN}/wc -w`
  466.  
  467. # Extract all file info for a given package for restoration
  468. # to the software installation database at once.
  469. for pkg in ${pkglist}
  470. do
  471.     # Restore file parameters.
  472.     DbgMsg "  RestoreFileParameters: restoring for ${pkg}"
  473.     ${BIN}/grep "^${pkg} " ${UPDTMP}/installf | \
  474.         ${BIN}/sed -e "s/^${pkg} //" -e "s/ 4 NONE NONE//" | \
  475.         ${BIN}/sort -u |
  476.         ${USBIN}/installf ${pkg} - >/dev/null 2>&1
  477.  
  478.     # If installf fails, and $pkg is no longer installed,
  479.     # then we ought to remove its files; but if $pkg is
  480.     # somehow wrong, that would be dangerous: deferred.
  481.  
  482.     # Restore package.
  483.     ${USBIN}/installf -f ${pkg} >/dev/null 2>&1
  484.     DbgMsg "  RestoreFileParameters: restored for ${pkg}"
  485.  
  486.     step=`${BIN}/expr $step + 1 2>/dev/null`
  487.     gauge=`${BIN}/expr $step \* 60 / $steps + 35 2>/dev/null`
  488.     [ "$gauge" -le 95 ] && WorkMenu "" "$gauge"
  489. done
  490.  
  491. DbgMsg "  postremove: display working menu at 95%"
  492. WorkMenu "" 95
  493.  
  494. EXITRC=10        # please reboot
  495. > /etc/conf/.rebuild    # idbuild on shutdown
  496.  
  497. ${BIN}/rm -rf ${UPDBKUPDIR} >/dev/null 2>&1
  498.  
  499. DbgMsg "  postremove: Display working menu at 100%"
  500. WorkMenu "" 100
  501.  
  502. ${BIN}/sleep 2
  503. MenuClear
  504.  
  505. # Remove menu directory.
  506. DbgMsg "  postremove: remove menu dir ${UPDMENUDIR}"
  507. ${BIN}/rm -rf ${UPDMENUDIR}
  508.  
  509. LogMsg "postremove: `GetText COMPLEXIT` - ${EXITRC}"
  510. DbgMsg "postremove: completed with exit code - ${EXITRC}"
  511. RmExit ${EXITRC}
  512.