一种软件包管理方法及系统与流程

文档序号:18008975发布日期:2019-06-25 23:45阅读:132来源:国知局
一种软件包管理方法及系统与流程

本发明涉及计算机技术领域,尤其涉及一种软件包管理方法及系统。



背景技术:

在使用linux系统时,首先要安装一些必要的软件。目前各种linux系统的发行版(其中,linux发行版是基于linux内核的类unix操作系统)都有各自的软件包管理系统(linux系统上管理系统内所有软件的系统),这些软件包管理系统能够使用户方便地进行软件管理。linux系统中很多软件是协同工作的,比如软件a运行时会使用软件b,一般称为软件a依赖软件b,这种依赖在所有linux系统都是很常见的。而各个软件是在不断升级的,不断形成新的版本,可能出现软件a的版本1依赖于软件b的版本2的情况。

当前大部分linux发行版的软件包管理系统只允许当前系统拥有同一软件的同一版本,这是符合大部分情况的。但是,当软件a依赖于软件b的版本2、软件c却又依赖于软件b的版本3时,如果软件b的版本2和版本3之间发生了大的变化,这时在系统中无法同时安装软件b的版本2和版本3,就会导致软件a和软件c无法同时在系统中使用。

目前linux的一个叫做gentoo的发行版的软件包管理系统portage实现了同一软件不同版本共存于一个系统并能同时使用的功能。portage中的每一款软件的每个版本都可以是一个slot,portage管理这些slot,从而使同一软件的不同版本能共存于同一系统中。在实际使用时通过建立软连接来切换版本,从而达到同一软件的不同版本共存的目标。但ponage软件包管理系统只适用在gentoo系统,其他linux发行版有各自的软件包管理系统,不可能都去使用portage软件包管理系统;另外,portage使用软连接的方式切换同一软件的不同版本,使得不能同时使用同一软件的不同版本。



技术实现要素:

本发明针对上述问题,提出了一种软件包管理方法及系统,通过设置临时环境变量,使同一软件的不同版本能够共存于系统中,并能被同时使用。

在一个方面,本发明提供了一种软件包管理方法,主要技术方案如下:

启动命令解析器shell,加载配置文件;

接收用户发送的对软件进行操作的命令,根据所述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;

当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件。

所述软件包括程序文件和共享库文件。

所述配置文件包括多条记录,记录每个软件在运行时所依赖的其他软件的位置。

所述根据配置文件判断该软件是否与其他软件存在依赖关系,具体为:判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。

如果存在其他软件依赖于该软件,则向用户发送提示信息,根据用户的反馈判断是否执行所述用户发送的命令。

在执行完所述命令后,还包括:修改所述配置文件。

在另一个方面,本发明提供了一种软件包管理系统,包括多个软件和:

接收单元,用于接收用户发送的对软件进行操作的命令;

配置文件,用于记录所述软件在运行时所依赖的其他软件的位置;

判断单元,用于根据所述配置文件判断该软件是否与其他软件存在依赖关系;所述其他软件包括辅助软件和非辅助软件;所述辅助软件为与原有软件包管理系统中已有软件版本不同的软件;

命令解析器shell,用于当该软件依赖于辅助软件时,为所述辅助软件设置临时环境变量;加载所述辅助软件,执行所述用户发送的命令。

所述接收单元具体用于接收用户对程序文件或共享库文件进行操作的命令。

所述判断单元具体用于根据配置文件判断该软件是否依赖于辅助软件,或者判断是否存在其他软件依赖于该软件。

所述命令解析器shell还用于,当存在其他软件依赖于该软件时,向用户发送提示信息,并根据用户的反馈执行相应操作。

还包括配置文件修改单元,用于在执行完所述命令后,还包括:修改所述配置文件。

本发明还提供了一种兼容多版本的软件包管理系统,包括上述软件包管理系统以及原有软件包管理系统。

本发明通过设置临时环境变量的方式,使得同一软件的不同版本共存以及被同时依赖使用,而且本发明所提供的软件包管理系统可以兼容各种linux发行版之前的软件包管理系统,提高了操作系统的软件灵活性。

附图说明

图1为本发明实施例安装软件的流程图;

图2为本发明实施例软件包管理方法的流程图。

具体实施方式

为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。

linux系统下大部分软件都是依赖别的软件包的,正常情况下linux系统的软件包管理系统(下面称之为原有软件包管理系统)会维护一套相对于用户的使用来说较为完整的相互依赖的软件体系。本发明在此基础上添加了一套辅助软件包管理系统,在原有的软件包管理系统正常工作的基础上进行工作,既可以单独运行,又可以将原有软件包管理系统封装到本发明的辅助软件包管理系统中进行统一操作。本发明所称的软件可以是程序文件(或者称为应用软件),也可以是共享库文件。

本发明实施例提供了一种软件包管理系统,可以单独使用,也就是独立存在于linux系统中。但这种情况就需要该软件包管理系统包含所有系统所需软件,而对于一些底层软件的安装设置可能存在一定的不稳定性,而原有软件包管理系统已安装并维护有稳定的软件包,因此,本发明实施例也可以直接利用原有软件包管理系统所拥有的软件作为基础,也就是将本发明实施例所说的软件包管理系统作为原有软件包管理系统的辅助软件包管理系统。

本发明实施例中的软件包管理系统(也称辅助软件包管理系统)具体包括以下三个部分:

1)辅助软件。所述辅助软件指的是是独立于原有软件包管理系统的软件,不被原有软件包管理系统所管理,是可以被辅助软件包管理系统管理的软件。具体来说,这些辅助软件是与原有软件包管理系统中已安装的软件的版本号不同的软件。这些辅助软件可以存储在本发明实施例的辅助软件包管理系统的任何位置,一般存储于/opt/relysoft目录下。

一般情况下,某一款软件在原有软件包管理系统中安装的都是该软件的最新版,以使用新版的软件带来的各种优势。当用户需要使用该软件的某一老版本时,则可以直接将该软件老版本(也即辅助软件)解压到opt/relysoft目录下,这样就可以直接使用该老版本软件。例如,当软件a依赖软件b的低版本,而原有软件包管理系统上已经安装了软件b的高版本时,解压软件b的低版本到辅助软件包管理系统的opt/relysoft目录下,然后修改下面所描述的配置文件中即可。

2、配置文件。配置文件中记录每个软件在运行时所依赖的其他软件的位置,如果所依赖的其他软件是与原有软件包管理系统中已有软件版本不同的软件,也就是该软件文件依赖于辅助软件,本发明实施例将这种依赖关系称为特殊依赖。其中,软件文件可以是程序文件(应用软件),也可以是共享库文件。配置文件中的每条记录就是记录了一个程序文件或者共享库文件在运行时所特殊依赖的程序文件或共享库文件的位置。

本发明实施例所说的辅助软件指的是那些与原有软件包管理系统所安装的软件版本号不同的软件。比如原有软件包管理系统中已安装有软件b的高版本,但软件a需要依赖软件b的低版本,那么软件b的低版本即称为辅助软件。

这些辅助软件不在正常的环境中,所谓正常的环境也就是原有软件包管理系统所管理的环境。也就是说,这些与原有软件包管理系统中的软件版本不同的软件是受本发明实施例的辅助软件包管理系统所管理的,不属于原有软件包管理系统所管理的范围。

配置文件的每一条记录为key:value的形式,每条记录单独存在,互相不关联。其中key为一个文件的全路径(也即表示该文件的位置),该文件可以是一个程序,也可以是一个共享库文件;而value则是key所依赖的辅助软件目录的全路径,多个路径以逗号分割。

该配置文件可以是/etc/relysoft.conf,本发明实施例的配置文件可以采用文本文件的方式,管理员可以直接修改配置文件,还可以采用二进制的方式,使得配置文件的内容快速加载。

3、可使用辅助软件包管理系统的命令解析器shell。正常情况下,linux程序在运行时可能需要调用别的命令或者是共享库,shell会在path环境变量内查找该命令,在ld_library_path环境变量和/etc/ld.so.cache文件列表中搜索共享库。这个shell在调用到一个命令或者是找到一个共享库文件以后,可以根据上述配置文件,查到是否需要为该文件配置临时的环境,并在需要时创建临时的环境,并加载该文件。

其中,判断是否需要为该文件配置临时的环境,是要看该软件是否存在特殊依赖,也就是说,该软件是否依赖于辅助软件,也即,是否依赖于除原有软件包管理系统中软件版本外的其他软件版本。

shell运行某命令时的流程,具体说明如下:

首先启动shell,加载/etc/relysoft.conf配置文件到哈希表relysofthash中。

用户输入命令后,该命令一般是指对软件进行操作的命令,比如安装软件、卸载软件、更新软件等等。其中,此处所针对的软件可以是原有软件包管理系统或辅助软件包管理系统中已有的软件,也可以是原有软件包管理系统或辅助软件包管理系统中均未安装的新款软件。

系统在path环境变量中查找该软件,根据查找到的该软件的全路径,在哈希表relysofthash中查找该软件是否与其他程序文件存在依赖关系,其他程序文件包括辅助程序文件和非辅助程序文件。其中,依赖关系包括该软件依赖于辅助程序文件,或者存在其他程序文件依赖于该软件,所谓辅助程序文件也就是指那些与原有软件包管理系统中程序文件版本不同的程序文件。

当该软件依赖于辅助程序文件时,为那些辅助程序文件设置临时环境变量:t_rath和t_ld_library_path,加载安装这些辅助程序文件。进一步判断该软件是否还特殊依赖某共享库文件,则先后在t_path和t_ld_library_path这两个环境变量包含的路径下寻找该共享库文件;找到该共享库文件以后,加载该共享库文件。最终运行用户发送的操作命令。

当存在其他程序文件或其他共享库文件依赖于该软件时,向用户发送提示信息,并根据用户的反馈执行相应操作,如果用户确定继续执行该命令则执行该命令,否则,不执行该命令,结束流程。

本发明实施例的软件包管理系统还包括配置文件修改单元,用于在执行完该命令后,修改配置文件,也即在配置文件中添加相应记录。

基于同一发明构思,本发明还提供了一种兼容多版本的软件包管理系统,包括上述辅助软件包管理系统以及原有软件包管理系统。当原有的软件包管理系统封装到本发明实施例的辅助软件包管理系统中时,则封装后形成一套兼容多版本的软件包管理系统。该兼容多版本的软件包管理系统还包括一组管理命令,包含以下基本功能:

1、安装软件,安装软件前先要查找该软件依赖的软件包和辅助软件包,如果该软件只依赖原有软件包管理系统或辅助软件包管理系统已有版本的软件,也可以称这种依赖关系为普通依赖,那么就可以直接安装所要安装的软件;如果该软件依赖的是辅助软件,或者不仅依赖原有软件包管理系统已有版本的软件还依赖辅助软件,那么则需要首先安装辅助软件包,安装完成以后,再加载安装该所要安装的软件,并修改相应的配置文件;所说的辅助软件包中所包含的辅助软件指的是与原有软件包管理系统中软件版本号不同的软件。

以安装软件a的版本2为例,如图1所示:

首先查找到软件a的版本2依赖于软件包b的版本3,如果检测到系统已经安装了软件b的版本4,则在/opt/relysoft下安装软件b的版本3;安装完软件b的版本3以后再安装软件a的版本2;在配置文件/etc/relysoft.conf中添加记录,即软件a的各个程序文件和共享库文件依赖于软件b的版本3,安装流程结束。

2、升级软件,在升级软件时查找有没有软件依赖于此软件的老版本,如果有,在升级软件以后,在/opt/relysoft下安装该软件的老版本,并由配置文件修改单元修改/etc/relysoft配置文件;

3、卸载软件,卸载软件又分为卸载普通软件和卸载辅助软件。卸载普通软件即卸载原有软件包管理系统管理的软件,而卸载辅助软件即卸载/opt/relysoft下的软件,这就要先在/etc/relysoft.conf配置文件中查找是否有其他软件依赖于此软件,如果有,则需要提示用户是否继续卸载,根据用户的反馈再确定是否执行卸载命令;如果没有,方可卸载;

4、更新系统软件,这是指更新所有原有软件包管理系统管理的软件,而不更新/opt/relysoft文件夹下的软件。

基于同一发明构思,本发明还提供了一种软件包管理方法,如图2所示,具体包括

以下步骤:

s101、首先启动命令解析器shell,加载配置文件到哈希表中,配置文件中记录有每个软件(程序文件或者共享库文件)在运行时所依赖的其他软件的位置。

s102、用户发送对软件进行操作的命令,该软件可以是原有软件包管理系统或辅助软件包管理系统已安装的软件,也可以是原有软件包管理系统或辅助软件包管理系统均未安装的软件;也就是说,该命令可以是对已安装软件的卸载或更新操作命令,还可以是安装一款新软件的安装操作命令。

s103、接受用户发送的命令,在上述配置文件中查找该软件是否依赖与其他软件存在依赖关系,其中,其他软件包括辅助软件和非辅助软件;所说的依赖关系包括两个方面,一个方面可以是该软件依赖于辅助软件,另一方面是存在其他软件依赖于该软件。如果存在依赖关系,则执行步骤s104;否则,直接执行该命令。所谓辅助软件,是指与原有软件包管理系统中软件版本不同的其他版本的软件。

s104、判断该依赖关系具体为何种依赖,如果是该软件依赖于辅助软件,则执行步骤s105;否则(也就是其他软件依赖于该软件的情况),执行步骤s106;

s105、为辅助软件设置临时环境变量。设置完临时环境变量以后,加载上面所说的辅助软件,执行用户发送的命令。执行完命令以后修改配置文件。

s106、当存在其他软件依赖于该软件时,则向用户发送提示信息。根据用户的反馈再决定是否执行该命令,如果用户的反馈为继续执行该操作命令,则执行该命令;否则,不执行该命令,结束流程。

本发明在原有软件包管理系统的基础上,建立了一套辅助软件包管理系统,在系统中实现同时拥有同一软件的不同版本且这些版本都可以被同时使用,同时被其他软件所依赖。本发明兼容各种linux发行版之前的软件包管理系统,实现同一软件的不同版本共存及被同时依赖使用,提高了操作系统的软件灵活性。

以上实施例仅用以说明本发明的技术方案,而非对其进行限制。因此,在不背离本发明的精神及其实质的情况下,本领域技术人员可作出各种改变、替换和变型。很显然,但这些改变、替换和变型都应涵盖于本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1