hand write code for software package
almost finished
This commit is contained in:
@@ -8,6 +8,7 @@ import ri_data
|
||||
|
||||
import re
|
||||
import copy
|
||||
import sys
|
||||
|
||||
def quit():
|
||||
''' correspond to quit button '''
|
||||
@@ -153,22 +154,39 @@ def ncm_static():
|
||||
for n in ('network_domain_name','network_ip','network_subnet_mask','network_gateway','network_primary_dns','network_secondary_dns'):
|
||||
ri_widget.Widget.dict[n].tk_widget.configure(state='normal')
|
||||
|
||||
class GroupCheck(object):
|
||||
''' A function class called whenever the group checkbox is clicked '''
|
||||
dict={}
|
||||
def __init__(self, n):
|
||||
self.name = n
|
||||
GroupCheck.dict[n] = self
|
||||
|
||||
def __call__(self):
|
||||
print self.name
|
||||
display.SoftwarePackageWindow.dict[self.name].show()
|
||||
|
||||
def software_group_construct(w):
|
||||
''' draw group information on, based on actual data
|
||||
w - Widget instance '''
|
||||
for g in ri_data.Group.dict.values():
|
||||
display.SoftwarePackageWindow(g)
|
||||
|
||||
mdt = [ m for m in ri_data.Group.dict.values() if m.install == 'mandatory' ]
|
||||
opt = [ o for o in ri_data.Group.dict.values() if o.install != 'mandatory' ]
|
||||
|
||||
wit = w.widgets.pop()
|
||||
for i in mdt:
|
||||
print i
|
||||
wi = copy.deepcopy(wit)
|
||||
wi.attr['text'] = i.name
|
||||
vn = "software_group_%s" %(i.name)
|
||||
wi.attr['variable'] = vn
|
||||
wi.variables = [(vn, 'StringVar', ''),]
|
||||
wi.grid_location.dict['column'] = mdt.index(i)
|
||||
wi.grid_location.dict['row'] = 0
|
||||
idx = mdt.index(i)
|
||||
wi.grid_location.dict['column'] = idx % int(w.grid_management.columns)
|
||||
wi.grid_location.dict['row'] = idx / int(w.grid_management.columns)
|
||||
gc = GroupCheck(i.name)
|
||||
setattr(sys.modules[__name__], vn, gc)
|
||||
wi.attr['command'] = vn
|
||||
w.add_sub_widget(wi)
|
||||
|
||||
def software_group_init():
|
||||
@@ -179,3 +197,5 @@ def software_group_quit():
|
||||
|
||||
def software_group_item():
|
||||
pass
|
||||
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@ g_node - group node '''
|
||||
if n.attributes['install'].value == 'mandatory':
|
||||
g.mandatory.append(n.attributes['package'].value.encode('ascii'))
|
||||
else:
|
||||
g.optional.append(n.attributes['package'].value.encode('ascii'), 'no')
|
||||
g.optional.append([n.attributes['package'].value.encode('ascii'), 'no'])
|
||||
|
||||
@staticmethod
|
||||
def init_from_config_xml(node):
|
||||
@@ -338,7 +338,7 @@ g_node - group node '''
|
||||
g.mandatory.extend([pkg.attributes['name'].value for pkg in grp_chld.childNodes
|
||||
if pkg.nodeType == pkg.ELEMENT_NODE and pkg.nodeName == 'package'])
|
||||
elif grp_chld.nodeName == 'optional':
|
||||
g.optional.extend([(pkg.attributes['name'].value, pkg.attributes['install'].value) for pkg in grp_chld.childNodes
|
||||
g.optional.extend([[pkg.attributes['name'].value, pkg.attributes['install'].value] for pkg in grp_chld.childNodes
|
||||
if pkg.nodeType == pkg.ELEMENT_NODE and pkg.nodeName == 'package'])
|
||||
init_from_xml = init_from_install_xml
|
||||
@staticmethod
|
||||
@@ -469,6 +469,16 @@ p_node - xml node (parent node)'''
|
||||
srvs.appendChild(srv)
|
||||
p_node.appendChild(srvs)
|
||||
|
||||
def init():
|
||||
''' initialize '''
|
||||
Partition.init_from_os()
|
||||
Raid.init_from_os()
|
||||
MountPoint.init_from_internal()
|
||||
xmldoc_cfg = minidom.parse(config_xml)
|
||||
root_cfg = xmldoc_cfg.firstChild
|
||||
Group.init_from_config_xml(root_cfg)
|
||||
Service.init_from_config_xml(root_cfg)
|
||||
|
||||
def init_from_xml():
|
||||
''' init all classes in this module based input file (install xml) '''
|
||||
xmldoc = minidom.parse(install_xml)
|
||||
|
||||
@@ -166,3 +166,115 @@ def destroy_top_window(w):
|
||||
''' w - Toplevel instance '''
|
||||
w.tk_widget.destroy()
|
||||
|
||||
class SoftwarePackageWindow():
|
||||
''' Toplevel window for a group of software packages '''
|
||||
dict = {}
|
||||
def __init__(self, g):
|
||||
self.group = g
|
||||
self.optional = []
|
||||
SoftwarePackageWindow.dict[g.name] = self
|
||||
|
||||
def select_all(self):
|
||||
''' callback function for check button select_all '''
|
||||
self.group.selection = self.selection.get()
|
||||
print self.group.selection
|
||||
|
||||
def ok(self):
|
||||
''' callback function for button OK '''
|
||||
self.group.selection = self.selection.get()
|
||||
for i in range(len(self.group.optional)):
|
||||
# install field, yes or no
|
||||
self.group.optional[i][1] = self.optional[i].get()
|
||||
self.win.destroy()
|
||||
|
||||
def cancel(self):
|
||||
''' callback function for button cancel '''
|
||||
self.win.destroy()
|
||||
|
||||
def show(self):
|
||||
win = Tkinter.Toplevel(root_window)
|
||||
self.win = win
|
||||
win.geometry("%sx%s+%s+%s" %(int(root_window.winfo_screenwidth()*0.8),\
|
||||
int(root_window.winfo_screenheight()*0.8),\
|
||||
int(root_window.winfo_screenwidth()*0.1),\
|
||||
int(root_window.winfo_screenheight()*0.1)))
|
||||
win.columnconfigure(0, weight=1)
|
||||
win.rowconfigure(1, weight=1)
|
||||
win.rowconfigure(4, weight=1)
|
||||
Tkinter.Label(win, text='Mandatory').grid(column=0, row=0)
|
||||
cnv1 = Tkinter.Canvas(win)
|
||||
hs1 = Tkinter.Scrollbar(win, orient='horizontal')
|
||||
hs1.configure(command=cnv1.xview)
|
||||
vs1 = Tkinter.Scrollbar(win, orient='vertical')
|
||||
vs1.configure(command=cnv1.yview)
|
||||
cnv1.grid(column=0, row=1, sticky='NWES')
|
||||
vs1.grid(column=1, row=1, sticky='NSW')
|
||||
hs1.grid(column=0, row=2, sticky='NWE')
|
||||
cnv1.configure(yscrollcommand=vs1.set, xscrollcommand=hs1.set)
|
||||
fr1 = Tkinter.Frame(cnv1)
|
||||
cnv1.create_window((0,0), window=fr1, anchor='nw')
|
||||
#column set to 5
|
||||
fr1.columnconfigure(0, weight=1)
|
||||
fr1.columnconfigure(1, weight=1)
|
||||
fr1.columnconfigure(2, weight=1)
|
||||
fr1.columnconfigure(3, weight=1)
|
||||
fr1.columnconfigure(4, weight=1)
|
||||
|
||||
for i in range(len(self.group.mandatory)):
|
||||
Tkinter.Label(fr1, text=self.group.mandatory[i]).grid(column=i%5, row=i/5, sticky='NWES')
|
||||
|
||||
Tkinter.Label(win, text='Optional').grid(column=0, row=3)
|
||||
self.selection = Tkinter.StringVar(value="")
|
||||
chk_sa = Tkinter.Checkbutton(win, text='Select all', command=self.select_all, variable=self.selection, onvalue='all', offvalue='manual')
|
||||
chk_sa.grid(column=1, row=3)
|
||||
if self.group.selection == 'all':
|
||||
chk_sa.select()
|
||||
else:
|
||||
chk_sa.deselect()
|
||||
|
||||
cnv2 = Tkinter.Canvas(win)
|
||||
hs2 = Tkinter.Scrollbar(win, orient='horizontal')
|
||||
hs2.configure(command=cnv2.xview)
|
||||
vs2 = Tkinter.Scrollbar(win, orient='vertical')
|
||||
vs2.configure(command=cnv2.yview)
|
||||
cnv2.grid(column=0, row=4, sticky='NWES')
|
||||
vs2.grid(column=1, row=4, sticky='NSW')
|
||||
hs2.grid(column=0, row=5, sticky='NWE')
|
||||
cnv2.configure(yscrollcommand=vs2.set, xscrollcommand=hs2.set)
|
||||
fr2 = Tkinter.Frame(cnv2)
|
||||
cnv2.create_window((0,0), window=fr2, anchor='nw')
|
||||
#column set to 5
|
||||
fr2.columnconfigure(0, weight=1)
|
||||
fr2.columnconfigure(1, weight=1)
|
||||
fr2.columnconfigure(2, weight=1)
|
||||
fr2.columnconfigure(3, weight=1)
|
||||
fr2.columnconfigure(4, weight=1)
|
||||
|
||||
for i in range(len(self.group.optional)):
|
||||
name, y_n = self.group.optional[i]
|
||||
v = Tkinter.StringVar(value='no')
|
||||
self.optional.append(v)
|
||||
chk = Tkinter.Checkbutton(fr2, text=name, onvalue='yes', offvalue='no', variable=self.optional[i])
|
||||
chk.grid(column=i%5, row=i/5, sticky='NWES')
|
||||
if y_n == 'yes':
|
||||
chk.select()
|
||||
else:
|
||||
chk.deselect()
|
||||
|
||||
Tkinter.Button(win, text='OK', command=self.ok).grid(column=0, row=6)
|
||||
Tkinter.Button(win, text='Cancel', command=self.cancel).grid(column=1, row=6)
|
||||
|
||||
win.after_idle(lambda : cnv1.configure(scrollregion=(0,0, fr1.winfo_width(), fr1.winfo_height())))
|
||||
win.after_idle(lambda : cnv2.configure(scrollregion=(0,0, fr2.winfo_width(), fr2.winfo_height())))
|
||||
|
||||
win.transient(root_window)
|
||||
# grab all events into it
|
||||
while True:
|
||||
try:
|
||||
win.grab_set()
|
||||
except Tkinter.TclError:
|
||||
pass
|
||||
else:
|
||||
break
|
||||
|
||||
win.wait_window()
|
||||
|
||||
@@ -7,6 +7,8 @@ import ri_cmd
|
||||
class GridManagement:
|
||||
''' implement grid management '''
|
||||
def __init__(self, xml_node):
|
||||
self.rows = xml_node.attributes['rows'].value
|
||||
self.columns = xml_node.attributes['columns'].value
|
||||
self.cf_list=[]
|
||||
for cf in xml_node.childNodes:
|
||||
if cf.nodeType != cf.ELEMENT_NODE or cf.nodeName != "configure":
|
||||
|
||||
@@ -36,6 +36,7 @@ else:
|
||||
xmldoc = minidom.parse(itf_xml)
|
||||
ri_data.install_xml = ins_xml
|
||||
ri_data.init_from_xml()
|
||||
#ri_data.init()
|
||||
|
||||
ri_widget.construct(xmldoc.firstChild)
|
||||
ri_seq.construct(xmldoc.firstChild)
|
||||
|
||||
473
xml/install.xml
473
xml/install.xml
@@ -1,40 +1,469 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<install>
|
||||
<serial-number>0123</serial-number>
|
||||
<partitions unit='sector'>
|
||||
<partition device='/dev/hda1' start='63' id='83' size='16450497'/>
|
||||
<partition device='/dev/hda2' start='16450560' id='5' size='4016250'/>
|
||||
<partition device='/dev/hda5' start='16450623' id='83' size='4016187'/>
|
||||
<serial-number>
|
||||
</serial-number>
|
||||
<partitions unit='sectors'>
|
||||
<partition device='sda1' start='63' id='83' size='195318207'/>
|
||||
<partition device='sda2' start='195318270' id='82' size='3903795'/>
|
||||
<partition device='sda3' start='199222065' id='83' size='195318270'/>
|
||||
<partition device='sda4' start='394540335' id='83' size='582227730'/>
|
||||
<partition device='sdb1' start='63' id='83' size='125837082'/>
|
||||
<partition device='sdb2' start='125837145' id='82' size='8401995'/>
|
||||
<partition device='sdb3' start='134240256' id='83' size='354154799'/>
|
||||
<partition device='sdb4' start='0' id='0' size='0'/>
|
||||
</partitions>
|
||||
<raids>
|
||||
<raid raid-type='raid0' raid-device='/dev/md0'>
|
||||
<raw-device>/dev/hda1</raw-device>
|
||||
<raw-device>/dev/hda2</raw-device>
|
||||
</raid>
|
||||
<raid raid-type='raid5' raid-device='/dev/md1'>
|
||||
<raw-device>/dev/hda3</raw-device>
|
||||
<raw-device>/dev/hda5</raw-device>
|
||||
<raw-device>/dev/hda6</raw-device>
|
||||
<raid raid-type='raid1' raid-device='md0'>
|
||||
<raw-device>sda1</raw-device>
|
||||
<raw-device>sdb1</raw-device>
|
||||
</raid>
|
||||
</raids>
|
||||
<mount-points>
|
||||
<mount-point device='/dev/hda1' directory='/' file-system='jfs' format='yes'/>
|
||||
<mount-point device='/dev/hda5' directory='/usr' file-system='reiserfs' format='no'/>
|
||||
<mount-point device='sda2' directory='' file-system='' format='no'/>
|
||||
<mount-point device='sda3' directory='' file-system='' format='no'/>
|
||||
<mount-point device='sda4' directory='' file-system='' format='no'/>
|
||||
<mount-point device='sdb2' directory='' file-system='' format='no'/>
|
||||
<mount-point device='sdb3' directory='' file-system='' format='no'/>
|
||||
<mount-point device='sdb4' directory='' file-system='' format='no'/>
|
||||
<mount-point device='md0' directory='' file-system='' format='no'/>
|
||||
</mount-points>
|
||||
<network domain='google.com' secondary_dns='188.188.166.166' ip='192.168.1.111' hostname='lizhi' mask='255.255.192.0' primary_dns='192.168.1.212' configuration='static' gateway='192.168.1.192'/>
|
||||
<network domain='' secondary_dns='' ip='' hostname='' mask='' primary_dns='' configuration='' gateway=''/>
|
||||
<groups>
|
||||
<group name='base' install='mandatory'>
|
||||
<description>base software packages</description>
|
||||
<group name='development' install='no'>
|
||||
<description>
|
||||
开发类包括 C、C++(Fortran)、DDD 等开发工具。
|
||||
开发类软件包分为必选包和可选包,当选择安装该类后,必选包是默认安装的,可选包可以自由选择安装。
|
||||
</description>
|
||||
<mandatory>
|
||||
<package name='acct'/>
|
||||
<package name='autoconf'/>
|
||||
<package name='automake'/>
|
||||
<package name='binutils'/>
|
||||
<package name='gdb'/>
|
||||
<package name='m4'/>
|
||||
<package name='make'/>
|
||||
</mandatory>
|
||||
<optional>
|
||||
<package name='at' install='yes'/>
|
||||
<package name='ant' install='no'/>
|
||||
<package name='Archive-Zip' install='no'/>
|
||||
<package name='autogen' install='no'/>
|
||||
<package name='bin86' install='no'/>
|
||||
<package name='bison' install='no'/>
|
||||
<package name='byacc' install='no'/>
|
||||
<package name='ccache' install='no'/>
|
||||
<package name='Compress-Raw-Zlib' install='no'/>
|
||||
<package name='Compress-Zlib' install='no'/>
|
||||
<package name='cvs' install='no'/>
|
||||
<package name='cscope' install='no'/>
|
||||
<package name='ddd' install='no'/>
|
||||
<package name='dejagnu' install='no'/>
|
||||
<package name='flex' install='no'/>
|
||||
<package name='git' install='no'/>
|
||||
<package name='git-manpages' install='no'/>
|
||||
<package name='glibmm' install='no'/>
|
||||
<package name='gnupg' install='no'/>
|
||||
<package name='gperf' install='no'/>
|
||||
<package name='guile' install='no'/>
|
||||
<package name='IO-Compress-Base' install='no'/>
|
||||
<package name='IO-Compress-Zlib' install='no'/>
|
||||
<package name='jdk' install='no'/>
|
||||
<package name='libidl' install='no'/>
|
||||
<package name='libsigc++' install='no'/>
|
||||
<package name='libstdc++-compat' install='no'/>
|
||||
<package name='libxml++' install='no'/>
|
||||
<package name='libtool' install='no'/>
|
||||
<package name='nasm' install='no'/>
|
||||
<package name='PyXML' install='no'/>
|
||||
<package name='strace' install='no'/>
|
||||
<package name='tls' install='no'/>
|
||||
<package name='XML-Parser' install='no'/>
|
||||
<package name='clearsilver' install='no'/>
|
||||
<package name='python-genshi' install='no'/>
|
||||
<package name='python-setuptools' install='no'/>
|
||||
<package name='sqlite' install='no'/>
|
||||
<package name='subversion' install='no'/>
|
||||
<package name='subversion-python' install='no'/>
|
||||
<package name='swig' install='no'/>
|
||||
<package name='trac' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='office' install='no'>
|
||||
<description>
|
||||
办公类包括 OpenOffice.org 等办公软件。
|
||||
办公类都是必选软件包,当选择安装该类后,必选包是默认安装的。
|
||||
</description>
|
||||
<mandatory>
|
||||
<package name='openoffice'/>
|
||||
</mandatory>
|
||||
</group>
|
||||
<group name='kde' install='no'>
|
||||
<description>
|
||||
KDE是一种著名的自由图形工作环境,整个系统采用Qt程序库
|
||||
KDE桌面类都是可选软件包,可以自由选择安装。
|
||||
</description>
|
||||
<optional>
|
||||
<package name='kde-i18n-zh_CN' install='no'/>
|
||||
<package name='kdeaccessibility' install='no'/>
|
||||
<package name='kdeaddons' install='no'/>
|
||||
<package name='kdeadmin' install='no'/>
|
||||
<package name='kdeartwork' install='no'/>
|
||||
<package name='kdebase' install='no'/>
|
||||
<package name='kdebindings' install='no'/>
|
||||
<package name='kdeedu' install='no'/>
|
||||
<package name='kdegames' install='no'/>
|
||||
<package name='kdegraphics' install='no'/>
|
||||
<package name='kdelibs' install='no'/>
|
||||
<package name='kdemultimedia' install='no'/>
|
||||
<package name='kdenetwork' install='no'/>
|
||||
<package name='kdepim' install='no'/>
|
||||
<package name='kdesdk' install='no'/>
|
||||
<package name='kdetoys' install='no'/>
|
||||
<package name='kdeutils' install='no'/>
|
||||
<package name='kdevelop' install='no'/>
|
||||
<package name='kdewebdev' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='gui' install='no'>
|
||||
<description>
|
||||
图形类包括 X11 相关的各种程序。
|
||||
图形类软件包分为必选包和可选包,当选择安装该类后,必选包是默认安装的,可选包可以自由选择安装。
|
||||
</description>
|
||||
<mandatory>
|
||||
<package name='scim'/>
|
||||
<package name='scim-pinyin'/>
|
||||
<package name='scim-tables'/>
|
||||
<package name='xorg-x11-proto'/>
|
||||
<package name='xorg-x11-util'/>
|
||||
<package name='xorg-x11-xtrans'/>
|
||||
<package name='xorg-x11-libXau'/>
|
||||
<package name='xorg-x11-libXdmcp'/>
|
||||
<package name='xorg-x11-libX11'/>
|
||||
<package name='xorg-x11-libXext'/>
|
||||
<package name='xorg-x11-libdmx'/>
|
||||
<package name='xorg-x11-libfontenc'/>
|
||||
<package name='xorg-x11-libFS'/>
|
||||
<package name='xorg-x11-libICE'/>
|
||||
<package name='xorg-x11-libXp'/>
|
||||
<package name='xorg-x11-libXpm'/>
|
||||
<package name='xorg-x11-libXfixes'/>
|
||||
<package name='xorg-x11-libXcomposite'/>
|
||||
<package name='xorg-x11-libXrender'/>
|
||||
<package name='xorg-x11-libXdamage'/>
|
||||
<package name='xorg-x11-libXcursor'/>
|
||||
<package name='xorg-x11-libXfont'/>
|
||||
<package name='xorg-x11-libXfontcache'/>
|
||||
<package name='xorg-x11-libXft'/>
|
||||
<package name='xorg-x11-libXi'/>
|
||||
<package name='xorg-x11-libXinerama'/>
|
||||
<package name='xorg-x11-libxkbfile'/>
|
||||
<package name='xorg-x11-libXrandr'/>
|
||||
<package name='xorg-x11-libXres'/>
|
||||
<package name='xorg-x11-libXScrnSaver'/>
|
||||
<package name='xorg-x11-libXtst'/>
|
||||
<package name='xorg-x11-libXv'/>
|
||||
<package name='xorg-x11-libXvMC'/>
|
||||
<package name='xorg-x11-libXxf86dga'/>
|
||||
<package name='xorg-x11-libXxf86misc'/>
|
||||
<package name='xorg-x11-libXxf86vm'/>
|
||||
<package name='xorg-x11-libSM'/>
|
||||
<package name='xorg-x11-libpciaccess'/>
|
||||
<package name='xorg-x11-libXt'/>
|
||||
<package name='xorg-x11-libXmu'/>
|
||||
<package name='xorg-x11-libXaw'/>
|
||||
<package name='xorg-x11-libAppleWM'/>
|
||||
<package name='xorg-x11-libWindowsWM'/>
|
||||
<package name='xorg-x11-xbitmaps'/>
|
||||
<package name='xorg-x11-app'/>
|
||||
<package name='xorg-x11-xcursor-themes'/>
|
||||
<package name='xorg-x11-font-util'/>
|
||||
<package name='xorg-x11-font-x11'/>
|
||||
<package name='xorg-x11-xserver'/>
|
||||
<package name='xorg-x11-driver'/>
|
||||
<package name='xcb-proto'/>
|
||||
<package name='libxcb'/>
|
||||
<package name='libpthread-stubs'/>
|
||||
<package name='Mesa'/>
|
||||
<package name='libdrm'/>
|
||||
<package name='xkeyboard-config'/>
|
||||
<package name='x11-fonts-chinese'/>
|
||||
</mandatory>
|
||||
<optional>
|
||||
<package name='arts' install='no'/>
|
||||
<package name='atk' install='no'/>
|
||||
<package name='cairo' install='no'/>
|
||||
<package name='emacs' install='no'/>
|
||||
<package name='fcitx' install='no'/>
|
||||
<package name='fontconfig' install='no'/>
|
||||
<package name='freetype' install='no'/>
|
||||
<package name='fribidi' install='no'/>
|
||||
<package name='gamin' install='no'/>
|
||||
<package name='gd' install='no'/>
|
||||
<package name='gdk-pixbuf' install='no'/>
|
||||
<package name='glib1' install='no'/>
|
||||
<package name='glib2' install='no'/>
|
||||
<package name='glitz' install='no'/>
|
||||
<package name='gpm' install='no'/>
|
||||
<package name='gtk1' install='no'/>
|
||||
<package name='gtk2' install='no'/>
|
||||
<package name='hicolor-icon-theme' install='no'/>
|
||||
<package name='imlib' install='no'/>
|
||||
<package name='lesstif' install='no'/>
|
||||
<package name='pango' install='no'/>
|
||||
<package name='pixman' install='no'/>
|
||||
<package name='poppler' install='no'/>
|
||||
<package name='qt3' install='no'/>
|
||||
<package name='rxvt' install='no'/>
|
||||
<package name='SDL' install='no'/>
|
||||
<package name='tightvnc' install='no'/>
|
||||
<package name='tk' install='no'/>
|
||||
<package name='windowmaker' install='no'/>
|
||||
<package name='xorg-x11-doc' install='no'/>
|
||||
<package name='xorg-x11-app-twm' install='no'/>
|
||||
<package name='xorg-x11-app-xinit' install='no'/>
|
||||
<package name='xchat' install='no'/>
|
||||
<package name='xosview' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='network_tools' install='no'>
|
||||
<description>
|
||||
网络工具类包括 tcpdump 等网络工具。
|
||||
网络工具类都是可选软件包,可以自由选择安装。
|
||||
</description>
|
||||
<optional>
|
||||
<package name='libpcap' install='no'/>
|
||||
<package name='tcpdump' install='no'/>
|
||||
<package name='wireshark' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='vm' install='no'>
|
||||
<description>
|
||||
通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
|
||||
虚拟机类都是可选软件包,可以自由选择安装
|
||||
</description>
|
||||
<optional>
|
||||
<package name='qemu-kvm' install='no'/>
|
||||
<package name='bridge-utils' install='no'/>
|
||||
<package name='uml-utilities' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='base' install='mandatory'>
|
||||
<description>
|
||||
基础类是包括字符界面的最小系统,可以独立运行各种不依靠图形界面的程序,
|
||||
除 ssh(d) 外不包括其它网络服务。
|
||||
基础类软件包分为必选包和可选包,必选包是默认安装的,可选包可以自由选择安装。
|
||||
</description>
|
||||
<mandatory>
|
||||
<package name='acct'/>
|
||||
<package name='acl'/>
|
||||
<package name='acpid'/>
|
||||
<package name='attr'/>
|
||||
<package name='bash'/>
|
||||
<package name='bzip2'/>
|
||||
<package name='coreutils'/>
|
||||
<package name='cpio'/>
|
||||
<package name='cracklib'/>
|
||||
<package name='db'/>
|
||||
<package name='dcron'/>
|
||||
<package name='diffutils'/>
|
||||
<package name='e2fsprogs'/>
|
||||
<package name='eject'/>
|
||||
<package name='expect'/>
|
||||
<package name='file'/>
|
||||
<package name='filesystem'/>
|
||||
<package name='findutils'/>
|
||||
<package name='gcc'/>
|
||||
<package name='gdbm'/>
|
||||
<package name='glibc'/>
|
||||
<package name='gmp'/>
|
||||
<package name='grep'/>
|
||||
<package name='groff'/>
|
||||
<package name='grub'/>
|
||||
<package name='gzip'/>
|
||||
<package name='hotplug'/>
|
||||
<package name='iproute2'/>
|
||||
<package name='iptables'/>
|
||||
<package name='ispell'/>
|
||||
<package name='kbd'/>
|
||||
<package name='kernel-header'/>
|
||||
<package name='killproc'/>
|
||||
<package name='less'/>
|
||||
<package name='libarchive'/>
|
||||
<package name='libcap'/>
|
||||
<package name='libusb'/>
|
||||
<package name='linux-pam'/>
|
||||
<package name='linx_init'/>
|
||||
<package name='logrotate'/>
|
||||
<package name='man'/>
|
||||
<package name='man-pages'/>
|
||||
<package name='mktemp'/>
|
||||
<package name='module-init-tools'/>
|
||||
<package name='mpfr'/>
|
||||
<package name='ncurses'/>
|
||||
<package name='net-tools'/>
|
||||
<package name='netkit-base'/>
|
||||
<package name='openssh'/>
|
||||
<package name='openssl'/>
|
||||
<package name='pam_make'/>
|
||||
<package name='patch'/>
|
||||
<package name='pciutils'/>
|
||||
<package name='perl'/>
|
||||
<package name='perl-gettext'/>
|
||||
<package name='pkg-config'/>
|
||||
<package name='pkgutils'/>
|
||||
<package name='popt'/>
|
||||
<package name='ports'/>
|
||||
<package name='procps'/>
|
||||
<package name='psmisc'/>
|
||||
<package name='readline'/>
|
||||
<package name='reiserfsprogs'/>
|
||||
<package name='rpm2targz'/>
|
||||
<package name='sed'/>
|
||||
<package name='shadow'/>
|
||||
<package name='slocate'/>
|
||||
<package name='smartmontools'/>
|
||||
<package name='star'/>
|
||||
<package name='sysfsutils'/>
|
||||
<package name='sysklogd'/>
|
||||
<package name='sysvinit'/>
|
||||
<package name='tar'/>
|
||||
<package name='tcl'/>
|
||||
<package name='tcp_wrappers'/>
|
||||
<package name='texinfo'/>
|
||||
<package name='time'/>
|
||||
<package name='timezone'/>
|
||||
<package name='udev'/>
|
||||
<package name='util-linux'/>
|
||||
<package name='vim'/>
|
||||
<package name='which'/>
|
||||
<package name='zlib'/>
|
||||
</mandatory>
|
||||
<optional>
|
||||
<package name='adjtimex' install='yes'/>
|
||||
<package name='at' install='no'/>
|
||||
<package name='audit' install='no'/>
|
||||
<package name='bc' install='no'/>
|
||||
<package name='beecrypt' install='no'/>
|
||||
<package name='cdrtools' install='yes'/>
|
||||
<package name='cpufrequtils' install='no'/>
|
||||
<package name='dialog' install='no'/>
|
||||
<package name='dosfstools' install='no'/>
|
||||
<package name='ed' install='no'/>
|
||||
<package name='expat' install='yes'/>
|
||||
<package name='gawk' install='no'/>
|
||||
<package name='gettext' install='no'/>
|
||||
<package name='hdparm' install='no'/>
|
||||
<package name='help2man' install='no'/>
|
||||
<package name='jfsutils' install='no'/>
|
||||
<package name='libaio' install='no'/>
|
||||
<package name='libxml2' install='no'/>
|
||||
<package name='libxslt' install='no'/>
|
||||
<package name='lm_sensors' install='no'/>
|
||||
<package name='lsof' install='no'/>
|
||||
<package name='lvm2' install='no'/>
|
||||
<package name='mdadm' install='no'/>
|
||||
<package name='mt-st' install='no'/>
|
||||
<package name='mysql' install='no'/>
|
||||
<package name='netkit-telnetd' install='no'/>
|
||||
<package name='pcre' install='no'/>
|
||||
<package name='python' install='no'/>
|
||||
<package name='quota' install='no'/>
|
||||
<package name='raidtools' install='no'/>
|
||||
<package name='rpm' install='no'/>
|
||||
<package name='sysstat' install='no'/>
|
||||
<package name='tcsh' install='no'/>
|
||||
<package name='termcap' install='no'/>
|
||||
<package name='traceroute' install='no'/>
|
||||
<package name='tree' install='no'/>
|
||||
<package name='unrar' install='no'/>
|
||||
<package name='unzip' install='no'/>
|
||||
<package name='usbutils' install='no'/>
|
||||
<package name='texi2html' install='no'/>
|
||||
<package name='wget' install='no'/>
|
||||
<package name='xfsprogs' install='yes'/>
|
||||
<package name='zip' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='network_service' install='no'>
|
||||
<description>
|
||||
网络服务类包括各种网络服务包。
|
||||
网络服务类都是可选软件包,可以自由选择安装。
|
||||
</description>
|
||||
<optional>
|
||||
<package name='apache' install='no'/>
|
||||
<package name='apr' install='no'/>
|
||||
<package name='bind' install='no'/>
|
||||
<package name='bindutils' install='no'/>
|
||||
<package name='cups' install='no'/>
|
||||
<package name='dhcp' install='no'/>
|
||||
<package name='dhcpcd' install='no'/>
|
||||
<package name='fetchmail' install='no'/>
|
||||
<package name='linux-identd' install='no'/>
|
||||
<package name='lukemftp' install='no'/>
|
||||
<package name='lynx' install='no'/>
|
||||
<package name='mod_perl' install='no'/>
|
||||
<package name='mod_php' install='no'/>
|
||||
<package name='nail' install='no'/>
|
||||
<package name='net-snmp' install='no'/>
|
||||
<package name='netkit-rsh' install='no'/>
|
||||
<package name='netkit-telnet' install='no'/>
|
||||
<package name='nfs-utils' install='no'/>
|
||||
<package name='ntp' install='no'/>
|
||||
<package name='pine' install='no'/>
|
||||
<package name='portmap' install='no'/>
|
||||
<package name='postfix' install='no'/>
|
||||
<package name='ppp' install='no'/>
|
||||
<package name='procmail' install='no'/>
|
||||
<package name='proftpd' install='no'/>
|
||||
<package name='rdate' install='no'/>
|
||||
<package name='rsync' install='no'/>
|
||||
<package name='samba' install='no'/>
|
||||
<package name='snort' install='no'/>
|
||||
<package name='squid' install='no'/>
|
||||
<package name='webfs' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='internet' install='no'>
|
||||
<description>
|
||||
因特网类包括万维网浏览器 Firefox 等。
|
||||
因特网类软件包都是必选包,当选择安装该类后,必选包是默认安装的。
|
||||
</description>
|
||||
<mandatory>
|
||||
<package name='dbus'/>
|
||||
<package name='dbus-glib-1'/>
|
||||
<package name='firefox'/>
|
||||
</mandatory>
|
||||
<optional>
|
||||
<package name='amsn' install='no'/>
|
||||
<package name='thunderbird' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='multi-media' install='no'>
|
||||
<description>
|
||||
多媒体类包括各种媒体库。
|
||||
多媒体类都是可选软件包,可以自由选择安装。
|
||||
</description>
|
||||
<optional>
|
||||
<package name='alsa-lib' install='no'/>
|
||||
<package name='alsa-oss' install='no'/>
|
||||
<package name='alsa-utils' install='no'/>
|
||||
<package name='audiofile' install='no'/>
|
||||
<package name='dvd+rw-tools' install='no'/>
|
||||
<package name='esound' install='no'/>
|
||||
<package name='lcms' install='no'/>
|
||||
<package name='libart_lgpl' install='no'/>
|
||||
<package name='libjpeg' install='no'/>
|
||||
<package name='libmng' install='no'/>
|
||||
<package name='libogg' install='no'/>
|
||||
<package name='libpng' install='no'/>
|
||||
<package name='libtiff' install='no'/>
|
||||
<package name='libungif' install='no'/>
|
||||
<package name='libvorbis' install='no'/>
|
||||
</optional>
|
||||
</group>
|
||||
<group name='dev' install='mandatory'/>
|
||||
</groups>
|
||||
<services>
|
||||
<service start='yes' package='openssh' script='sshd' name='ssh' number='100'/>
|
||||
<service start='disable' package='netkit-rsh' script='inetd' name='rsh' number='S310'/>
|
||||
<service start='disable' package='openssh' script='sshd' name='ssh' number='S205'/>
|
||||
<service start='disable' package='proftpd' script='proftpd' name='ftpd' number='S280'/>
|
||||
<service start='disable' package='netkit-telnetd' script='inetd' name='telnet' number='S310'/>
|
||||
</services>
|
||||
</install>
|
||||
|
||||
@@ -109,6 +109,12 @@ on special cases -->
|
||||
<optional>
|
||||
<attribute name='selectmode'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name='onvalue'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name='offvalue'/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -216,6 +222,9 @@ on special cases -->
|
||||
<optional>
|
||||
<ref name="widget_attribute"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name='construct'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<!-- geometry management is to manage its sons -->
|
||||
<ref name="geometry_management"/>
|
||||
|
||||
@@ -398,7 +398,7 @@ row 4 | |
|
||||
-->
|
||||
|
||||
<widget type='Frame' name='software-group'>
|
||||
<grid_management rows='1' column='2'>
|
||||
<grid_management rows='1' columns='2'>
|
||||
<configure row='0' weight='1'/>
|
||||
<configure column='0' weight='1'/>
|
||||
<configure column='1' weight='1'/>
|
||||
@@ -411,6 +411,11 @@ row 4 | |
|
||||
</widget>
|
||||
|
||||
<widget type='Frame' name='software_group_content' construct='software_group_construct'>
|
||||
<grid_management rows='x' columns='3'>
|
||||
<configure column='0' weight='1'/>
|
||||
<configure column='1' weight='1'/>
|
||||
<configure column='2' weight='1'/>
|
||||
</grid_management>
|
||||
<grid_location row='0' column='1' sticky='NSWE' />
|
||||
<action init='software_group_init' quit='software_group_quit'/>
|
||||
<!-- a template for software group item -->
|
||||
@@ -497,6 +502,46 @@ row 4 | |
|
||||
</widget>
|
||||
</top_window>
|
||||
|
||||
<!--
|
||||
<top_window name='software_package_template' construct='software_package_construct'>
|
||||
-->
|
||||
<top_window name='software_package_template'>
|
||||
<grid_management rows='4' columns='2'>
|
||||
<configure row='1' weight='1'/>
|
||||
<configure row='3' weight='1'/>
|
||||
<configure column='0' weight='1'/>
|
||||
</grid_management>
|
||||
|
||||
<widget type='Label'>
|
||||
<widget_attribute text='Mandatory'/>
|
||||
<grid_location row='0' column='0'/>
|
||||
</widget>
|
||||
<widget type='Canvas'>
|
||||
<grid_location row='1' column='0' sticky='NWSE'/>
|
||||
</widget>
|
||||
<widget type='Scrollbar'>
|
||||
<widget_attribute orient='vertical'/>
|
||||
<grid_location row='1' column='1' sticky='NSW'/>
|
||||
</widget>
|
||||
|
||||
<widget type='Label'>
|
||||
<widget_attribute text='Optional'/>
|
||||
<grid_location row='2' column='0'/>
|
||||
</widget>
|
||||
<widget type='Checkbutton'>
|
||||
<widget_attribute text='Select all' variable='select_all'/>
|
||||
<grid_location row='2' column='1'/>
|
||||
<variable name='select_all' type='StringVar'/>
|
||||
</widget>
|
||||
<widget type='Canvas'>
|
||||
<grid_location row='3' column='0' sticky='NWES'/>
|
||||
</widget>
|
||||
<widget type='Scrollbar'>
|
||||
<widget_attribute orient='vertical'/>
|
||||
<grid_location row='3' column='1' sticky='NSW'/>
|
||||
</widget>
|
||||
</top_window>
|
||||
|
||||
<message key='#os-name'>
|
||||
<English>Rocky 4.2</English>
|
||||
<Chinese>磐石 4.2</Chinese>
|
||||
|
||||
Reference in New Issue
Block a user