LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1396|回复: 10

一个clean up world file脚本

[复制链接]
发表于 2008-12-28 21:44:21 | 显示全部楼层 |阅读模式
每次清理world file都要去找那一堆命令,之前找到英文版的在[color="urple"]这里

现在我将主要过程写在一个脚本里了,下次只要执行一下这个脚本就行了。
用wgetpaste贴在了[color="urple"]这里

主要会执行如下步骤:
  1.     echo "***********************************************"
  2.     echo "The system will do the follow steps automaticly:"
  3.     echo "1.cp /var/lib/portage/world ~ && >/var/lib/portage/world"
  4.     echo "2.regenworld"
  5.     echo "3.emerge --depclean -p"
  6.     echo "4.emerge --depclean"
  7.     echo "5.emerge -uDN world -pv"
  8.     echo "6.emerge -uDN world"
  9.     echo "7.revdep-rebuild"
  10.     echo "8.eclean-dist -d"
  11.     echo "***********************************************"
复制代码


脚本代码:
  1. pjq@Gentoo-PJQ ~ $ cat clwd.sh
  2. #########################################################################
  3. # Author: pengjianqing@sina.com
  4. # Created Time: Sun 28 Dec 2008 07:50:48 PM CST
  5. # File Name: clwd.sh
  6. # Description:
  7. # This file is used to clean your  world file.
  8. #USAGE:
  9. #     ./clwd.sh -y,Clean your world file automaticly.
  10. #     ./clwd.sh -n,You need to answer the question by yourself.
  11. #########################################################################
  12. #!/bin/bash
  13. cleanworld()
  14. {
  15.     echo "***********************************************"
  16.     read -p "Back up the world file and regenerate the world file?[y/n]:" ANSWER
  17.     if [ "y"  = $ANSWER ];then
  18.     echo "cp /var/lib/portage/world ~ && >/var/lib/portage/world"
  19.     cp /var/lib/portage/world ~ && >/var/lib/portage/world
  20.     echo "regenworld"
  21.     regenworld
  22.     fi
  23.     echo "***********************************************"
  24.     read -p "Execute emerge --depclean -p?[y/n]:" ANSWER
  25.     if [ "y" = $ANSWER  ];then
  26.     emerge --depclean -p
  27.     fi
  28.     echo "***********************************************"
  29.     read -p "Execute emerge --depclean ?[y/n]:" ANSWER
  30.     if [ "y" = $ANSWER  ];then
  31.     emerge --depclean
  32.     fi
  33.     echo "***********************************************"
  34.     read -p "Execute emerge -uDN world -pv?[y/n]:" ANSWER
  35.     if [ "y" = $ANSWER  ];then
  36.     emerge -uDN world -pv
  37.     fi
  38.     echo "***********************************************"
  39.     read -p "Execute emerge -uDN world ?[y/n]:" ANSWER
  40.     if [ "y" = $ANSWER  ];then
  41.     emerge -uDN world
  42.     fi
  43.     echo "***********************************************"
  44.     read -p "Execute revdep-rebuild?[y/n]:" ANSWER
  45.     if [ "y" = $ANSWER  ];then
  46.     revdep-rebuild
  47.     fi
  48.     echo "***********************************************"
  49. }
  50. autocleanworld()
  51. {
  52.     echo "***********************************************"
  53.     echo "The system will do the follow steps automaticly:"
  54.     echo "1.cp /var/lib/portage/world ~ && >/var/lib/portage/world"
  55.     echo "2.regenworld"
  56.     echo "3.emerge --depclean -p"
  57.     echo "4.emerge --depclean"
  58.     echo "5.emerge -uDN world -pv"
  59.     echo "6.emerge -uDN world"
  60.     echo "7.revdep-rebuild"
  61.     echo "***********************************************"
  62.     read -p "Are you sure?[y/n]:" ANSWER
  63.     if [ "y" = $ANSWER  ];then
  64.     echo "***********************************************"
  65.     cp /var/lib/portage/world ~ && >/var/lib/portage/world
  66.     echo "***********************************************"
  67.     regenworld
  68.     echo "***********************************************"
  69.     emerge --depclean -p
  70.     echo "***********************************************"
  71.     emerge --depclean
  72.     echo "***********************************************"
  73.     emerge -uDN world -pv
  74.     echo "***********************************************"
  75.     emerge -uDN world
  76.     echo "***********************************************"
  77.     revdep-rebuild
  78.     echo "***********************************************"
  79.     fi
  80. }
  81. help()
  82. {
  83.     echo "***********************************************"
  84.     echo "-h:help"
  85.     echo "-y:do the clean world automaticly."
  86.     echo "-n:you need to answer the question one by one."
  87.     echo "***********************************************"
  88.     exit 0;
  89. }
  90. myexit()
  91. {
  92.     echo "Unknown parameter,exit"
  93.     exit 0;
  94. }
  95. STARTTIME=`date|cut -d " " -f4`
  96. echo "***********************************************"
  97. echo "This is used to clean your world file"
  98. echo "USAGE:"
  99. echo "-h:help"
  100. echo "-y:do the clean world automaticly."
  101. echo "-n:you need to answer the question one bye one."
  102. echo "***********************************************"
  103. case "$1" in
  104.     -y ) autocleanworld;;
  105.     -n ) cleanworld;;
  106.     -h ) help;;
  107.     *  ) myexit;;
  108. esac
  109. read -p "Do you want to delete the independency files in /usr/portage/distfiles/?[y/n]:" ANSWER
  110. if [ "y" = $ANSWER  ];then
  111.     eclean-dist -d -p   
  112. fi
  113. if [ "y" = $ANSWER ];then
  114.     read -p "Are you sure to delete those files?[y/n]:" ANSWER
  115.     if [ "y" = $ANSWER  ];then
  116.     eclean-dist -d   
  117.     fi
  118. fi
  119. FINISHEDTIME=`date|cut -d " " -f4`
  120. echo "***********************************************"
  121. echo "OK,All done!Enjoy your clean world:)"
  122. echo "***********************************************"
  123. echo Start at:$STARTTIME
  124. echo Finished at:$FINISHEDTIME
  125. echo "***********************************************"
