Chinaunix首页 | 论坛 | 博客
  • 博客访问: 311939
  • 博文数量: 42
  • 博客积分: 451
  • 博客等级: 下士
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 18:24
文章分类

全部博文(42)

文章存档

2015年(1)

2013年(9)

2012年(19)

2011年(13)

分类: LINUX

2012-04-12 09:05:58

立此博文,回答 提出的问题。

声明:
1、下文/install路径为解压install.img后的路径;
2、task为“Desktop”、“Minimal Desktop”、“Minimal”、“Basic Server”、“Database Server”、“Web Server”之类的选项。
3、修改的图片如下所示:


先看一段代码:

点击(此处)折叠或打开

  1. # vim /install/usr/lib /anaconda/iw/task_gui.py
  2. class TaskWindow(InstallWindow):

  3.     def _createTaskStore(self):
  4.         store = gtk.ListStore(gobject.TYPE_BOOLEAN, # 此变量决定是否为默认task
  5.                               gobject.TYPE_STRING,
  6.                               gobject.TYPE_PYOBJECT)
  7.         tl = self.xml.get_widget("taskList")
  8.         tl.set_model(store)

  9.         anyEnabled = False
  10.         for (txt, grps) in self.tasks:
  11.             if not self.backend.groupListExists(grps):
  12.                 continue    # 当grp组名写错时,整个task不可见
  13.             enabled = self.backend.groupListDefault(grps)  # 检查是否能够被设为默认task
  14.             # 定位到anaconda/yuminstall.py模块的groupListDefault()
  15.             store.append([not anyEnabled and enabled, gettext.ldgettext("comps", txt), grps])
  16.             if enabled:
  17.                 anyEnabled = True
  18. # stor.append[task是否默认,字符串,task对应的组]表示扩充stor,也就是增加task项;
  19. # if enabled一句作用为:只要一个默认了,其他task就算满足要求,也无法成为默认项
  20.         return tl

查看groupListDefault()类

点击(此处)折叠或打开

  1. # vim /install/usr/lib /anaconda/yuminstall.py
  2.     def groupListDefault(self, grps):
  3.         """Returns bool of whether all of the given groups are default"""
  4.         rc = False
  5.         for gid in grps:
  6.             g = self.ayum.comps.return_group(gid)
  7.             # 定位到/install/usr/lib/python2.6/site-packages/yum/comps.py
  8.             if g and not g.default:
  9.                 return False
  10.             elif g:
  11.                 rc = True
  12.         return rc
再定位就到python内置模块去了,多看无意,定位到此为止吧。分析下由3个双引号引起来的字符串,groupListDefault()检查是否所有group都为默认,结合第一段代码,如果是,则将此task设为默认项。那groupListDefault()去哪里检查呢?repodate/comps.xml文件!此文件定义了所有rpm包的层次结构(类别/组/rpm包),其中每个组都有一个default属性,groupListDefault()检查每个task所需要的组的default属性,若都为true,则将此task设为默认,并且如果多个task都满足要求,按顺序只将第一个满足要求的task设为默认项。
阅读(2140) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~