linux学习记录
分类:
2008-08-21 13:20:12
水
平集—补丁管理和维护要集中讨论的是,配置和安装Linux系统上的软件更新所用的解决方案,主要是在基于Novell的Linux系统上考虑这个问题。
这篇文章会很短,因为我能找到的普遍使用的开源工具只有一个——YaST。我知道,其实现在有很多解决方案,也有一些专利软件,如RHN,还有一些自定义
的软件。而YaST是我们能认可的唯一一个公共软件。以下是对YaST和它的在线更新能力的深入探讨。
YAST在线更新工具
在YaST中最普通,最重要的模块大概应该是涉及软件管理(添加和移除软件)和补丁管理的部分。对于一个典型的SUSE系统,软件和更新可以从
软件仓库获得,软件仓库位于本地或者是远程的软件目录库,从这个仓库可以获得新的软件或更新。更深一层来看,SLES9软件包管理系统利用普通的rpm命
令来安装,删除,和更新软件包,管理软件包和相关的数据库。尽管这个子系统与RedHat的类似,但Novell选择了一个非常不同的方法来发布补丁,它
使用patch
RPMs。很多基于RPM(软件包管理)的版本系统,当一个软件包由于这样那样的原因而需要更新的时候,distributor(发行者)将会修改原始资
源树,或给它打补丁,然后重新编译/打包成一个新的RPM包。这样,新的RPM包就是原来RPM包的一个更新版本。
Novell与通过RPMs管理补丁稍微有些不同,Novell不是更新和重新打包整个软件包,取而代之,Novell更新原始资源树,重新编
译,然后根据最初的软件包和新打包/编译的软件包,建立一个delta(或者是一个diff)。delta是一个二进制文件,它存储的是两个二进制文件的
不同点。然后,deltas将会被打包到一个RPM内发布给客户机。然后,就像安装一个标准的RPM那样,patch
RPM会被手动或自动的安装。这项技术的优点就是补丁的大小通常很相似——通常会在5KB到8MB之间,这取决于软件包的大小和所做的改变的多少。这就使
得更新程序会比使用完全RPMs(Full RPMs)进行得更快——尤其是对于大的应用软件,这个优点就会更显著。
针对SLES9的主要更新已经发布为一个可安装的“service
pack”(升级维护包)。Novell通过YaST2安装这个service pack文件,可以从包含该service
pack文件的CDROM或是一个网络位置进行安装。当然,也可以简单的利用YaST2的在线升级模块来手动或自动更新系统。这种情况下,service
pack以大量独立的包的形式发布,就像RedHat如何发布主要更新那样(例如RHEL4
U4)。除了一个日志文件以外,SLES9现在还没有email机制,即当一个补丁自动下载安装后,发email通知系统管理员(RedHat有这种机
制)。但是,它会维护一个包含每一个更新信息的日志文件(/var/lib/YaST2/you/youlog)。系统管理员能很容易读懂这个日志文件,
而且也能发现一个patch RPM被下载和安装了。
还有其他一些方法能够发现有关安装补丁的信息,默认情况下,SLSS9会为每个下载和安装的patch
RPM存档。如果在最初系统安装的时候,通过YaST2安装了Full RPMs,那么Full
RPMs也会被存档。当然,YaST2没有这项功能,尽管有时这对维护档案文件会有好处,例如如果有一个补丁曾需要重新设置。
1. YaST 软件/更新仓库
软件仓库是通过YaST的Installation Source模块手动添加的,或者利用SLP(Service Location
Protocol服务定位协议)搜索。从这个模块,可以添加能收到更新的地址说明。这些说明是以URI的格式或是一个绝对路径给出。YaST支持以下的软
件仓库说明:
◆FTPHTTP(S)
◆SMB/CIFS ◆NFS ◆CD or DVD ◆Local Directory 使用这个方法,系统管理员可以为软件和更新建立一个集中的软件仓库。然后就可以通过Novell使用一个简单的服务器获得更新,局域网上的其他服务器可以利用以上这些协议从集中的补丁服务器获得补丁。
2. YaST安全性:
尽管针对SLES和SLED的软件仓库都是由Novell操作,但还是有可能会添加第三方仓库来获得不是由Novell提供的软件,或者甚至是
同一软件包的不同版本。Novell对这种做法发出了警告。添加不由Novell控制的仓库,会导致安装未经测试的或恶意的软件,最终将威胁系统安全,但
更有可能的是导致软件不稳定和RPM包冲突。
由Novell获得的所有官方软件和补丁都是有密码保护的,有Novell的公钥验证。这个公钥用来检验这些从官方SLES/SLED或
CDs,或DVDs,或Novell的网站获得的签名,一旦公钥被接受并引入,任何具有非法签名的软件包和更新都会产生一个警告,不能被安装。
3. YaST自动更新
通过YaST的在线升级设置(Online Update
Setup)模块可以配置自动更新,它允许用户设置在每天或每周的特定时间启动更新。在后台,这个模块简单地安装一个新的cron时间入口,一个任务调度
程序,定期地运行另外一个程序来检查和安装Novell发布的更新。
在早期基于SUSE的系统,YOU(YaST Online Update
YaST在线更新)用来自动安装升级包。cron命令会执行一个叫做/usr/bin/online_update的shell脚本,这个脚本会自动运行
补丁安装程序。SUSE的新版本,包括SLED10,使用一个相似的程序,但不是shell脚本,而是一个叫做rug的命令。rug是一个连到
ZENworks管理代理的命令行接口。
如果你正在使用任何开源工具或应用程序来处理补丁和管理在线更新,我们非常愿意与你交流。
原文地址: |