首页> 中国专利> 同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法

同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法

摘要

本发明涉及一种同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法,包括如下步骤:建立一个统一数据库,存放rpm软件包信息和deb软件包信息;创建一个统一处理动态库,来操作统一数据库,并将处理rpm和dpkg相关联的信息的操作封装成接口供外部程序调用;改造rpm和dpkg,将rpm和dpkg原本对各自数据库操作改为调用统一库接口操作统一数据库,把软件包信息记录到统一数据库中;改造打包工具,将打包过程中原本对各自数据库的操作改为调用统一库接口操作统一数据库;改造yum和apt,将网络包管理器原本对各自数据库的操作改为调用统一库接口操作统一数据库;制作初始化工具,初始化工具用来将系统原软件包管理器的数据库信息导入到统一数据库中。

著录项

  • 公开/公告号CN112230976B

    专利类型发明专利

  • 公开/公告日2023.07.18

    原文格式PDF

  • 申请/专利权人 麒麟软件有限公司;

    申请/专利号CN202010902109.X

  • 申请日2020.09.01

  • 分类号G06F8/71(2018.01);

  • 代理机构北京汇智英财专利代理有限公司 11301;

  • 代理人何佳

  • 地址 300450 天津市滨海新区塘沽海洋科技园信安创业广场3号楼6-8层

  • 入库时间 2023-08-10 19:38:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-07-18

    授权

    发明专利权授予

说明书

技术领域

本发明涉及计算机软件包兼容技术领域,具体涉及一种同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法。

背景技术

Linux操作系统发行版中,有两支较为主流的发行版,分别是以centos为代表的redhat系发行版,和以ubuntu为代表的debian系发行版。其中,redhat系发行版以rpm为软件包管理器来安装、卸载、更新、查询rpm格式的软件包;debian系发行版以dpkg为软件包管理器来管理deb格式的软件包。

rpm和dpkg管理软件的命令格式、输出格式和打包的方法等用户使用习惯均有较大差异。习惯rpm软件包管理器的用户通常不习惯使用dpkg软件包管理器,而习惯使用dpkg软件包管理器的用户通常不习惯使用rpm软件包管理器。

在Linux操作系统上同时支持rpm和dpkg软件包管理器或同时支持rpm和deb格式软件包,现有方法列举如下。

第一种方法,安装现有的相关软件包。在redhat系发行版中,epel源内有dpkg相关的rpm包,可以通过yum install dpkg dpkg-dev下载安装。在debian系发行版中,可以通过apt install rpm下载安装rpm相关软件包。

第二种方法,使用软件包格式转换工具Alien。Alien是一种软件包格式转换工具,可以使用Alien将一个rpm格式软件包转换成一个deb格式软件包或将一个deb格式软件包转换成一个rpm格式软件包。

然而,上述方法都存在相应缺点。

第一种方法,安装现有软件包,有以下缺点:

1、安装相关软件包管理器后,软件包管理器的数据库中没有已安装软件包的数据。

2、不支持相互查询。使用rpm无法查询到dpkg安装的软件包信息;使用dpkg无法查询到rpm安装的软件包信息。

3、不支持相互依赖处理。使用rpm安装rpm格式软件包的过程中,无法处理rpm包依赖deb包的情况;使用dpkg安装deb格式软件包过程中,无法处理deb包依赖rpm包的情况。

4、不支持相互冲突处理。相互冲突有两方面意思,第一方面是指一个rpm包和某个deb包不能并存于系统中,当一个安装后,另外一个必须卸载的情况;第二方面的意思是指一个rpm包和某个deb包可能存在同路径同名的文件。这种方法无法检测相互冲突的情况,无法处理相互冲突的情况。

5、打包工具不支持相互依赖。rpmbuild是rpm软件包的打包工具,rpmbuild在打包时无法依赖deb软件包;dpkg-buildpackage是deb软件包的打包工具,dpkg-buildpackage在打包时无法依赖rpm软件包。

6、yum安装rpm软件包无法依赖deb软件包,无法处理rpm软件包和已安装deb软件包之前的冲突;apt安装deb软件包无法依赖rpm软件包,无法处理deb软件包和已安装rpm软件包之间的冲突。

第二种方法,使用软件包格式转换工具Alien,有以下缺点:

1、转换软件包格式的方法不能同时支持rpm和dpkg,无法解决用户使用习惯问题。

2、使用Alien转换软件包,转换过程中有信息损失,可能导致安装失败或无法正常安装、卸载和升级,例如使用Alien转换出的软件包缺少依赖信息,安装脚本有可能转换错误。

因此,需要一种新的方法,使得操作系统能够同时支持rpm和dpkg,并且rpm软件包和deb软件能够实现相互依赖和相互冲突检测。

发明内容

为解决已有技术存在的不足,本发明提供了一种同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法,包括如下步骤:

步骤S1:建立一个统一数据库,存放rpm软件包信息和deb软件包信息;

步骤S2:创建一个统一处理动态库,来操作统一数据库,并将处理rpm和dpkg相关联的信息的操作封装成接口供外部程序调用;

步骤S3:改造rpm和dpkg,将rpm和dpkg原本对各自数据库操作改为调用统一库接口操作统一数据库,把软件包信息记录到统一数据库中;