复制代码
发表于 2008-12-28 21:57:57 | 显示全部楼层
高手,留记号,方便使用。
回复 支持 反对

使用道具 举报

发表于 2008-12-29 00:24:56 | 显示全部楼层
感谢分享,请教楼主,这个脚本的目的是否是把某些不属于world但是又手工emerge过的包从world中去除呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-29 08:56:39 | 显示全部楼层
Post by zxuan;1931185
感谢分享,请教楼主,这个脚本的目的是否是把某些不属于world但是又手工emerge过的包从world中去除呢?

是的,可以这么说,它会重新产生你的world 档,然后按照新产生的world去clean你的系统,那些不属于world的就会被删掉,还有那些没有依赖关系的也会被clean掉.

revdep-rebuild会修复你系统中的依赖错误.

整个过程执行完后,你的系统就clean up了.

如果你有时间你还可以执行emerge -e world 来重新编译你的系统.
回复 支持 反对

使用道具 举报

发表于 2008-12-29 09:40:48 | 显示全部楼层
不错,又可以偷懒了~~
回复 支持 反对

使用道具 举报

发表于 2008-12-29 09:50:56 | 显示全部楼层
不明白清理 word 是什么意思。。。
word 里面的东西不都是你自己需要才安装的么?
回复 支持 反对

使用道具 举报

发表于 2008-12-29 13:51:17 | 显示全部楼层
Post by wd_afei;1931264
不明白清理 word 是什么意思。。。
word 里面的东西不都是你自己需要才安装的么?


有时候会不注意重复emerge了里面某些应该由依赖安装的包,而且没有加上-1参数,导致world里面记录了不必要的一个包。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-29 17:37:38 | 显示全部楼层
Post by wd_afei;1931264
不明白清理 word 是什么意思。。。
word 里面的东西不都是你自己需要才安装的么?
你可以先备份你的world文件,然后重新生成,再比较一下,就可以看出差别了.
回复 支持 反对

使用道具 举报

发表于 2008-12-29 17:48:12 | 显示全部楼层
Post by zxuan;1931378
有时候会不注意重复emerge了里面某些应该由依赖安装的包,而且没有加上-1参数,导致world里面记录了不必要的一个包。


这个。。。
你自己直接修改那个 world 文件不得了?
/var/lib/portage/world
把里面你不需要的 删掉 ,然后 emerge --depclean , revdep-rebuild 不就可以了?
回复 支持 反对

使用道具 举报

发表于 2008-12-29 17:48:15 | 显示全部楼层
regenworld是根据/var/log/emerge.log生成world,所以并不安全/牢靠,建议少用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表