Rpm软件包转换方法及转换系统的制作方法
【专利摘要】本发明公开了一种Rpm软件包转换方法及转换系统,该方法包括:获取gem软件包,并对其进行备份;通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPM?SPEC文件;将生成的RPM?SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,将所述设定目录结构生成Rpm软件包。本发明能够自动化批量的将Ruby语言编写的软件项目转换为gem后缀的软件包,最终变成Srpm文件,使得获得的开源Ruby源码项目能够被使用Rpm软件包管理工具的操作系统所应用,丰富并快速的扩大这种操作系统的软件仓库的内容,进而为系统集成各种各样的应用软件提供原材料,减少开发流程的环节,提高开发效率。
【专利说明】Rpm软件包转换方法及转换系统
【技术领域】
[0001]本发明涉及计算机软件领域,尤其涉及一种Rpm软件包转换方法及转换系统。
【背景技术】
[0002]在互联网网络上存在一种代码托管网站,该网站存放大量的、新鲜的、采用各类编程语言开发的项目源码。目前,Github网站是主流的代码托管网站,其提供web界面访问,类似于像SourceForge或Google Code这样的服务,托管来自全球各地的个人或组织提供的开源项目源码和非开源项目源码,开源项目源码是公开的,且可以免费托管,而非开源项目源码是不公开的,需付费托管。
[0003]因为由Ruby语言编写的软件项目很多,并大量存放在Github托管网站上,而这些项目都是以源码目录的方式保存。Ruby这种脚本语言是一种为简单快捷面向对象编程而创的语言,其遵守GPL协议和Ruby License。由Ruby语言本身还发展出了 JRuby (Java平台)、IronRuby (.NET平台)等其他平台的Ruby语言替代品。
[0004]由于某些操作系统,例如Fedora、中标麒麟等操作系统均是是由RPM管理工具来管理着内核、驱动、基础库、工具库、图形库及应用软件等各大系统零部件。
[0005]由于这些操作系统是无法直接使用在托管网站上的这些开源成果,因此,会造成在对于这种操作系统进行开发时,出现开发环节增加、开发效率降低、开发成本提高的问题,无法快速地扩大此种操作系统的软件仓库。
【发明内容】
[0006]本发明所要解决的技术问题之一是需要提供一种Rpm软件包转换方法,该方法能够批量将非Rpm软件包管理的项目源码转换为Rpm软件包管理的文件,能够有效降低开发成本,扩大软件仓库。另外,还提供了一种Rpm软件包转换系统。
[0007]为了解决上述技术问题,本发明提供了一种Rpm软件包转换方法,包括:获取gem软件包,并对其进行备份;通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPMSPEC文件;将生成的RPM SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,将所述设定目录结构生成Rpm软件包。
[0008]在一个实施例中,通过以下步骤来获取gem软件包:获取Ruby源码项目;通过gem命令将Ruby源码生成gem软件包。
[0009]在一个实施例中,通过以下步骤来获取Ruby源码项目:步骤10,获取项目源码的下载地址列表;步骤20,从该下载地址列表中读取一条项目源码地址,并根据该项目源码地址下载项目源码;步骤30,判断所下载的项目源码是否为Ruby项目源码,若不是,则从所述下载地址列表中删除此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤20。
[0010]在一个实施例中,在所述步骤10中,通过git命令“git checkout URL”来根据项目地址下载项目源码,其中,“URL”为项目源码地址。[0011 ] 在一个实施例中,在所述步骤30中,通过判断项目源码的源码目录中是否存在标识文件“gem spec”来判断该项目源码是否是Ruby项目源码。
[0012]在一个实施例中,所述Ruby语言的扩展模块命令为gem2rpm模块命令。
[0013]在一个实施例中,通过执行命令“rpmbuild-bs RPMSPEC”将所述设定目录结构生成Sprm文件,进而得到Rpm软件包。
[0014]根据本发明的另一方面,还提供了一种Rpm软件包转换系统,包括:获取模块,其获取Ruby源码项目,通过gem命令将Ruby源码生成gem软件包,并对其进行备份;第一生成模块,其通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPM SPEC文件;第二生成模块,其将生成的RPM SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,并将所述设定目录结构生成Rpm软件包。
[0015]在一个实施例中,所述获取模块进一步用于:步骤10,获取项目源码的下载地址列表;步骤20,从该下载地址列表中读取一条项目源码地址,并通过git命令“gitcheckout URL”来根据该项目源码地址下载项目源码,其中,“URL”为项目源码地址;步骤30,通过判断项目源码的源码目录中是否存在标识文件“gem spec”来判断所下载的项目源码是否为Ruby项目源码,若不是,则从所述下载地址列表中删除此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤20。
[0016]在一个实施例中,所述第二生成模块通过执行命令“rpmbuild-bs RPMSPEC”将所述设定目录结构生成Sprm文件,进而得到Rpm软件包。
[0017]与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
[0018]该发明的优点是自动化的批量将Ruby语言编写的软件项目转换为gem后缀的软件包,最终变成Srpm文件,使得获得的开源Ruby源码项目能够被使用Rpm软件包管理工具的操作系统所应用,丰富并快速的扩大这种操作系统的软件仓库的内容,进而为系统集成各种各样的应用软件提供原材料,减少开发流程的环节,提高开发效率。
[0019]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
【专利附图】
【附图说明】
[0020]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
[0021]图1是根据本发明一实施例的Rpm软件包转换方法的流程示意图;
[0022]图2是根据本发明另一实施例的Rpm软件包转换系统的结构示意图。
【具体实施方式】
[0023]以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
[0024]另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0025]第一实施例
[0026]图1是根据本发明一实施例的批量将Ruby源码转为Rpm软件包的方法的流程示意图,下面参考图1来详细说明本实施例的各个步骤。
[0027]步骤S110,获取源码项目的下载地址列表。
[0028]具体地,可以通过例如Github网站开发提供的网站开发接口,利用开发第三方的应用程序通过这个网站的开发接口,以脱离web网页的方式来直接操作Github授权给用户的行为,获取开源项目的源码的地址列表。
[0029]步骤S120,判断该下载地址列表是否为空,若为空,则结束操作,否则执行步骤S130。
[0030]步骤S130,从该下载地址列表中读取一条项目地址,并根据该项目地址下载项目源码。
[0031]具体地,通过git命令“git checkout URL”来根据该项目地址下载项目源码。其中,“URL”为项目源码地址,下载完成后,进入本地源码目录中。
[0032]步骤S140,判断是否下载成功,若不成功,则执行步骤S170。否则执行步骤S150。
[0033]步骤S150,判断下载的项目源码是否为Ruby项目源码,若不是,则执行步骤S170,否则执行步骤S160。
[0034]具体地,在进入到本地源码目录中后,通过判断源码目录中是否存在标识文件“gem spec”来判断该项目源码是否是Ruby项目源码。也就是说,在检测出存在“gem spec”文件时,则说明该项目源码是Ruby项目源码。
[0035]需要说明的是,源码目录就是存放原始程序代码的目录,一般一个源码目录对应着一个项目,具备一定的目录结构,用于方便管理项目代码。
[0036]步骤S160,进入源码顶层目录并执行Rpm转换命令,将该项目源码转换为Rpm软件管理可管理的Rpm软件包。
[0037]具体地,通过Ruby的扩展模块,即gem2rpm模块工具包来实现转换的过程。
[0038]进一步,首选,通过gem命令“gem build GEMSPEC”将Ruby源码生成gem软件包,并将生成的gem软件包拷贝一份。然后通过Ruby的扩展模块(gem2rpm模块)命令将所拷贝的gem软件包生成RPM SPEC文件。再后,将RPM spec文件和gem软件包分别放入设定目录结构的第一指定目录和第二指定目录中,在本实施例中,设定目录结构为rpmbuild,第一指定目录为SPECS目录,第二指定目录为SOURCES目录。最后,对这个目录结构执行命令“rpmbuild-bs RPMSPEC”,即可生成srpm文件,得到Rpm软件包。需要说明的是,srpm文件,就是源码文件封装成满足操作系统的软件包格式,可作为源码管理及二进制rpm生成,二进制rpm最终可安装到操作系统中。
[0039]通过上述操作,将Github网站上的Ruby源码转换SPEC文档进而转换为RPM软件包管理工具所需的SPEC档。
[0040]步骤S170,删除下载地址列表中此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤S130,直到将所有Ruby项目源码全部转换完成后结束。[0041]这些全部被转换成Rpm软件包的Ruby项目源码可以被推入例如koji服务器中重新编译构造。
[0042]另外,除了上述获取项目源码的方式外,还可以通过拷贝的方法来获取。例如,对于Github网站来说,其核心是git分布式版本控制系统,如果用户在系统中做过访问设置,通过命令行的方式,即非网页的方式,执行git的拷贝命令也是可以获取项目源码。
[0043]需要说明的是,还可以直接从其他网站(例如rubygems.0rg网站)上批量获得gem后缀的软件包。这样一来,如果从rubygems.0rg网站上将这些gem软件包下载到本地,就可以仅执行将gem软件包转换为srpm文件的流程。
[0044]综上所述,本实施例通过自动化的批量将将Github上面的Ruby语言编写的软件项目转换gem后缀的软件包,最终变成Rpm软件包管理工具可管理的Srpm文件,也就是说,批量的转换为rpm软件包,并放入rpm仓库。简而言之,就是将非RPM管理的源码项目转换为RPM管理的源码项目,进而丰富并快速的扩大使用Rpm软件包管理工具的操作系统的软件仓库的内容,为系统集成各种各样的应用软件提供原材料,减少开发流程的环节,提高开发效率。
[0045]第二实施方式
[0046]图2是根据本发明另一实施例的批量将Ruby源码转为Rpm软件包的系统的结构示意图,下面参考图2来详细说明本实施例的各个组成结构。
[0047]如图2所示,该系统包括获取模块21、第一生成模块22和第二生成模块23。
[0048]其中,获取模块21获取Ruby源码项目,通过gem命令将Ruby源码生成gem软件包,并对其进行备份。
[0049]具体地,该获取模块21进一步执行以下步骤:步骤10,获取项目源码的下载地址列表;步骤20,从该下载地址列表中读取一条项目源码地址,并通过git命令“gitcheckout URL”来根据该项目源码地址下载项目源码,其中,“URL”为项目源码地址;步骤30,通过判断项目源码的源码目录中是否存在标识文件“gem spec”来判断所下载的项目源码是否为Ruby项目源码,若不是,则从所述下载地址列表中删除此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤20。
[0050]第一生成模块22通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPMSPEC文件,该扩展模块命令为gem2rpm模块命令。
[0051]第二生成模块23将生成的RPM SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,并将所述设定目录结构生成Rpm软件包。具体地,也就是将RPMspec文件和gem软件包分别放入设定目录结构的第一指定目录和第二指定目录中,在本实施例中,设定目录结构为rpmbuild,第一指定目录为SPECS目录,第二指定目录为SOURCES目录,最后,对这个目录结构执行命令“rpmbuild-bs RPMSPEC”,即可生成srpm文件,得到Rpm软件包。
[0052]综上所述,本实施例通过自动化的批量将将Github上面的Ruby语言编写的软件项目转换gem后缀的软件包,最终变成Rpm软件包管理工具可管理的Srpm文件,也就是说,批量的转换为rpm软件包,并放入rpm仓库。简而言之,就是将非RPM管理的源码项目转换为RPM管理的源码项目,进而丰富并快速的扩大使用Rpm软件包管理工具的操作系统的软件仓库的内容,为系统集成各种各样的应用软件提供原材料,减少开发流程的环节,提高开发效率。
[0053]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉该技术的人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种Rpm软件包转换方法,其特征在于,包括: 获取gem软件包,并对其进行备份; 通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPM SPEC文件; 将生成的RPM SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,将所述设定目录结构生成Rpm软件包。
2.根据权利要求1所述的方法,其特征在于,通过以下步骤来获取gem软件包: 获取Ruby源码项目; 通过gem命令将Ruby源码生成gem软件包。
3.根据权利要求2所述的方法,其特征在于,通过以下步骤来获取Ruby源码项目: 步骤10,获取项目源码的下载地址列表; 步骤20,从该下载地址列表中读取一条项目源码地址,并根据该项目源码地址下载项目源码; 步骤30,判断所下载的项目源码是否为Ruby项目源码,若不是,则从所述下载地址列表中删除此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤20。
4.根据权利要求3所述的方法,其特征在于,在所述步骤10中, 通过git命令“git checkout URL”来根据项目地址下载项目源码,其中,“URL”为项目源码地址。
5.根据权利要求3所述的方法,其特征在于,在所述步骤30中, 通过判断项目源码的源码目录中是否存在标识文件“gem spec”来判断该项目源码是否是Ruby项目源码。
6.根据权利要求1-5中任一项所述的方法,其特征在于, 所述Ruby语言的扩展模块命令为gem2rpm模块命令。
7.根据权利要求1所述的方法,其特征在于, 通过执行命令“11)1]11311;[1(1-68 RPMSPEC”将所述设定目录结构生成Sprm文件,进而得到Rpm软件包。
8.—种Rpm软件包转换系统,其特征在于,包括: 获取模块,其获取Ruby源码项目,通过gem命令将Ruby源码生成gem软件包,并对其进行备份; 第一生成模块,其通过Ruby语言的扩展模块命令将所备份的gem软件包生成RPMSPEC文件; 第二生成模块,其将生成的RPM SPEC文件和gem软件包分别放入设定目录结构的第一目录和第二目录中,并将所述设定目录结构生成Rpm软件包。
9.根据权利要求8所述的系统,其特征在于,所述获取模块进一步用于: 步骤10,获取项目源码的下载地址列表; 步骤20,从该下载地址列表中读取一条项目源码地址,并通过git命令“gitcheckoutURL”来根据该项目源码地址下载项目源码,其中,“URL”为项目源码地址; 步骤30,通过判断项目源码的源码目录中是否存在标识文件“gem spec”来判断所下载的项目源码是否为Ruby项目源码,若不是,则从所述下载地址列表中删除此条下载地址,并判断更新后的下载地址列表是否为空,若为空则结束操作,否则返回步骤20。
10.根据权利要求8所述的系统,其特征在于,所述第二生成模块通过执行命令“rpmbuild-bs RPMSPEC”将所述设定目录结构生成Sprm文件,进而得到Rpm软件包。
【文档编号】G06F9/44GK103605520SQ201310597153
【公开日】2014年2月26日 申请日期:2013年11月22日 优先权日:2013年11月22日
【发明者】胡晓英, 沈永康 申请人:中标软件有限公司