一种unix操作系统中逆向查找包被依赖的方法

文档序号:6600169阅读:145来源:国知局
专利名称:一种unix操作系统中逆向查找包被依赖的方法
技术领域
本发明是一种在类unix操作系统里面查找包和包相互依赖,查找包被依赖的技 术。具体描述为在系统的包库环境下,根据包的特殊描述文件,分析包的组织结构,在包库 组成的有限图集里按照一定的算法查找包被依赖的方法。
背景技术
随着solaris系统的普及程度不断加深,使用和开发solaris的群体越来越大, 应用范围和研究也多元化。系统开发和使用过程中经常会遇到一些情况1)用户删除了某 包之后,导致其他的功能不能运行,提示系统缺少某个库文件或者连接文件,但是删除它之 前,又不能清晰的找出哪些功能包依赖它;2)系统过于庞大,系统运行相当耗费软硬件资 源,某方面的应用,系统性能不佳;3)对于一个开发者或者普通使用者,过于复杂的开发环 境或者很多娱乐等功能都是不需要的;4)从事系统裁减方面的开发者对包的多少和大小 会非常在意,他们非常关心的是,一个不需要的包能否最终从操作系统中删除;5)开发过 程中,新安装的某个关键的脚本程序不能运行。这种情况不管是lirmx的系统还是unix系 统都存在。Linux下的rpm工具,只能知道某个文件包依赖其他哪些包;在删除包的时候会不 断提示它被其他包依赖。也就是A包被B、C包文件依赖,如果需要删除应用包A,需要首先 删除B、C之后再删除A包。Unix下的pkg工具也是如此。两种包管理工具都面临同一个问 题删除这个包的时候,可能会提示还有其他的包依赖这个包。不断手动删除依赖它的包。 非常耗费精力,效率非常低,而且不能保证系统删除之后,功能的完整性。本专利通过系统的包库和包本身的基本特性,可以理顺系统中包的相互关系,可 以查看包在系统中被其他哪些包所依赖。方便用户和开发者对包有一个整理把握,轻松的 定制化系统。

发明内容
本发明是利用系统上现有的包库基础,通过对系统中包的组织结构分析,在有限 图集的基础上循环遍历所有包。理顺包和包之间的关系,查找到包之间的系统依赖和被依 赖的关系。在包仓库IPS的基础上,查找同一个版本中所有包的相互依赖关系,根据包的 依赖关系,有效的对系统进行轻松的定制化工作,整个包的逆向查找包括1)包仓库技术 IPS, 2)包组织技术,3)逆向查找包的方法,其中1)包仓库技术IPS,是包管理技术中的重要部分,它将所有的功能包按照一定的 规则组织起来,按照发布版本,组成一个集合;发布到网上服务器,供所有的开发者和应用 者使用,客户端装有相应的客户端工具,用户通过网络访问IPS,进行一些操作,包括包的安 装,卸载,升级,查看包的描述特性,特性包含包安装到哪个目录,安装后的名称,需要系统 的哪些依赖文件;2)包组织技术,opensolaris下包是以文件夹的方式组织起来的所有的功能文件和描述文件都在同一个文件目录下,文件目录名称也就是包的名称,这是包组织结构的 特点,文件夹下面包含包功能的二进制文件,源码文件,描述文件信息;3)逆向查找方法,利用包的组织结构特殊性,并且利用包在一个版本的IPS系统中的集合性,找到系统中的功能包被其他哪些包依赖,包的描述文件中的关键描述词记录 着包的依赖特性,通过逆向遍历描述集,记录包的依赖关系。具体步骤内容如下1)包在系统框架下组成一个有限集合,集合中的元素有的是单个个体,有的是一 个有限的单向连通图集,通过这些图集可达性,找到集合里面所有的包相互关系;2)包是以文件夹的方式组织的,文件夹名称就是包名,文件夹下面有包的功能文 件,这些文件是以它本身的哈希值作为文件名,鉴于哈希值的唯一性特点,以哈希值命名的 文件在整个系统中唯一性,最重要的一个文件就是manifest文件,它的功能类似于linux 系统下rpm包组织方式的.SPEC文件,Manifest除了负责包下各个文件的安装路径,权限, 安装后名称,包功能描述外,还有一个重要的作用就是,它记录安装这个包所需要的依赖 包,一两个或十几个,也就是说,安装这个包,包管理工具自动会检测系统是否已经安装了 这些包文件,有,则系统会正常的安装这个包,没有,则首先安装这些包;3)根据包描述文件manifest中的记录,逆向查找包的过程主要为a)先将所有包的manifest存放在一个以包名为目录的文件夹下面;b)所有这些包又放在同一个父目录下,这样方便后期查找;c)通过关键词查找每个包A下的依赖包,将依赖包记录在一个临时文件中,临时 文件中每一行代表一个依赖包,依次表示为Bl,B2, B3……;d)读取这个临时文件每一行,即包Bl……,将原始包名A输入到以这个包B1为文 件名的文件中保存起来,或者使用数据库记录;e)遍历整个包库集,用F_B1表示保存的文件,这样?_81文件中每一行A1,A2…都 是遍历过程中,A1依赖B1所记录进来的,保证整个系统中不会遗漏包和多包现象;f)依赖包中选择任意变量A1,遍历数据库所有的文件,读取A1每一行作为一个变 量B1,再打开这个变量B1的文件,读取该文件B1的所有信息,并记录到原始变量A1中,这 样能保证所有的文件都查询到所有的依赖,而不是只有一级依赖。opensolaris系统下采用PKG的管理包,它的包仓库称为IPS,它集合了所有的 opensolaris可能用到的功能包,有些是必须的,有些是核心的,有些是可选的,在IPS里 面,所有的包按照一定的格式陈列在服务器上,用户和开发者访问opensolaris的官方 IPS,或在本地或者局域网做一个官方的镜像,Linux下的包仓库采用的是yum-update或者 APT技术,基本功能跟IPS相似。4.根据权利要求1所述的方法,其特征在于每个功能包的所有文件都在同一个文 件夹下面,不会有第二级目录,这样组织便于开发者和用户迅速查找,每个功能包下的一个 特殊文件都记录了本功能包依赖系统中的零个或者1个以上的其他功能包,这样,在整个 IPS包库框架下,所有的包组成一个有限路径的可连通的图集,也就是所有的包的依赖性都 是可查找的,LINUX下的.Spec文件具有同样的功能。包在一个图集的环境下找到所有包的依赖和被依赖的关系,对包进行删除的时 候,能够轻松的知道删除它对系统功能的影响,很快捷的定制化操作系统。
本发明的优异效果是主要适用于opensolaris包管理,对Iinux下的rpm包管 理,ubuntu下的apt包管理也同样适用。不管是Iinux的rpm、apt管理工具还是unix下的pkg包管理工具,都有类似的包 管理工具和包库技术。采用类似的方法,可以使得系统的使用更加方便。


