免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1450 | 回复: 1
打印 上一主题 下一主题

一个自动mount光碟找rpm安装的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-14 15:01 |只看该作者 |倒序浏览
昨天在rhas4上安装oracle,发现很多rpm依赖的都没有装,一气之下,写了个脚本函数,把rhas4的安装盘都做成iso,让他自动给我找rpm装上依赖去.


  1. #linux instal CD dir
  2. CD_BASE="/opt/linux_inst"
  3. #linux install CD name
  4. INST_NAME="RHEL4-i386-AS-disc1-jrt.iso RHEL4-i386-AS-disc2-jrt.iso RHEL4-i386-AS-disc3-jrt.iso RHEL4-i386-AS-disc4-jrt.iso"
  5. #Mount point for Linux CD
  6. MNT="/mnt/cdrom_linux"
  7. #oracle RPMs, from oracle patch p4198954
  8. ORACLE_RPMS="/root/oracle_patch/p4198954_21_LINUX"

  9. install_package()
  10. {
  11.         local p=$1
  12.         local found=0
  13.         for cd in $INST_NAME; do
  14.                 if [ $found -eq 0 ] && [ -f ${CD_BASE}/${cd} ]; then
  15.                         mount -o loop ${CD_BASE}/${cd} $MNT #&& echo "mount ${CD_BASE}/${cd}"
  16.                         if ls ${MNT}/RedHat/RPMS | grep $p > /dev/null 2>&1; then
  17.                                 if ! rpm -ivh ${MNT}/RedHat/RPMS/$p.i386.rpm ; then
  18.                                         for p_needed in $(rpm -ivh ${MNT}/RedHat/RPMS/$p.i386.rpm | grep .i386.rpm | grep -v "warning"); do
  19.                                                 echo "$p_needed needed"
  20.                                                 umount  $MNT #&& echo "umount ${CD_BASE}/${cd}"
  21.                                                 install_package $(echo $p_needed|sed 's/.i386.rpm//g')
  22.                                                 mount -o loop ${CD_BASE}/${cd} $MNT #&& echo "mount ${CD_BASE}/${cd}"
  23.                                         done
  24.                                         echo "reinstall $p"
  25.                                         if ! rpm -ivh ${MNT}/RedHat/RPMS/$p.i386.rpm; then
  26.                                                 echo "install package $p in ${CD_BASE}/${cd} failed"
  27.                                                 umount $MNT #&& echo "umount ${CD_BASE}/${cd}"
  28.                                                 return 1;
  29.                                         fi
  30.                                 else
  31.                                         found=1
  32.                                 fi
  33.                         fi
  34.                         umount $MNT #&& echo "umount ${CD_BASE}/${cd}"
  35.                 fi
  36.         done
  37.         if [ $found -eq 0 ] && [ -f ${ORACLE_RPMS}/${p}.i386.rpm ]; then
  38.                 rpm -ivh ${ORACLE_RPMS}/${p}.i386.rpm && found=1
  39.         fi
  40.         if [ $found -eq 0 ]; then
  41.                 echo $p " not installed"
  42.                 return 1
  43.         fi
  44.         return 0;
  45. }

复制代码


使用的时候要注意比如装gnome-libs-1.4.1.2.90-44.i386.rpm
直接 install_package gnome-libs-1.4.1.2.90-44 ,不要.i386.rpm

论坛徽章:
0
2 [报告]
发表于 2006-04-14 17:19 |只看该作者
强!收藏
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP