




已阅读5页,还剩72页未读, 继续免费阅读
(计算机软件与理论专业论文)开源软件依赖可满足性识别方法研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
川:j 、j ! , ;一 _】,1,11 at h e s i si nc o m p u t e rs o f t w a r ea n d t h e o r y | 1 i i 1ll lll luilll l llll y 18 4 0 7 5 1 s t u d ya n di m p l e m e n t a t i o n o f m e t h o d o l o g y f o r i d e n t i f y i n go p e n s o u r c es o f t w a r e d e p e n d e n c ys a t i s f i a b i l i t y b y l ix u e b i n s u p e r v i s o r :a s s o c i a t ep r o f e s s o rd e n gq i n g x u n o r t h e a s t e r nu n i v e r s i t y j u n e2 0 0 8 广 ,t毒 -r l & - , 独创性声明 本人声明,所呈交的学位论文是在导师的指导下完成的。论文中取得 的研究成果除加以标注和致谢的地方外,不包含其他人己经发表或撰写过 的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工 作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢 意。 学位论文作者签名: 杰学张 日期:2 争硝犀7 彤l ; 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 作者和导师同意网上交流的时间为作者获得学位后: 半年口一年一年半口两年口 学位论文作者签名:委专粥 签字日期:加嘶f j 阳 导师签名:z 甲之锯 签字日期:五一男、- 7 v6 l _ o 1 东北大学硕士学位论文摘要 开源软件依赖可满足性识别方法研究与实现 摘要 随着网络技术的发展,开放源码软件( o p e ns o u r c es o f t w a r e ,o s s ) 项目得到快速 的发展和普及,软件从传统的集中开发模式向分散式发生了转变,使得源码复用程度大 大加强,产生了软件依赖问题。虽然基于开源软件分发系统的软件管理工具在一定程度 上能够简单的识别软件依赖,但是处理复杂的依赖关系仍旧存在不足。另一方面分发端 软件更新频繁,引起依赖关系不稳定,最终导致分发系统不稳定。 本课题基于国家8 6 3 项目:分布式构件库服务平台支撑技术及应用研究( 项目编号: 2 0 0 6 a a 0 1 2 1 9 1 ) ,该项目主要研究软件分发系统技术及其在嵌入式开源软件中的应用。 针对分布式构件库服务平台中的开源软件库和构件库具有与开源软件分发端相似的功 能,本文研究了开源软件分发系统处理软件依赖关系的原理与局限性,提出了在分发端 识别软件依赖可满足性的c n f s a t 解决方法,以提高软件分发系统的稳定性。 本文首先分析了开源分发系统基本原理及开源软件本身的特性,研究了处理软件依 赖可满足性识别策略,重点研究了基于软件包管理技术的软件依赖识别策略,对现有策 略的局限性和不足进行分析。基于上述不足,本文提出了将软件依赖可满足性识别问题 转化为c n f s a t 问题的方法,通过求解c n f s a t 问题,识别软件依赖关系中的冲突。 本文提出了一整套软件依赖可满足性问题向c n f s a t 问题映射的转化规则,最终以高 效的m i n i s a t 算法实现本文所提出的改进方法,实验结果证明本方法能够提高软件依 赖关系识别的效率及分发系统的稳定性,为处理开放源码软件依赖关系提供了高效的解 决方法。本文最后对下一步研究进行了展望。 关键词:开放源码软件;开源系统;软件分发系统;软件依赖;可满足性问题 k l - i i - t 一 j - _ 矗 东北大学硕士学位论文 a b s t r a c t s t u d ya n di m p l e m e n t a t i o no fm e t h o d o l o g yf o r i d e n t i f y i n go p e n so u r c eso f t w a r e d e p e n d e n c ysa t i s f i a b i l i t y a b s t r a c t t h ed e v e l o p m e n to fn e t w o r kt e c h n o l o g yg r e a t l yp r o m o t e dt h ee x p a n s i o na n dp r e v a l e n c e o fo p e ns o u r c es o f t w a r e ( o s s ) ,w h i c he n a b l e st h es h i f to fs o f t w a r ed e v e l o p m e n tf r o mt h e c e n t r a l i z e dm o d et ot h ed i s t r i b u t e dm o d e t h i st r a n s f o r m a t i o ns i g n i f i c a n t l yi m p r o v e ss o u r c e c o d er e u s e ,b u ta l s oi n t r o d u c e ss o f t w a r ed e p e n d e n c yp r o b l e m s a l t h o u g ht h et o o l so fs o f t w a r e m a n a g e m e n ti no p e ns o u r c es o f t w a r ed i s t r i b u t i o ns y s t e m sc a np e r f o r ms i m p l ed e p e n d e n c y i d e n t i f i c a t i o n , t h e r ea r es t i l ln oe f f i c i e n ts o l u t i o n st oc o m p l e xd e p e n d e n c i e s ,a n db e c a u s et h e s o f t w a r e su p d a t ev e r yf a s t ,w h i c hl e a dt oi n s t a b i l i t yo ft h ed e p e n d a n c i e sa n dt h ed i s t r i b u t i o n s y s t e m t h i st h e s i si sb a s e do nn a t i o n a l8 6 3p r o j e c t r e s e a r c ho ns u p p o r t i n gt e c h n i q u e sa n d a p p l i c a t i o n so fad i s t r i b u t e dc o m p o n e n tl i b r a r ys e r v i c ep l a t f o r m ( n o :2 0 0 6 a a 0 1 2 1 9 1 ) ”,t h e r e s e a r c ht h e m e o fw h i c hi st os t u d yt h ea p p l i c a t i o no fs o f t w a r ed i s t r i b u t i o n s y s t e m si n e m b e d d e do p e ns o u r c es o f t w a r ed e v e l o p m e n t a c c o r d i n gt ot h es i m i l a r i t yb e t w e e nt h e f u n c t i o n a l i t i e so fo p e ns o u r c es o f t w a r ed i s t r i b u t i o ns i d ea n dt h ec o m p o n e n tl i b r a r yo ft h e s e r v i c ep l a t f o r m ,t h i st h e s i sf i r s ta n a l y z e st h ep r i n c i p l e sa n dd e f e c t so ft r a d i t i o n a ls o f t w a r e d i s t r i b u t i o ns y s t e m s ,a n dt h e np r e s e n t sac n f s a ts o l u t i o nt oi d e n t i f ys o f t w a r ed e p e n d e n c y s a t i s f i a b i l i t yo nt h ed i s t r i b u t i o ns i d e ,w h i c hc a l lg r e a t l yi m p r o v et h es t a b i l i t yo fs u c hs y s t e m s t h i st h e s i sf i r s ti n t r o d u c e st h ef u n d a m e n t a lp r i n c i p l e so fs o f t w a r ed i s t r i b u t i o ns y s t e m s a n dt h ec h a r a c t e r i s t i c so fo p e ns o u r c es o r w a r e ,a n dt h e ns t u d i e st h es o f t w a r ed e p e n d e n c y p r o b l e m ,e s p e c i a l l yt h ep r o b l e mb a s e do ns 0 1 a r ep a c k a g em a n a g e m e n tt e c h n i q u e s t h e p r o b l e m sa n dl i m i t a t i o n so fc u r r e n ti d e n t i f i c a t i o np o l i c i e sa r ea n a l y z e d b a s e do nt h e s e p r o b l e m s ,w ep r e s e n tan o v e lm e t h o dt o t r a n s l a t e t h es o f t w a r ed e p e n d e n c ys a t i s f i a b i l i t y i d e n t i f i c a t i o np r o b l e mi n t oac n f s a tp r o b l e m ,a n di d e n t i f yt h ed e p e n d e n c yc o n f l i c t sb y s o l v et h es a tp r o b l e m ac o m p r e h e n s i v es e to fm a p p i n gr u l e sa l ep r e s e n t e di nt h i st h e s i sa n d a l le f f i c i e n tm i n i s a ta l g o r i t h mi si m p l e m e n t e dt os o l v et h ep r o b l e m s e x p e r i m e n tr e s u l t s - i i i 东北大学硕士学位论文a b s t r a c t s h o wt h a tt h i ss o l u t i o nc a ni m p r o v et h ei d e n t i f i c a t i o no fs o f t w a r ed e p e n d e n c i e sa n ds t a b i l i t y o ft h es o f t w a r ed i s t r i b u t i o ns y s t e m ,w h i c hi sa ne f f i c i e n ts o l u t i o nt ot h es o f t w a r ed e p e n d e n c y s a t i s f i a b i l i t yi d e n t i f i c a t i o np r o b l e m f u t u r ew o r kt od e e p e nt h er e s e a r c hi sg i v e ni nt h el a s t p a r to ft h i st h e s i s k e yw o r d s :o p e ns o u r c es o l , r a r e ;o p e ns o u r c es y s t e m ;s o f t w a r ed i s t r i b u t i o ns y s t e m ; s o f t w a r ed e p e n d e n c y ;s a t i n 东北大学硕士学位论文 目录 目录 声明i 中文摘要i i 第1 章引言1 1 1 论文研究背景1 1 2 开源软件的软件依赖问题研究现状“2 1 3 本文研究的意义和目的”3 1 4 论文结构4 第2 章开源软件分发系统7 2 1 开源软件及其特点”7 2 2 软件分发系统模型9 2 2 1 分发端”1 1 2 2 2 用户端1 3 2 3 主流软件分发系统1 3 2 3 1a p t a p k g 。1 3 2 3 2y u m r p m ”1 4 2 3 3b s dp o r t s p a c k a g e 1 4 2 3 4p o r t a g e 1 5 2 3 5 四种分发系统的对比,”1 5 2 4 本章小结1 6 第3 章软件依赖可满足性识别策略研究1 7 3 1 软件依赖可满足性定义1 7 3 2 软件依赖关系分类1 8 3 3 导致软件依赖问题严重的原因1 9 3 4 识别软件依赖关系的策略2 0 v 东北大学硕士学位论文目录 3 4 1 基于软件包的识别策略2 0 3 4 2a d h o c 识别策略“2 5 3 4 - 3 基于“分支 的识别策略2 6 3 5 本章小结2 6 第4 章软件依赖可满足性识别改进方法2 7 4 1 改进目标2 7 4 2 软件依赖识别问题模型的转化2 8 4 3 软件依赖识别改进方法的研究3 0 4 3 1 基于图遍历的解决方法3 0 4 3 2 基于s a t 问题的解决方法3 1 4 3 3 改进方法可行性分析3 5 4 4 本章小结3 9 第5 章软件依赖可满足性识别改进方法的实现4 1 5 1 总体模块设计4 1 5 2 元数据预处理模块4 1 5 3 合取范式转化模块4 4 5 4s a t 解析器判断模块4 6 5 4 1 蕴含推理模块4 8 5 4 2 冲突处理模块4 9 5 4 3 决策模块”5 1 5 5 调试与测试5 2 5 5 1 调试结果5 2 5 5 2 测试目标5 2 5 5 3 测试结果及分析。5 3 5 6 本章小结5 5 第6 章结论与展望5 7 6 1 结论”5 7 6 2 未来工作及展望5 7 一v i 1 东北大学硕士学位论文目录 参考文献5 9 至炙诩j 6 1 攻读硕士期间参加的项目_ 。6 3 v i i 东北大学硕士学位论文第1 章引言 1 1 论文研究背景 第1 章引言 近年来,随着网络技术的发展,开放源码软件( o p e ns o u r c es o f i w e a r e ,o s s ) 项 目得到快速的发展和普及,使软件从传统的集中开发模式向分散式发生了转变。一些大 型软件( 如m o z i l l a 浏览器) 也以开源的方式由分布在各地的小组协同开发。同时,得益 开源软件项目代码的开源和重用【l 】,更多组织和个人得以参与软件的开发与发布。这使 得开源系统下可用软件的种类和数量急剧增加1 2 】,这些软件在功能上相互依赖,但又基 于各自特定的开发语言和组件模型,版本更新频繁,物理上分散在互联网各处。这一现 象和变化趋势增大了软件从开发到用户最终正常获取、安装和使用该软件的难度和复杂 度,为软件管理技术提出了新的挑战1 3 j 。 软件管理目前普遍采用软件分发系统进行管理,软件分发系统一般分为软件分发端 和用户端两个基本部分,包含数量巨大的开源软件,具有统一管理软件,支持集群技术 等功能。i a nm u r d o c k 曾经评论说软件分发系统是“l i n u x 给实际工业应用的最大贡献 , 因为它大大的缩短了操作系统和实际应用的距离,当今软件分发系统已经被普遍的应用 在商业领域和开源领域中。目前在开源软件分发系统中的研究主要集中在三个方面1 4 j : ( 1 ) 向上跟踪( u p s t r e a mt r a c k i n g ) 。确保在分发系统中的软件包保持与软件包提 供者相似的开发环境。 ( 2 ) 测试和整合( t e s t i n ga n di n t e g r a t i o n ) 。确保软件能够在和现有的软件分发系 统中其他的软件包共存时,能够达到应有的效果。如果不能保持原有的软件的执行效果, 那么发送b u g 报告给开发者。 ( 3 ) 依赖管理( d e p e n d e n c ym a n a g e m e n t ) 。确保在软件分发系统中软件能够被用 户正常安装、更新,主要是维护依赖的描述信息元数据【5 】( m e t a d a t a ) 。 软件依赖【6 】指软件之间由于复用技术产生的软件之间的一种相互关系,在软件工程 中,依赖是比较常见的。但是由于l i n u x 等开源系统的开源特性,软件的复用程度很高, 这导致依赖的层次很深并且很复杂,因此产生了“软件依赖灾难( d e p e n d e n c yh e l l ) 一, 这是指软件依赖达到了用户不可忍受的地步,甚至导致整个操作系统都不能正常运行。 主要表现在以下几点: ( 1 ) 繁多的依赖:个软件依赖繁多的库函数,导致需要太久的下载时间,大量 的磁盘空间。尤其当某个软件很小,但是却需要很大的软件库,例如某个j a v a 语言编写 一1 东北大学硕士学位论文 第1 章引言 的程序,往往需要j a v a 虚拟机作为运行的平台。另外对于用户来说,追踪层层递进的软 件依赖也是极其繁琐的。 ( 2 ) 过长的依赖链:这点表现在应用软件依赖许多的l i b 库。如软件a p p 依赖l i b a , 而l i b a 依赖l i c 等等形成一个比较长的依赖链。这和上面提到的繁多的依赖并不同,这 个主要表现在依赖的线性化,层次很深。在大型的项目中表现的最明显,如o p e n o f f i c e 这个类似w i n d o w so f f i c e 的工具需要依赖层次深达1 2 的依赖链。 ( 3 ) 循环依赖:如果版本为v 1 的软件a p p x 依赖a p p 2 ,而a p p 2 依赖a p p 3 ,a p p 3 依赖a p p 4 ,最终a p p 4 却依赖版本为v 2 的a p p x ,那么,这样的依赖关系就称为循环依 赖。像这样的关系并不少见,因为在l i n u x 这样开源系统中,软件的更新速度很快,同 一软件往往有很多版本,而且项目往往不是同一个组织开发的,往往在版本控制上缺乏 统一组织,因此他们发布的软件往往导致这种循环依赖。 另一方面由于开源软件的开源特性,开源软件分发系统分发端从开源社区中搜集得 到的开源软件及其组件更新频繁,并且开源社区提供了大量存在缺陷的软件,这一现象 导致软件依赖关系变得不稳定。由于上述原因,最终导致软件分发系统不稳定,加大了 软件分发系统维护软件依赖的难度。 1 2 开源软件的软件依赖问题研究现状 当今解决软件依赖问题主要使用软件分发系统,基于软件包( p a c k a g e ) 并依靠软 件分发系统的客户端管理工具来实现。现有的客户端包管理工具依靠读取软件包对应的 元数据信息,在安装软件的过程中,进行依赖关系的识别。这些工具处理软件依赖问题 只能依靠识别软件之间的依赖关系,尽量避免因为软件依赖问题导致软件安装时出现的 错误,无法删除软件依赖问题的。 目前已经开发了很多优秀的包管理软件 7 1 如r e a d h a t 的r p m ,d e b i a n 的d p k 等等。 具体如下: ( 1 ) d e b i a n 的d p k g 。其对应的软件包是使用a t 工具对软件和配置文件依据d e b 格 式进行的压缩,利用d p k g 工具读取元数据的依赖描述信息,实现依赖的识别。 ( 2 ) r e d h a t 的r p m 。它是由美国d u k e 大学l i n u x 小组开发的,其软件包是通过制 作s p e c 文件得到的,除了包含依赖信息以外还包含了一些s h e l l 命令,方便用户的安装。 ( 3 ) g e n t o o 的e m e r g e 工具。它的软件包称作e b u i l d 文件,各个软件包按照性质相 似性以树的形式归类存放。 另外在软件分发端,主要采用a d h o c 查询技术维护软件的依赖关系,a d h o c 查询技 2 东北大学硕士学位论文第1 章引言 术给维护人员提供了比较友好的查询界面,维护人员软件及其依赖关系存入数据库,通 过s q l 语句进行依赖关系的查询与维护。 1 3 本文研究的意义和目的 在商业应用中,l i n u x 为代表的开源操作系统在实际商业应用占据很大比重,具美 国产业工会联合会( c i o ) 调查显示,6 4 的企业选用了开源平台作为他们的企业计算 机集群环境的首选平台【9 j ,目前分布式网络环境下,普遍使用软件分发系统解决软件依 赖等工作,而且更加依赖软件分发端的管理功能,期望拥有功能强大的软件分发端。因 此研究软件分发系统有很大的实际意义。 此外我国也投入了大量科研经费研究开源软件分发系统的实际应用,本文是国家 8 6 3 项目:分布式构件库服务平台支撑技术及应用研究的一部分,图1 1 是此项目的整 体架构示意图。 r - 域l q i 局域网 质量平台工具库 构件库 i 一 l 图1 1 分布式构件库服务平台 f i g 1 1d i s t r i b u e dc o m p o n e n ts e r v i c ep l a t f o r m 其中构件库管理系统是对构件库进行统一管理和控制的系统,是软件资源管理与服 务的基础设施,此系统是基于软件分发系统原理开发的,构件库管理系统中管理大量的 构件和源码,目的是面向中小软件企业提供对于软件开发过程中具有很大参考价值的开 放源代码软件资源,从正面促进软件的复用,帮助企业提高开发效率、降低开发成本、 缩短项目的开发周期,通过对可复用构件的分类、管理、存储和检索,为面向复用和基 3 - 东北大学硕士学位论文第1 章引言 于复用的软件开发过程提供全面的支持。在上述的构件库管理系统中,由于存在大量的 第三方软件,同样存在软件依赖管理的问题。 在目前的软件分发系统中,采用元数据( m e t a d a t a ) 描述数量巨大、关系复杂的开 源软件之间的依赖关系,因此元数据在整个分发系统中占据基础地位,直接影响着软件 依赖关系的稳定性,同样影响着软件分发系统的稳定性。元数据的维护工作由分发系统 的分发端依靠系统维护人员利用a d h o e 工具完成半自动化的管理,这点不仅导致维护软 件分发系统的效率很低,而且导致维护软件依赖关系时安全性不高,最终影响分发系统 的稳定性。因此在软件分发系统分发端急需能够高效安全的维护软件依赖关系的方法。 另一方面,由于开源软件本身更新频繁,并且发布的软件很多来自第三方,这些软 件在安全性方面存在某些缺陷,这两点导致与之有依赖关系的软件同样变得不稳定,最 终造成了现有软件分发系统中软件依赖关系不稳定性。软件分发系统的客户端工具只能 机械的读取软件包的元数据信息,从中辨别软件的依赖关系,一旦分发端发布的软件元 数据对依赖关系进行了错误的描述,那么客户端的管理软件将不能正确识别软件依赖关 系。上述原因同样导致了软件分发系统在管理软件依赖时的不稳定。 因此,本文提出了识别软件分发系统中软件是否符合依赖可满足性问题的改进方 法,这个方法针对软件分发端的软件依赖管理进行改进,不仅识别软件依赖是否满足, 而且能判断元数据信息不一致导致的软件依赖错误,增强软件分发系统的稳定性,提高 分发系统分发端维护软件依赖的自动化程度,并为增强分布式构件库服务平台的软件管 理功能及其稳定性打下基础。因为判断软件依赖可满足性问题是n p 问题【8 j ,本文提出 将软件依赖可满足性转化为c n f s a t 的解决方法,在具体方法实现中,利用解决 c n f s a t 问题的高效算法,实现改进方法,加快软件依赖可满足性识别过程的执行效 率。 1 4 论文结构 本论文介绍了开源操作系统及其软件分发系统原理,并且研究了现有软件分发系统 的软件依赖管理策略,针对现有软件分发系统在识别软件依赖可满足性方面的不足,本 文研究了软件依赖可满足性的特性,利用规约推导证明识别软件依赖可满足性可以转化 为c n f s a t 问题,而且识别依赖可满足性问题是n p 完全问题,在本文中给出了一套向 c n f s a t 映射的规则,在此基础上利用解决c n f s a t 问题的m i n i s a t 算法,在d e b i a n 操作系统上实现了本论文提出的改进方法,并测试验证了该方法的有效性。 本论文的内容安排如下: 4 东北大学硕士学位论文第1 章引言 第一章为引言,介绍了本论文的研究动机和背景,分析了现有开源系统中软件分发 技术的研究意义,研究了当今软件分发系统在处理软件依赖方面存在的不足,最后阐述 了本论文的改进方法。 第二章主要研究了目前开源软件分发系统的基本原理和模型,重点分析了现有开源 系统中的主流软件分发系统。 第三章研究了开源软件分发系统管理软件依赖的策略,重点研究了基于软件包识别 并管理依赖的策略,为本文提出软件依赖管理的改进方法提供了理论依据。 第四章提出本文的改进方法,利用归约法证明了软件依赖识别问题与c n f s a t 问题 的等价性,描述了将原问题转化为c n f s a t 问题规则,研究了改进方法的可行性。 第五章在d e b i a n 系统上设计并实现了本文提出的改进方法,详细介绍了如何将 d e b i a n 元数据的依赖信息转换为c n f ,以及如何实现m i n i s a t 算法完成依赖可满足性问 题的判断,最后对改进方法进行了测试。 第六章为总结与展望,对论文的研究内容以及研究过程中遇到的问题作了总结,对 未来的研究工作做了展望。 一。 - 5 - 东北大学硕士学位论文第1 章引言 6 东北大学硕士学位论文 第2 章开源软件分发系统 第2 章开源软件分发系统 开源软件分发系统是解决软件依赖的基本平台,因此有必要首先了解一下软件分发 系统及其工作原理。因此本章将要首先分析开源软件及其特点,接着重点研究了与其相 适应的软件分发系统,从中可以分析出开源系统中软件分发系统的特点,最后分析了目 前开源系统中常用的软件分发系统,从中可以了解具体的软件分发系统。 2 1 开源软件及其特点 开源系统( o p e ns o u r c es y s t e m ) 指能够在不同体系结构计算机软硬件之间提供沟 通方便,便于移植以及开放的源代码的系统【1 0 1 。它包括开放的操作系统平台以及在这个 平台上运行的开放源代码的程序。 开放系统最早出现在上世纪8 0 年代,那时是基于u n i x 操作系统,在u n i x 系统 中为程序提供了标准的接口,试图建立与第三方软件、硬件兼容性良好的环境。在1 9 8 4 年r i c h a r ds t a l l m a n 建立了自由软件基金( f r e es o f t w a r ef o u n d a t i o n ) ,目的在于更好的 推进与u n i x 兼容的软件开发。对于“f r e e ”并不代表这些软件就是免费的意思,而是 用户可以在他们的自己的权利范围内自由的使用、复制、修改并且发布。这项运动起初 在学术研究领域被广泛的接受,但是在后来由于太多的商业因素而与初衷有所改变。 后来o s s ( o p e ns o u r c es o f l r w a r e ) 真正的继承了开源软件系统的初衷,并且发展 的很强大。我们在本文中也认为现在开源系统是指o s s 。在o s s 中,遵循一些共同的 约定: ( 1 ) 用户可以在他们认为合适的情况下自由的使用软件。 ( 2 ) 用户可以自由的研究程序中的内容并且按照他们自己的需要修改代码内容, 当然前提是源代码必须公开。 ( 3 ) 用户可以自由的发布他们修改过的程序源代码。 ( 4 ) 用户可以自由的与其他人分享软件及其源代码。 虽然用户可以自由的使用软件及其源代码,但是首先必须要在遵守许可( l i c e n s e ) 的前提下。开源系统软件许可( l i c e n s e ) 的目的是保护软件源码的自由和用户的权利。 因为在o s s 中也有许多的商业软件,所以在o s s 中存在许多的许可,常见的有g p l ( g e n e r a lp u b l i cl i c e n s e ) 、g n u ( g e n e r a lp u b l i cl i c e n s e ) 以及b s d ( b e r k e l e ys o f t w a r e d i s t r i b u t i o nl i c e n s e ) ,每一个许可代表了不同开放源码社区的标准。例如l i n u x 就是在 - 7 - 东北大学硕士学位论文 第2 章开源软件分发系统 遵循g n u 许可的。在开源系统中,将许可分为两个类别【9 】:“c o p y l e f i 和“n o n e c o p y l e f i 。 所谓的“c o p y l e i l ”指在o s s 中的软件开发者必须保证最终的用户可以自由的使用 软件和修改所发布软件,这点明确的要求不允许在最终的用户使用上添加任何多余的限 制,这大大加快了开源系统的发展步伐。最常见的许可是g n u ( g e n e r a lp u b l i cl i c e n s e ) 。 “n o n e c o p y l e f i ”许可,允许用户使用、修改和发布开源的软件,但是必须在对应 的许可范围内应用。这点是为了满足开发者的需要,允许添加自己规定的某些特殊的许 可。 开源系统的开源性导致了开源软件的一些特点: ( 1 ) 开源项目包括开源系统本身具有明显的动态性和快速开发性。一方面,开源 项目的b u g 修正和新功能的添加在不断的迭代进行,其版本呈持续上升变化的状态。大 多数开源项目会非常迅速的推出新的版本,这个过程是开源社区推动的,当然有些也是 商业化的公司参与的。对于一个商业操作系统所专有软件对应的新版本,进入市场通常 需要花费1 2 到1 8 个月的时间,而开源软件则可能没到几个月就能看到几个不同的版本 升级。 ( 2 ) 开源软件的依赖性。由于开源项目往往是作为一个社区的人员自发的组织的 在一起的,通常在开发团队之间进行讨论和交流。这样分布在不同地域的人们往往需要 以软件工程的思想来统一指导工作。人们不仅需要在信息上相瓦依赖,并且在开发的软 件的代码上也是相互依赖。因为在开源社区,特别是l i n u x 开源系统强调并促进了软件 重用 1 】,重用不仅限于项目内部,更广泛的发生在项目之间。 ( 3 ) 软件缺陷较多。系统的快速升级和项目开发中的重用技术是个双刃剑,不仅 带来了开发效率的提高,同样也带来了一些弊端。在当前的开源社区中,不断更新的软 件版版,使得新的软件不可在原有的l i b 库中使用,而且软件和软件之间、软件和系统 之间的关系复杂,如果简单的升级基础的l i b 库,将会导致现有的许多软件不可使用。 较商业软件而言,开源项目的分散开发与松散的组织进一步的加大了项目之间的动态的 依赖关系的处理难度。文献 2 】对s o u r c e f o r g e ( 目前最大的开源项目存放站点) 的研究 表明,开源项目在操作系统、l i c e n s e 、实现语言和开发状态上都存在很大差异。著名的 开源项目b u g 提交的数量很高,特别是g a i m 、p y t h o n 等。图2 1 给出了对于s o u r c e f o r g e 这个最大开源软件网站的软件b u g 数量的统计图【2 】。在开发中,项目免不了有b u g ,但 是由于开源社区的庞大,这些问题变得更加突出。在全部的项目中至少有1 4 4 7 5 个项目 存在b u g ,占据了全部软件项目总数的1 6 。平均情况下,每一个软件都有至少一次有 关b u g 报告被提交。 - 8 - 东北大学硕士学位论文 第2 章开源软件分发系统 王0 0 0 0 6 0 0 0 4 0 0 0 o 图2 1s o u r c e f o r g e 网站软件b u g 数量统计图 f i g 2 1t h es t a t i s t i c sc h a r to fs o f t w a r eb u gn u m b e ri ns o u r c e f o r g ew e b 以上介绍的开源系统的特点导致了对应平台下软件分发系统本身的一些特点。下面 苗j 本文会详细的介绍开源平台中对应的软件分发模型。 2 2 软件分发系统模型 在l i n u x 这类开源操作系统中,可供使用的开源软件数量巨大。传统的软件安装需 要经过源代码获取( f e t c h ) 、解压缩( e x t r a c t ) 、配置( c o n f i g u r e ) 、编译( m a k e ) 、 安装( m a k ei n s t a l l ) 等步骤,用户需要自行解决满足软件的安装条件( 如编译环境和依 赖关系) ,才能使软件在当前系统上顺利编译和安装。为了减轻用户的负担,当前的 l i n u x 等开源平台的某些发行版本基于软件包技术,提供了具有一定的软件管理功能的 软件分发系统。 现有的软件分发系统一般具有如下功能: ( 1 ) 统一管理软件资源。可以管理分布式系统中的各个客户端的软件资源,甚至 还可以针对客户端,对软件的软件安装状态进行管理。 ( 2 ) 支持集群系统。可以将管理系统和代理系统搭建在集群系统的服务器上,从 而可以构筑一个具有高可用性的软件分发系统。 ( 3 ) 消减软件资源的维护费用。可以在无需人工干预的情况下将软件资源分发到 各个客户端计算机上,并大幅的消减维护的工作量。 9 东北大学硕士学位论文第2 章开源软件分发系统 此外开源系统的软件分发系统有以下几点独有的功能: ( 1 )实时更新。由于开源操作系统的开源性,软件更新速度很快,因此有必要保 证在分发端的软件是当前最新的版本,这需要软件的开发者主动地向软件分发库中添 加。 ( 2 ) 软件依赖管理。当今的软件开发过程中普遍采用动态共享库和软件复用技术, 在这样的系统中,不同的软件需要不同版本的联接库,因此也产生了所谓的“依赖灾难 ( d e p e n d e n c yh e l l ) ”,在微软的w i n d o w s 系统中,这个被称作“d l l 灾难( d l lh e l l ) 。 确保软件能被正确的安装,能够正确地解决软件的依赖关系因此成为软件分发系统必须 解决的难题。目前某些系统能够依靠软件管理工具读取软件包中元数据的信息,判断软 件可安装性。 开源系统下的软件分发系统从上世纪9 0 年代首次出现,它的雏形是j o r d a nh u b b a r d 为f r e e b s d 开发的p o r t s 系统【1 1 1 。之后十几年,在l i n u x 开发者的共同努力下,开发了 许多优秀的软件分发系统,这些系统有的是支持源代码级别的软件分发,有的是支持二 进制级别的软件的分发,但是它们的基本模型大概是相似的。下面将要介绍在软件分发 系统中共有的基础部分,使得我们在整体上对现有的软件分发系统有所了解。 正如图2 2 所示,一般的软件分发系统是基于c s 模式,分发端与客户端通过网络 进行通信,支持分布式集群。软件分发系统主要包括的基本模块有: ( 1 ) 软件分发端,这部分的功能是负责以文件数据库的形式保存软件包,也就是 图2 2 所示的软件分发池,并接受来自分发系统的客户端的请求。它的特点是能够存储 大量的软件,并且分类清晰,此外在这端软件更新速度也很快。 ( 2 )客户端,负责根据用户的要求向软件分发端发起请求,从软件分发池中下载 软件包,根据其中的元数据进行相应的的操作,它主要负责软件在在用户端的管理。 1 0 东北大学硕士学位论文 笫2 章开源软件分发系统 开发者 1 一一+ 一一。一1 2 2 1 分发端 图2 2 开源软件分发系统模型 f i g 2 2m o d e lo fo p e ns o u r c es o t t w a r ed i s t r i b u t i o ns y s t e m 软件分发系统的分发端存放着可以提供给用户使用的软件。在l i n u x 系统下的软件 分发端一般是针对某个版本,针对自身平台的特点有专门的维护人员导入更新开源项目 源码,最终将生成的软件包以体系结构、版本号等标志存放到存储集合中。分发端是连 接开源软件项目到平台终端用户的桥梁,通过网络向外提供软件包信息获取和下载服 务。软件分发系统在分发端更多的考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 21759-2025化学品慢性毒性试验方法
- 2025年合肥庐江县绣溪城市服务有限公司招聘2人考前自测高频考点模拟试题及答案详解参考
- 2025广东佛山市顺德区公办中小学招聘教师92人(编制)考前自测高频考点模拟试题及一套完整答案详解
- 2025湖南永州市零陵区第二批公开引进急需紧缺专业人才(医疗岗9人)模拟试卷及答案详解参考
- 安全培训教师含义课件
- 2025年后链轮项目合作计划书
- 2025江西南昌市青山湖区招聘社区工作者(专职网格员)45人模拟试卷及答案详解一套
- Indazole-Standard-生命科学试剂-MCE
- IID432-生命科学试剂-MCE
- H-PEG6-VH4127-NH2-生命科学试剂-MCE
- 预包装食品标签审核表
- 如意金黄散的临床疗效与安全性评估
- 《旅游政策与法律法规》课件-项目一 任务1-4知识点10-关于以标准化促进餐饮节约反对餐饮浪费
- 《中国诗词大会》必背经典古诗词100首
- 第5课《用发展的观点看问题》第1框《世界是永恒发展的》-【中职专用】《哲学与人生》同步课堂课件
- 垃圾渗滤液处理调试方案
- 加利福尼亚批判性思维技能测试后测试卷班附有答案
- 武汉龙泉社区规划方案
- 2024年罗非鱼行业分析报告及未来发展趋势
- 钢丝绳吊装时最大允许吊装重物对应表
- XX医院DRG绩效分配方案
评论
0/150
提交评论