《一种软件包管理方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种软件包管理方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103425512 A(43)申请公布日 2013.12.04CN103425512A*CN103425512A*(21)申请号 201310361851.4(22)申请日 2013.08.19G06F 9/445(2006.01)(71)申请人曙光信息产业股份有限公司地址 300384 天津市西青区华苑产业区(环外)海泰华科大街15号1-3层(72)发明人王少佳 宋怀明 苗艳超 刘新春邵宗有(74)专利代理机构北京新知远方知识产权代理事务所(普通合伙) 11397代理人张艳(54) 发明名称一种软件包管理方法及系统(57) 摘要本发明提供了一种软件包管理方法,启动命。
2、令解析器shell,加载配置文;接收用户发送的对软件进行操作的命令,根据配置文件判断该软件是否与其他软件存在依赖关系;其他软件包括辅助软件和非辅助软件;当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件。本发明还提供了一种软件包管理系统和一种兼容多版本的软件包管理系统。本发明技术方案可以兼容各种Linux发行版之前的软件包管理系统,通过设置临时环境变量的方式实现在系统中同一软件的不同版本共存共用,提高操作系统的灵活性。(51)Int.Cl.权利要求书1页 说明书6页 附图2页(19)中华。
3、人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书6页 附图2页(10)申请公布号 CN 103425512 ACN 103425512 A1/1页21.一种软件包管理方法,其特征在于,包括:启动命令解析器shell,加载配置文件;接收用户发送的对软件进行操作的命令,根据所述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件。2.如权利要求1所述的软件包管理方法,其特征在于,所述软件包括程。
4、序文件和共享库文件。3.如权利要求1所述的软件包管理方法,其特征在于,所述配置文件包括多条记录,记录每个软件在运行时所依赖的其他软件的位置。4.如权利要求1所述的软件包管理方法,其特征在于,所述根据配置文件判断该软件是否与其他软件存在依赖关系,具体为:判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。5.如权利要求4所述的软件包管理方法,其特征在于,还包括:如果存在其他软件依赖于该软件,则向用户发送提示信息,根据用户的反馈判断是否执行所述用户发送的命令。6.如权利要求1至5中任一所述的软件包管理方法,其特征在于,在执行完所述命令后,还包括:修改所述配置文件。7.一种软件包管理。
5、系统,其特征在于,包括多个软件和:接收单元,用于接收用户发送的对软件进行操作的命令;配置文件,用于记录所述软件在运行时所依赖的其他软件的位置;判断单元,用于根据所述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件;命令解析器shell,用于当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令。8.如权利要求7所述的软件包管理系统,其特征在于,所述接收单元具体用于接收用户对程序文件或共享库文件进行操作的命令。9.如权利要求7所述的软件包管理系统,其特征在于,。
6、所述判断单元具体用于根据配置文件判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。10.如权利要求9所述的软件包管理系统,其特征在于,所述命令解析器shell还用于,当存在其他软件依赖于该软件时,向用户发送提示信息,并根据用户的反馈执行相应操作。11.如权利要求7-10中任一所述的软件包管理系统,还包括配置文件修改单元,用于在执行完所述命令后,还包括:修改所述配置文件。12.一种兼容多版本的软件包管理系统,其特征在于,包括如权利要求7所述的软件包管理系统以及原有软件包管理系统。权 利 要 求 书CN 103425512 A1/6页3一种软件包管理方法及系统技术领域0001 本。
7、发明涉及计算机技术领域,尤其涉及一种软件包管理方法及系统。背景技术0002 在使用Linux系统时,首先要安装一些必要的软件。目前各种Linux系统的发行版(其中,Linux发行版是基于Linux内核的类Unix操作系统)都有各自的软件包管理系统(Linux系统上管理系统内所有软件的系统),这些软件包管理系统能够使用户方便地进行软件管理。Linux系统中很多软件是协同工作的,比如软件A运行时会使用软件B,一般称为软件A依赖软件B,这种依赖在所有Linux系统都是很常见的。而各个软件是在不断升级的,不断形成新的版本,可能出现软件A的版本1依赖于软件B的版本2的情况。0003 当前大部分Linux。
8、发行版的软件包管理系统只允许当前系统拥有同一软件的同一版本,这是符合大部分情况的。但是,当软件A依赖于软件B的版本2、软件C却又依赖于软件B的版本3时,如果软件B的版本2和版本3之间发生了大的变化,这时在系统中无法同时安装软件B的版本2和版本3,就会导致软件A和软件C无法同时在系统中使用。0004 目前Linux的一个叫做gentoo的发行版的软件包管理系统portage实现了同一软件不同版本共存于一个系统并能同时使用的功能。Portage中的每一款软件的每个版本都可以是一个slot,portage管理这些slot,从而使同一软件的不同版本能共存于同一系统中。在实际使用时通过建立软连接来切换版。
9、本,从而达到同一软件的不同版本共存的目标。但ponage软件包管理系统只适用在gentoo系统,其他Linux发行版有各自的软件包管理系统,不可能都去使用portage软件包管理系统;另外,portage使用软连接的方式切换同一软件的不同版本,使得不能同时使用同一软件的不同版本。发明内容0005 本发明针对上述问题,提出了一种软件包管理方法及系统,通过设置临时环境变量,使同一软件的不同版本能够共存于系统中,并能被同时使用。0006 在一个方面,本发明提供了一种软件包管理方法,主要技术方案如下:0007 启动命令解析器shell,加载配置文件;0008 接收用户发送的对软件进行操作的命令,根据所。
10、述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;0009 当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件。0010 所述软件包括程序文件和共享库文件。0011 所述配置文件包括多条记录,记录每个软件在运行时所依赖的其他软件的位置。0012 所述根据配置文件判断该软件是否与其他软件存在依赖关系,具体为:判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。说 明 书CN 103425512 A2/6页40013 如果存在其他软件依赖于。
11、该软件,则向用户发送提示信息,根据用户的反馈判断是否执行所述用户发送的命令。0014 在执行完所述命令后,还包括:修改所述配置文件。0015 在另一个方面,本发明提供了一种软件包管理系统,包括多个软件和:0016 接收单元,用于接收用户发送的对软件进行操作的命令;0017 配置文件,用于记录所述软件在运行时所依赖的其他软件的位置;0018 判断单元,用于根据所述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件;0019 命令解析器shell,用于当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量。
12、;加载所述辅助软件,执行所述用户发送的命令。0020 所述接收单元具体用于接收用户对程序文件或共享库文件进行操作的命令。0021 所述判断单元具体用于根据配置文件判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。0022 所述命令解析器shell还用于,当存在其他软件依赖于该软件时,向用户发送提示信息,并根据用户的反馈执行相应操作。0023 还包括配置文件修改单元,用于在执行完所述命令后,还包括:修改所述配置文件。0024 本发明还提供了一种兼容多版本的软件包管理系统,包括上述软件包管理系统以及原有软件包管理系统。0025 本发明通过设置临时环境变量的方式,使得同一软件的不同。
13、版本共存以及被同时依赖使用,而且本发明所提供的软件包管理系统可以兼容各种Linux发行版之前的软件包管理系统,提高了操作系统的软件灵活性。附图说明0026 下面将参照附图描述本发明的具体实施例,其中:0027 图1为本发明实施例安装软件的流程图;0028 图2为本发明实施例软件包管理方法的流程图。具体实施方式0029 为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。0030 Linux系统下大部分软件都是依赖别的软件包的,正常情况下Linux系统的软件包管理系统(下面称之为原。
14、有软件包管理系统)会维护一套相对于用户的使用来说较为完整的相互依赖的软件体系。本发明在此基础上添加了一套辅助软件包管理系统,在原有的软件包管理系统正常工作的基础上进行工作,既可以单独运行,又可以将原有软件包管理系统封装到本发明的辅助软件包管理系统中进行统一操作。本发明所称的软件可以是程序文件(或者称为应用软件),也可以是共享库文件。说 明 书CN 103425512 A3/6页50031 本发明实施例提供了一种软件包管理系统,可以单独使用,也就是独立存在于Linux系统中。但这种情况就需要该软件包管理系统包含所有系统所需软件,而对于一些底层软件的安装设置可能存在一定的不稳定性,而原有软件包管理。
15、系统已安装并维护有稳定的软件包,因此,本发明实施例也可以直接利用原有软件包管理系统所拥有的软件作为基础,也就是将本发明实施例所说的软件包管理系统作为原有软件包管理系统的辅助软件包管理系统。0032 本发明实施例中的软件包管理系统(也称辅助软件包管理系统)具体包括以下三个部分:0033 1)辅助软件。所述辅助软件指的是是独立于原有软件包管理系统的软件,不被原有软件包管理系统所管理,是可以被辅助软件包管理系统管理的软件。具体来说,这些辅助软件是与原有软件包管理系统中已安装的软件的版本号不同的软件。这些辅助软件可以存储在本发明实施例的辅助软件包管理系统的任何位置,一般存储于/opt/relysoft。
16、目录下。0034 一般情况下,某一款软件在原有软件包管理系统中安装的都是该软件的最新版,以使用新版的软件带来的各种优势。当用户需要使用该软件的某一老版本时,则可以直接将该软件老版本(也即辅助软件)解压到opt/relysoft目录下,这样就可以直接使用该老版本软件。例如,当软件A依赖软件B的低版本,而原有软件包管理系统上已经安装了软件B的高版本时,解压软件B的低版本到辅助软件包管理系统的opt/relysoft目录下,然后修改下面所描述的配置文件中即可。0035 2、配置文件。配置文件中记录每个软件在运行时所依赖的其他软件的位置,如果所依赖的其他软件是与原有软件包管理系统中已有软件版本不同的软。
17、件,也就是该软件文件依赖于辅助软件,本发明实施例将这种依赖关系称为特殊依赖。其中,软件文件可以是程序文件(应用软件),也可以是共享库文件。配置文件中的每条记录就是记录了一个程序文件或者共享库文件在运行时所特殊依赖的程序文件或共享库文件的位置。0036 本发明实施例所说的辅助软件指的是那些与原有软件包管理系统所安装的软件版本号不同的软件。比如原有软件包管理系统中已安装有软件B的高版本,但软件A需要依赖软件B的低版本,那么软件B的低版本即称为辅助软件。0037 这些辅助软件不在正常的环境中,所谓正常的环境也就是原有软件包管理系统所管理的环境。也就是说,这些与原有软件包管理系统中的软件版本不同的软件。
18、是受本发明实施例的辅助软件包管理系统所管理的,不属于原有软件包管理系统所管理的范围。0038 配置文件的每一条记录为key:value的形式,每条记录单独存在,互相不关联。其中key为一个文件的全路径(也即表示该文件的位置),该文件可以是一个程序,也可以是一个共享库文件;而value则是key所依赖的辅助软件目录的全路径,多个路径以逗号分割。0039 该配置文件可以是/etc/relysoft.conf,本发明实施例的配置文件可以采用文本文件的方式,管理员可以直接修改配置文件,还可以采用二进制的方式,使得配置文件的内容快速加载。0040 3、可使用辅助软件包管理系统的命令解析器shell。正常。
19、情况下,Linux程序在运行时可能需要调用别的命令或者是共享库,shell会在PATH环境变量内查找该命令,在LD_说 明 书CN 103425512 A4/6页6LIBRARY_PATH环境变量和/etc/ld.so.cache文件列表中搜索共享库。这个shell在调用到一个命令或者是找到一个共享库文件以后,可以根据上述配置文件,查到是否需要为该文件配置临时的环境,并在需要时创建临时的环境,并加载该文件。0041 其中,判断是否需要为该文件配置临时的环境,是要看该软件是否存在特殊依赖,也就是说,该软件是否依赖于辅助软件,也即,是否依赖于除原有软件包管理系统中软件版本外的其他软件版本。0042。
20、 Shell运行某命令时的流程,具体说明如下:0043 首先启动shell,加载/etc/relysoft.conf配置文件到哈希表relysofthash中。0044 用户输入命令后,该命令一般是指对软件进行操作的命令,比如安装软件、卸载软件、更新软件等等。其中,此处所针对的软件可以是原有软件包管理系统或辅助软件包管理系统中已有的软件,也可以是原有软件包管理系统或辅助软件包管理系统中均未安装的新款软件。0045 系统在PATH环境变量中查找该软件,根据查找到的该软件的全路径,在哈希表relysofthash中查找该软件是否与其他程序文件存在依赖关系,其他程序文件包括辅助程序文件和非辅助程序文。
21、件。其中,依赖关系包括该软件依赖于辅助程序文件,或者存在其他程序文件依赖于该软件,所谓辅助程序文件也就是指那些与原有软件包管理系统中程序文件版本不同的程序文件。0046 当该软件依赖于辅助程序文件时,为那些辅助程序文件设置临时环境变量:T_RATH和T_LD_LIBRARY_PATH,加载安装这些辅助程序文件。进一步判断该软件是否还特殊依赖某共享库文件,则先后在T_PATH和T_LD_LIBRARY_PATH这两个环境变量包含的路径下寻找该共享库文件;找到该共享库文件以后,加载该共享库文件。最终运行用户发送的操作命令。0047 当存在其他程序文件或其他共享库文件依赖于该软件时,向用户发送提示信。
22、息,并根据用户的反馈执行相应操作,如果用户确定继续执行该命令则执行该命令,否则,不执行该命令,结束流程。0048 本发明实施例的软件包管理系统还包括配置文件修改单元,用于在执行完该命令后,修改配置文件,也即在配置文件中添加相应记录。0049 基于同一发明构思,本发明还提供了一种兼容多版本的软件包管理系统,包括上述辅助软件包管理系统以及原有软件包管理系统。当原有的软件包管理系统封装到本发明实施例的辅助软件包管理系统中时,则封装后形成一套兼容多版本的软件包管理系统。该兼容多版本的软件包管理系统还包括一组管理命令,包含以下基本功能:0050 1、安装软件,安装软件前先要查找该软件依赖的软件包和辅助软。
23、件包,如果该软件只依赖原有软件包管理系统或辅助软件包管理系统已有版本的软件,也可以称这种依赖关系为普通依赖,那么就可以直接安装所要安装的软件;如果该软件依赖的是辅助软件,或者不仅依赖原有软件包管理系统已有版本的软件还依赖辅助软件,那么则需要首先安装辅助软件包,安装完成以后,再加载安装该所要安装的软件,并修改相应的配置文件;所说的辅助软件包中所包含的辅助软件指的是与原有软件包管理系统中软件版本号不同的软件。0051 以安装软件A的版本2为例,如图1所示:说 明 书CN 103425512 A5/6页70052 首先查找到软件A的版本2依赖于软件包B的版本3,如果检测到系统已经安装了软件B的版本4。
24、,则在/opt/relysoft下安装软件B的版本3;安装完软件B的版本3以后再安装软件A的版本2;在配置文件/etc/relysoft.conf中添加记录,即软件A的各个程序文件和共享库文件依赖于软件B的版本3,安装流程结束。0053 2、升级软件,在升级软件时查找有没有软件依赖于此软件的老版本,如果有,在升级软件以后,在/opt/relysoft下安装该软件的老版本,并由配置文件修改单元修改/etc/relysoft配置文件;0054 3、卸载软件,卸载软件又分为卸载普通软件和卸载辅助软件。卸载普通软件即卸载原有软件包管理系统管理的软件,而卸载辅助软件即卸载/opt/relysoft下的软。
25、件,这就要先在/etc/relysoft.conf配置文件中查找是否有其他软件依赖于此软件,如果有,则需要提示用户是否继续卸载,根据用户的反馈再确定是否执行卸载命令;如果没有,方可卸载;0055 4、更新系统软件,这是指更新所有原有软件包管理系统管理的软件,而不更新/opt/relysoft文件夹下的软件。0056 基于同一发明构思,本发明还提供了一种软件包管理方法,如图2所示,具体包括以下步骤:0057 S101、首先启动命令解析器shell,加载配置文件到哈希表中,配置文件中记录有每个软件(程序文件或者共享库文件)在运行时所依赖的其他软件的位置。0058 S102、用户发送对软件进行操作的。
26、命令,该软件可以是原有软件包管理系统或辅助软件包管理系统已安装的软件,也可以是原有软件包管理系统或辅助软件包管理系统均未安装的软件;也就是说,该命令可以是对已安装软件的卸载或更新操作命令,还可以是安装一款新软件的安装操作命令。0059 S103、接受用户发送的命令,在上述配置文件中查找该软件是否依赖与其他软件存在依赖关系,其中,其他软件包括辅助软件和非辅助软件;所说的依赖关系包括两个方面,一个方面可以是该软件依赖于辅助软件,另一方面是存在其他软件依赖于该软件。如果存在依赖关系,则执行步骤S104;否则,直接执行该命令。所谓辅助软件,是指与原有软件包管理系统中软件版本不同的其他版本的软件。006。
27、0 S104、判断该依赖关系具体为何种依赖,如果是该软件依赖于辅助软件,则执行步骤S105;否则(也就是其他软件依赖于该软件的情况),执行步骤S106;0061 S105、为辅助软件设置临时环境变量。设置完临时环境变量以后,加载上面所说的辅助软件,执行用户发送的命令。执行完命令以后修改配置文件。0062 S106、当存在其他软件依赖于该软件时,则向用户发送提示信息。根据用户的反馈再决定是否执行该命令,如果用户的反馈为继续执行该操作命令,则执行该命令;否则,不执行该命令,结束流程。0063 本发明在原有软件包管理系统的基础上,建立了一套辅助软件包管理系统,在系统中实现同时拥有同一软件的不同版本且。
28、这些版本都可以被同时使用,同时被其他软件所依赖。本发明兼容各种Linux发行版之前的软件包管理系统,实现同一软件的不同版本共存及被同时依赖使用,提高了操作系统的软件灵活性。0064 以上实施例仅用以说明本发明的技术方案,而非对其进行限制。因此,在不背离本说 明 书CN 103425512 A6/6页8发明的精神及其实质的情况下,本领域技术人员可作出各种改变、替换和变型。很显然,但这些改变、替换和变型都应涵盖于本发明权利要求的保护范围之内。说 明 书CN 103425512 A1/2页9图1说 明 书 附 图CN 103425512 A2/2页10图2说 明 书 附 图CN 103425512 A10。