附图1包图集的逻辑关系和包依赖关系;附图2包文件的组织结构;附图3查找包被依赖的流程图。
具体实施例方式下面参照附图1,2和3,对本发明的内容以一个具体实例来描述实现这一体系结 构的过程。正如发明里面所描述的一样,操作系统中,包管理工具的数据库记录着所有包, 它们被集合在一个特定的地方,如图1所示。每个包本身是由一定数量的包文件组成,他们 被记录在一个特定的描述文件manifest中,manifest也在当前包目录下。一般的包的组 织结构如图2所示。各种包的组织根据包的功能不一样,依赖关系也不一样。有的包不被其他包依赖, 也不依赖其他包,如图1中的P包;有的包除了被其他包依赖外,还依赖另外的其他包,如图 1中的B、C包;有的包只依赖其他包,如图1中的D、E等;有的包只被其他包依赖,如图1中 的A,X ;还有更复杂的是,几个包组成一个闭合集等等。图1是描述包和包之间的相互关系 的示意图。利用包库技术(图1)和包的组织技术(图2),在包库的基础上,提取所有包的描 述文件到对应的包文件目录下,称父目录为描述文件集。如图3所示,在包库基础上创建对 应的包文件或者包的表格,这里称表格集为依赖包集。选取表格中任意一个文件名作为遍 历变量,在描述文件集中进行关键词逆向匹配,查找。每匹配一个,就将描述文件集的包名 记录到这个遍历变量的依赖数据库表中,这样遍历完所有的描述集之后,依赖包中所有文 件的一级依赖都已查询完毕。从依赖包集中选取任意变量,在本集合中进行关键词匹配,如 果找到,说明这个变量存在二级依赖或者更多级别的依赖。需要将它的依赖的文件,都记录 到本变量的表格中。如此循环,可以将依赖集中的所有文件进行深入、全面查找。利用包库技术,能方便的找到库文件或者SO文件来源于哪个包;逆向算法实现之 后,可以轻松的找到包被哪些包依赖,轻松定制化系统,使系统能提供更高效、更专业的服 务。
权利要求
一种unix操作系统中逆向查找包被依赖的方法,其特征在于,在包仓库IPS的基础上,查找同一个版本中所有包的相互依赖关系,根据包的依赖关系,有效的对系统进行轻松的定制化工作,整个包的逆向查找包括1)包仓库技术IPS,2)包组织技术,3)逆向查找包的方法,其中1)包仓库技术IPS,是包管理技术中的重要部分,它将所有的功能包按照一定的规则组织起来,按照发布版本,组成一个集合;发布到网上服务器,供所有的开发者和应用者使用,客户端装有相应的客户端工具,用户通过网络访问IPS,进行一些操作,包括包的安装,卸载,升级,查看包的描述特性,特性包含包安装到哪个目录,安装后的名称,需要系统的哪些依赖文件;2)包组织技术,opensolaris下包是以文件夹的方式组织起来的所有的功能文件和描述文件都在同一个文件目录下,文件目录名称也就是包的名称,这是包组织结构的特点,文件夹下面包含包功能的二进制文件,源码文件,描述文件信息;3)逆向查找方法,利用包的组织结构特殊性,并且利用包在一个版本的IPS系统中的集合性,找到系统中的功能包被其他哪些包依赖,包的描述文件中的关键描述词记录着包的依赖特性,通过逆向遍历描述集,记录包的依赖关系。
2.根据权利要求1所述的方法,其特征在于,具体内容和步骤为1)包在系统框架下组成一个有限集合,集合中的元素有的是单个个体,有的是一个有 限的单向连通图集,通过这些图集可达性,找到集合里面所有的包相互关系;2)包是以文件夹的方式组织的,文件夹名称就是包名,文件夹下面有包的功能文件,这 些文件是以它本身的哈希值作为文件名,鉴于哈希值的唯一性特点,以哈希值命名的文件 在整个系统中唯一性,最重要的一个文件就是manifest文件,它的功能类似于linux系统 下rpm包组织方式的.SPEC文件,Manifest除了负责包下各个文件的安装路径,权限,安装 后名称,包功能描述外,还有一个重要的作用就是,它记录安装这个包所需要的依赖包,一 两个或十几个,也就是说,安装这个包,包管理工具自动会检测系统是否已经安装了这些包 文件,有,则系统会正常的安装这个包,没有,则首先安装这些包;3)根据包描述文件manifest中的记录,逆向查找包的过程主要为a)先将所有包的manifest存放在一个以包名为目录的文件夹下面;b)所有这些包又放在同一个父目录下,这样方便后期查找;c)通过关键词查找每个包A下的依赖包,将依赖包记录在一个临时文件中,临时文件 中每一行代表一个依赖包,依次表示为Bl,B2, B3……;d)读取这个临时文件每一行,即包B1……,将原始包名A输入到以这个包B1为文件名 的文件中保存起来,或者使用数据库记录;e)遍历整个包库集,用F_B1表示保存的文件,这样F_B1文件中每一行A1,A2…都是遍 历过程中,A1依赖B1所记录进来的,保证整个系统中不会遗漏包和多包现象;f)依赖包中选择任意变量A1,遍历数据库所有的文件,读取A1每一行作为一个变量 B1,再打开这个变量B1的文件,读取该文件B1的所有信息,并记录到原始变量A1中,这样 能保证所有的文件都查询到所有的依赖,而不是只有一级依赖。
3.根据权利要求1所述的方法,其特征在于,opensolaris系统下采用PKG的管理包, 它的包仓库称为IPS,它集合了所有的opensolaris可能用到的功能包,有些是必须的,有些是核心的,有些是可选的,在IPS里面,所有的包按照一定的格式陈列在服务器上,用户 和开发者访问opensolaris的官方IPS,或在本地或者局域网做一个官方的镜像,Linux下 的包仓库采用的是yum-update或者APT技术,基本功能跟IPS相似。
4.根据权利要求1所述的方法,其特征在于每个功能包的所有文件都在同一个文件夹 下面,不会有第二级目录,这样组织便于开发者和用户迅速查找,每个功能包下的一个特殊 文件都记录了本功能包依赖系统中的零个或者1个以上的其他功能包,这样,在整个IPS包 库框架下,所有的包组成一个有限路径的可连通的图集,也就是所有的包的依赖性都是可 查找的,LINUX下的.Spec文件具有同样的功能。
5.根据权利要求1所述的方法,其特征在于包在一个图集的环境下找到所有包的依赖 和被依赖的关系,对包进行删除的时候,能够轻松的知道删除它对系统功能的影响,很快捷 的定制化操作系统。
6.根据权利要求1所述的方法,其特征在于主要适用于opensolaris包管理,对linux 下的rpm包管理,ubuntu下的apt包管理也同样适用。
全文摘要
本发明提供一种unix操作系统中逆向查找包被依赖的方法,在包仓库IPS的基础上,查找同一个版本中所有包的相互依赖关系,根据包的依赖关系,有效的对系统进行轻松的定制化工作,整个包的逆向查找包括1)包仓库技术IPS,2)包组织技术,3)逆向查找包的方法,其中1)包仓库技术IPS,是包管理技术中的重要部分,它将所有的功能包按照一定的规则组织起来,按照发布版本,组成一个集合;发布到网上服务器,供所有的开发者和应用者使用,客户端装有相应的客户端工具,用户通过网络访问IPS,进行一些操作,包括包的安装,卸载,升级,查看包的描述特性,特性包含包安装到哪个目录,安装后的名称,需要系统的哪些依赖文件。
文档编号G06F17/30GK101826103SQ201010139190
公开日2010年9月8日 申请日期2010年4月6日 优先权日2010年4月6日
发明者李开君 申请人:山东高效能服务器和存储研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1