首页> 中国专利> 一种unix操作系统中逆向查找包被依赖的方法

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

摘要

本发明提供一种unix操作系统中逆向查找包被依赖的方法,在包仓库IPS的基础上,查找同一个版本中所有包的相互依赖关系,根据包的依赖关系,有效的对系统进行轻松的定制化工作,整个包的逆向查找包括:1)包仓库技术IPS,2)包组织技术,3)逆向查找包的方法,其中:1)包仓库技术IPS,是包管理技术中的重要部分,它将所有的功能包按照一定的规则组织起来,按照发布版本,组成一个集合;发布到网上服务器,供所有的开发者和应用者使用,客户端装有相应的客户端工具,用户通过网络访问IPS,进行一些操作,包括包的安装,卸载,升级,查看包的描述特性,特性包含:包安装到哪个目录,安装后的名称,需要系统的哪些依赖文件。

著录项

  • 公开/公告号CN101826103A

    专利类型发明专利

  • 公开/公告日2010-09-08

    原文格式PDF

  • 申请/专利权人 山东高效能服务器和存储研究院;

    申请/专利号CN201010139190.7

  • 发明设计人 李开君;

    申请日2010-04-06

  • 分类号G06F17/30;

  • 代理机构

  • 代理人

  • 地址 250014 山东省济南市历下区山大路224号

  • 入库时间 2023-12-18 00:44:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-06-10

    授权

    授权

  • 2013-10-02

    专利申请权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20130909 申请日:20100406

    专利申请权、专利权的转移

  • 2013-02-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20100406

    实质审查的生效

  • 2012-11-07

    专利申请权的转移 IPC(主分类):G06F17/30 变更前: 变更后: 登记生效日:20120925 申请日:20100406

    专利申请权、专利权的转移

  • 2010-09-08

    公开

    公开

说明书

技术领域

本发明是一种在类unix操作系统里面查找包和包相互依赖,查找包被依赖的技术。具体描述为:在系统的包库环境下,根据包的特殊描述文件,分析包的组织结构,在包库组成的有限图集里按照一定的算法查找包被依赖的方法。

技术背景

随着solaris系统的普及程度不断加深,使用和开发solaris的群体越来越大,应用范围和研究也多元化。系统开发和使用过程中经常会遇到一些情况:1)用户删除了某包之后,导致其他的功能不能运行,提示系统缺少某个库文件或者连接文件,但是删除它之前,又不能清晰的找出哪些功能包依赖它;2)系统过于庞大,系统运行相当耗费软硬件资源,某方面的应用,系统性能不佳;3)对于一个开发者或者普通使用者,过于复杂的开发环境或者很多娱乐等功能都是不需要的;4)从事系统裁减方面的开发者对包的多少和大小会非常在意,他们非常关心的是,一个不需要的包能否最终从操作系统中删除;5)开发过程中,新安装的某个关键的脚本程序不能运行。这种情况不管是linux的系统还是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下的依赖包,将依赖包记录在一个临时文件中,临时文件中每一行代表一个依赖包,依次表示为B1,B2,B3……;

d)读取这个临时文件每一行,即包B1……,将原始包名A输入到以这个包B1为文件名的文件中保存起来,或者使用数据库记录;

e)遍历整个包库集,用F_B1表示保存的文件,这样F_B1文件中每一行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包管理,对linux下的rpm包管理,ubuntu下的apt包管理也同样适用。

不管是linux的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文件来源于哪个包;逆向算法实现之后,可以轻松的找到包被哪些包依赖,轻松定制化系统,使系统能提供更高效、更专业的服务。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号