步骤S4:改造打包工具,将打包过程中原本对各自数据库的操作改为调用统一库接口操作统一数据库;

步骤S5:改造yum和apt,将网络包管理器原本对各自数据库的操作改为调用统一库接口操作统一数据库;

步骤S6:制作初始化工具,初始化工具用来将系统原软件包管理器的数据库信息导入到统一数据库中。

本发明提供的同时支持两种软件包管理器并支持软件包相互依赖及冲突检测的方法,能在Linux系统中同时支持rpm和dpkg,兼容redhat系和debian系用户的使用习惯,且能够实现的两种软件包管理器之间的相互查询、相互依赖处理以及相互冲突处理。

附图说明

图1:本发明的总体构思图。

图2:本发明在使用过程中的使用实例图。

具体实施方式

为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。

图1为本发明的总体思路图,如图1所示,本发明通过如下方式,实现在操作系统能够同时支持rpm和dpkg,并且rpm软件包和deb软件能够实现相互依赖和相互冲突检测:建立一个统一数据库,存放rpm软件包信息和deb软件包信息。创建一个统一处理动态库,简称统一处理库,统一处理库操作统一数据库,并将处理rpm和dpkg相关联的信息的操作封装成接口供外部程序调用。改造rpm和dpkg,将rpm和dpkg原本对各自数据库操作改为调用统一库接口操作统一数据库,把软件包信息记录到统一数据库中。改造打包工具rpmbuild,dpkg-buildpackage等,将打包过程中原本对各自数据库的操作改为调用统一库接口操作统一数据库。改造yum和apt,将网络包管理器原本对各自数据库的操作改为调用统一库接口操作统一数据库。制作初始化工具,初始化工具用来将系统原软件包管理器的数据库信息导入到统一数据库中。

通过让rpm和dpkg相关软件访问统一数据库,达到访问信息一致的目的,解决rpm和dpkg相互查询、相互依赖、相互冲突等问题。

可以将对已有软件包的改造、统一数据库的创建、统一处理库,封装成一个软件包,用户安装软件包后,通过安装脚本自动将改造部署在系统上,并运行初始化工具将原包管理器数据库信息导入到统一数据库中。我们简称这个软件包为包管理器用户习惯兼容包。

需要注意的是,本发明只是兼容软件包管理器的用户使用习惯,在redhat系发行版中用dpkg-buildpackage打包的deb软件包,只能在redhat系中使用,不能在debian系发行版中使用。debian系发行版中的deb包也不能在redhat系中直接使用。同理,在debian系发行版中用rpmbuild打包的rpm软件包只能在debian系使用,不能在redhat系发行版使用。

当安装上文中描述的包管理器用户习惯兼容包后,系统的包管理器相关软件将使用统一处理库和统一数据库。

此时,当用户使用rpm安装rpm格式软件包或使用dpkg安装deb格式软件包时,安装过程中查询信息都来自统一数据库,安装信息也记录在统一数据库中。

这样,在相互依赖方面,当用户使用rpm安装rpm格式软件包时,把自身信息记录在统一数据库中,当用户使用dpkg安装deb软件包时,就可以在统一数据库中查询到该rpm包的信息,并依赖它。同理,rpm安装rpm软件包时也可以依赖已安装的deb包。

在冲突方面,数据库中记录了rpm和deb软件包的文件列表。当用户使用rpm安装某个rpm包,这个rpm包中包含的一个路径为/usr/bin/xxx的文件,该文件的路径将记录在统一数据库的文件列表中。当用户又使用dpkg安装一个deb软件包,而这个软件包中也包含一个路径为/usr/bin/xxx的文件时,统一处理库中的操作将发现该冲突,并告知用户冲突情况。

在查询方面,由于统一数据库中有rpm和deb软件包的所有信息,所以可以查到所需要的所有内容,而不是只包含rpm软件包或deb软件包。

安装本发明后,一个使用过程中的使用实例图如图2所示。

本发明使用统一数据库整合rpm和dpkg数据,使用统一处理库封装rpm和dpkg关联数据的操作,封装统一数据库调用。能够实现如下效果:

1、在linux系统中同时支持rpm和dpkg,兼容redhat系和debian系用户使用习惯。

2、支持相互查询

(1)在redhat系发行版安装dpkg后,使用rpm和dpkg都可以查询到已安装软件包的信息;

(2)在debian系发行版安装rpm后,使用rpm和dpkg都可以查询到已安装软件包的信息。

3、支持相互依赖处理

(1)使用rpm和dpkg管理软件包时,rpm软件包可以依赖deb软件包;deb软件包可以依赖rpm软件包;

(2)使用rpmbuild,dpkg-buildpackage打包时,rpm软件包可以依赖deb软件包,deb软件包可以依赖rpm软件包。

4、支持相互冲突处理

(1)使用rpm安装rpm软件包时,如果rpm软件包和已安装的deb软件包不能并存,会给出提示;

(2)使用dpkg安装deb软件包时,如果deb软件包和已安装的rpm软件包不能并存,会给出提示;

(3)使用rpm安装rpm软件包时,如果rpm软件包中存在和已安装的deb软件包同路径同名的文件,会提示文件冲突;

(4)使用dpkg安装deb软件包时,如果deb软件包中存在和已安装的rpm软件包同路径同名的文件,会提示文件冲突。

虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号