一种搭建和应用OpensolarisIPS的方法转让专利

申请号 : CN201010164148.0

文献号 : CN101958920B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李开君

申请人 : 浪潮电子信息产业股份有限公司

摘要 :

本发明提供一种搭建和应用Opensolairs IPS的方法,在Opensolaris运行的服务器上搭建一个可供客户端访问、下载和安装的本地服务器IPS,搭建服务器IPS服务包括:能作为一个服务随系统启动而自动启动;能保证客户端最大限度的timeout时间和用户的访问线程数量threads;同步官方源码包,验证下载包的完整性,同时能够将源码包按照IPS发布包的规则发布到本地IPS服务器中;客户端应用程序能够正常访问、下载、安装服务端IPS包;使用DC完成一个完整的应用,生成可启动的ISO操作系统,并修改下载包上传到本地IPS服务器供客户端下载、安装使用;采用pkgrecv的方式下载最新版本包,它遍历官方网发布的所有包,判断每个包的发行版本、分支和发行时间,查找发行的最新版本的所有文件包,并记录包的信息,对检测到的新版本包进行下载,并验证下载包文件的完整性,然后发布到本地IPS服务器中,启动应用端服务,连接局域网IPS提供服务。

权利要求 :

1.一种搭建和应用Opensolaris IPS的方法,其特征在于,在Opensolaris运行的服务器上搭建一个可供客户端访问、下载和安装的本地IPS服务器,搭建IPS服务器服务包括:能作为一个服务随系统启动而自动启动;能保证客户端最大限度的timeout时间和用户的访问线程数量threads;同步官方源码包,验证下载包的完整性,同时能够将源码包按照IPS发布包的规则发布到本地IPS服务器中;客户端应用程序能够正常访问、下载、安装服务端IPS包;使用分发构建器DC完成一个完整的应用,生成可启动的ISO操作系统,并修改下载包上传到本地IPS服务器供客户端下载、安装使用;采用pkgrecv的方式下载最新版本包,它遍历官方网发布的所有包,判断每个包的发行版本、分支和发行时间,查找发行的最新版本的所有文件包,并记录包的信息,对检测到的新版本包进行下载,并验证下载包文件的完整性,然后发布到本地IPS服务器中,启动应用端服务,连接局域网提供IPS服务;

具体步骤如下:

下载源码包,在SUN的打包方式中,每个包的信息包括以下内容:功能名称、分支版本、编译版本、时间戳的信息,对同一个分支的包,通过分析时间戳来判断哪个是最新的包,因此,每个包都采用一种PKG方式将最新版本包信息全部记录到本地文件中,用pkgrecv的方式,根据文件中对包的描述信息下载同步所有包,整个过程用程序实现;

下载的文件的完整性验证,传统下载Opensolari s包的方式采用的wget/curl,它在传输、下载文件过程中,因为网络因素导致文件下载时常不完整,采用SHA1SUN的方式对下载包文件进行验证,Opensolaris包文件的结构是以文件目录形式存在的,每一功能包目录下有很多源程序、配置文件,这些文件的命名采用的是SHA1SUN的方式,也就是它的SHA1SUN值作为文件名称;这个目录下有一个对源程序文件进行管理的文件称为manifest,它其中的一个任务就是记录原始包文件的SHA1SUN的值,根据manifest的这个特点和文件本身的特性,采用自己的验证程序完成对下载文件的验证;

启动一个空文件包的IPS服务框架,在现有Opensolaris平台上通过包安装GUI工具安装相关的IPS包文件;在Nevada平台上则需要采用编译IPS源码的方式,采用两种方式搭建一个空文件包的IPS系统框架,第一种采用进程的方式;第二种采用启动一个服务的方式;端口存放目录采用第一种方式,或自行设置,采用服务的方式配置更大的sockect timeout和访问线程数量threads的最大值,这两个参数能保证客户端应用在网络环境不好或者速度不够的情况下,保证应用尽量不会中途停下,而影响开发工作,所述的IPS采用两种方式的结合;发布包到IPS服务器,下载的源码包只有发布到建好的IPS服务器中,IPS服务器才真正有价值,被客户端访问下载和安装,而不能将下载的源码包简单的存放到IPS服务器的目录中,因此,发布包是搭建IPS服务器重要的步骤,发布包的一般规则是创建功能包,编写manifest文件,打开包目录,输入文件编码ID,发布核心文件,发布结束退出;通过一个程序完成自动化发布包到本地IPS服务器上;

对IPS服务器进行验证,通过连接IPS在客户端安装程序实现快速安装;

在客户端用分发构建器DC应用程序来访问、下载局域网IPS服务器上的功能包,通过指定分发构建器DC应用中下载包的地址为IPS服务器的URL和端口,启动分发构建器DC应用的时候,它就会根据URL和端口访问程序需要的所有功能包,并下载安装节省时间。

说明书 :

一种搭建和应用OpensolarisIPS的方法

技术领域

[0001] 本发明涉及一种计算机应用技术,具体涉及Opensolaris操作系统定制及同步官方网站的包,验证包文件,搭建能够提供客户端访问的IPS(Image PackagingSystem)服务端框架,发布包到IPS服务器,提供定制系统所需的应用文件下载和包文件的发布,使用分发构建器DC(Distribution Constructor)应用制作ISO镜像,具体地说是一种搭建和应用OpensolarisIPS的方法。

背景技术

[0002] 随着SUN的操作系统相关的开源和其在功能上的优越性,短短几年时间内,激起很多开发者加入到SUN的开源社区Opensolaris社区,加入到它现有的开发项目或在Opensolaris的基础上开发自己的工程。上层应用开发很少涉及到跟操作系统相关的底层,而涉及到驱动开发,操作系统定制等底层应用将和自己的操作系统有着非常紧密的联系。OpensolarisIPS的机制是,访问、下载、安装包都需要从官方服务器下载。对于网络延长大或速度慢的客户端,将非常影响开发进度,也就是它是以服务器为主的形式。还有个不足就是应用端不能为了某个应用修改或增加或删除一些具体的功能包,一定程度上限制了开发的范围。因此,搭建一个本地的IPS服务器,实现一种同步官方网站的源码包就成为首要任务。
[0003] 以往同步的方式主要是以wget/curl为主的机制,它会下载官方网站上所有的发布包,包括各个版本,同一个版本不同时间的修改过的所有包文件都会同步到本地。不但数量上庞大,目前达到22863个,而且不断更新、增加;总文件大小上也是非常大,达到15GB,而且也在不断更新。Wget/curl还有个缺点就是,即使建立本地IPS服务器,客户端总会在下载安装大文件的时候,出现超时,而导致安装失败;即使客户端的超时限制设置很大,也无济于事。严重限制了IPS的使用范围。
[0004] 本专利主要从搭建,提供IPS服务,同步包到本地,发布包到IPS,验证IPS功能,应用IPS角度展开论述。

发明内容

[0005] 本发明的目的是提供一种搭建和应用Opensolaris IPS的方法。
[0006] 本发明的目的是按以下方式实现的,在Opensolaris运行的服务器上搭建一个可供客户端访问、下载和安装的本地服务器IPS,搭建服务器IPS服务包括:能作为一个服务随系统启动而自动启动;能保证客户端最大限度的timeout时间和用户的访问线程数量threads:同步官方源码包,验证下载包的完整性,同时能够将源码包按照IPS发布包的规则发布到本地IPS服务器中;客户端应用程序能够正常访问、下载、安装服务端IPS包;使用分发构建器DC完成一个完整的应用,生成可启动的ISO操作系统,并修改下载包上传到本地IPS服务器供客户端下载、安装使用;采用pkgrecv的方式下载最新版本包,它遍历官方网发布的所有包,判断每个包的发行版本、分支和发行时间,查找发行的最新版本的所有文件包,并记录包的信息,对检测到的新版本包进行下载,并验证下载包文件的完整性,然后发布到本地IPS服务器中,启动应用端服务,连接局域网IPS提供服务;
[0007] 具体步骤如下:
[0008] 下载源码包,在SUN的打包方式中,每个包的信息包括以下内容:功能名称,分支版本,编译版本,时间戳的信息,对同一个分支的包,分析时间戳来判断哪个是最新的包因此,每个包都采用一种PKG方式将最新版本包信息全部记录到本地文件中,用pkgrecv的方式,根据文件中对包的描述信息下载同步所有包,整个过程用程序实现;
[0009] 下载的文件的完整性验证,传统下载Opensolaris包的方式采用的wget/curl,它在传输、下载文件过程中,因为网络因素导致文件下载时常不完整,采用SHA1SUN的方式对下载包文件进行验证,Opensolaris包文件的结构是以文件目录形式存在的,每一功能包目录下有很多源程序、配置文件,这些文件的命名采用的是SHA1SUN的方式,也就是它的SHA1SUN值作为文件名称;这个目录下有一个对源程序文件进行管理的文件称为manifest,它其中的一个任务就是记录原始包文件的SHA1SUN的值,根据manifest的这个特点和文件本身的特性,采用自己的验证程序完成对下载文件的验证;启动一个空文件包的IPS服务框架,在现有Opensolaris平台上通过包安装GUI工具安装相关的IPS包文件;在Nevada平台上则需要采用编译IPS源码的方式,采用两种方式搭建一个空文件包的IPS系统框架,第一种采用进程的方式;第二种采用启动一个服务的方式;端口跟存放目录和第一种方式一样,或自行设置,采用服务的方式配置更大的sockect timeout和线程最大值threads,这两个参数能保证客产端应用在网络环境不好或者速度不够的情况下,保证应用尽量不会中途停下,而影响开发工作,本文的IPS采用两种方式的结合;
[0010] 发布包到IPS服务器,下载的源码包只有发布到建好的IPS服务器中,IPS服务器才真正有价值,被客户端访问下载和安装,而不能将下载的源码包简单的存放到IPS服务器的目录中,因此,发布包是搭建IPS服务器重要的步骤,发布包的一般规则是创建功能包,编写manifest文件,打开包目录,输入文件编码ID,发布核心文件,发布结束退出;通过一个程序完成自动化发布包到本地IPS服务器上;
[0011] 对IPS服务器进行验证,通过连接IPS在客户端安装程序实现快速安装;
[0012] 在客户端用分发构建器DC应用程序来访问、下载局域网IPS服务器上的功能包,通过指定分发构建器DC应用中下载包的地址为IPS服务器的URL和端口,启动分发构建器DC应用的时候,它就会根据URL和端口访问程序需要的所有功能包,并下载安装节省时间。
[0013] 本发明的优异效果是:比较局域网和官方网的下载、安装包的速度可知,局域网的速度要快10倍以上,完成一次分发构建,整体时间只需要官方网站的1/4多点。大大的提高了分发构建的开发速度和其他的安装包速度,开发者还能随意增加定制的包和修改分发构建器DC应用,大大开拓了开发者的开发范围。

附图说明

[0014] 附图1是IPS的同步和应用的结构图;
[0015] 附图2是IPS开发和应用的一般流程;
[0016] 附图3是PKG包组成的一般结构。

具体实施方式

[0017] 参照说明书附图对本发明的方法作以下详细地说明。
[0018] 本发明的结构区别于以往的下载Opensolaris包的wget方式,具体步骤如下:
[0019] 采用pkgrecv的方式下载最新版本包,它遍历官方网发布的所有包,判断每个包的发行版本、分支和发行时间,查找发行的最新版本的所有文件包,并记录包的信息,在数量和大小上比wget方式要小很多,对检测到的新版本包进行下载,并验证下载包文件的完整性,然后发布到本地IPS服务器中,启动应用端服务,连接局域网IPS,提供服务,应用流程如图1所示,开发流程如图2所示。
[0020] 下载源码包,在SUN的打包方式中,每个包的信息包含几个主要部分:功能名称,分支版本,编译版本,时间戳等信息,如图3所示。对同一个分支的包,分析时间戳来判断哪个是最新的包。因此每个包都采用一种PKG方式可以将最新版本包信息全部记录到本地文件中。用pkgrecv的方式,根据文件中对包的描述信息下载同步所有包。整个过程用程序实现。
[0021] 下载的文件的完整性验证。传统下载Opensolaris包的方式采用的wget/curl,它在传输、下载文件过程中,因为网络等因素导致文件下载不完整,而且存在几率非常大。本发明采用SHA1SUN的方式对下载包文件进行验证。Opensolaris包文件的结构是以文件目录形式存在的,每一功能包目录下有很多源程序、配置文件等,这些文件的命名采用的是SHA1SUN的方式,也就是它的SHA1SUN值作为文件名称;这个目录下有一个对源程序等文件进行管理的文件称为manifest,它其中的一个任务就是记录原始包文件的SHA1SUN的值。
根据manifest的这个特点和文件本身的特性,采用自己的验证程序完成对下载文件的验证。启动一个空文件包的IPS服务框架。在现有Opensolaris平台上可以通过包安装GUI工具安装相关的IPS包文件;在Nevada平台上则需要采用编译IPS源码的方式。可以采用两种方式搭建一个空文件包的IPS系统框架。第一种采用进程的方式;第二种采用启动一个服务的方式。端口跟存放目录和第一种方式一样,也可自行设置。采用服务的方式可以配置更大的sockect_timeout和线程最大值threads,这两个参数能保证客户端应用在网络环境不好或者速度不够的情况下,保证应用尽量不会中途停下,而影响开发工作。本IPS采用两种方式的结合。
[0022] 发布包到IPS服务器。下载的源码包只有发布到建好的IPS服务器中,IPS服务器才真正有价值,被客户端访问下载和安装。而不能将下载的源码包简单的存放到IPS服务器的目录中,因此,发布包是搭建IPS服务器重要的步骤。发布包的一般规则是创建功能包,编写manifest文件,打开包目录,输入文件编码ID,发布核心文件,发布结束退出。通过一个程序完成自动化发布包到本地IPS服务器上。以往采用WGET的方式下载后,发布的包到系统会导致客户端连接持续超时而不能完成正常的完成。
[0023] 对IPS服务器进行验证,可以通过连接IPS在客户端安装程序,可很快的完成安装。
[0024] 在客户端用分发构建器DC应用程序来访问、下载局域网IPS服务器上的功能包。通过指定分发构建器DC应用中下载包的地址为IPS服务器的URL和端口,启动分发构建器DC应用的时候,它就会根据URL和端口访问程序需要的所有功能包,并下载安装,大大节省时间。
[0025] 本发明的一种搭建和应用Opensolaris IPS的方法,下面参照附图1,2和3,对本发明的内容以一个具体实例来描述实现这一体系结构的过程。
[0026] 图1是使用IPS应用的一个结构图。图2是IPS开发和应用的大致流程。
[0027] 实施例
[0028] 从官方服务器同步最新版本的源码,我们只需要收集到所有这个分支版本的包,统计并保存到本地,然后再通过PKG方式连接远程官方网对每个包进行下载。同步的方式只需http的形式。
[0029] 抓取包列表和下载包的部分代码:
[0030] pkgrecv-s$URL -n>./list
[0031] pkgrecv-s$URL ‘cat list’
[0032] 下载到本地的包通过每个包目录里面的manifest文件和包文件本身的特性,使用SHASISUM进行验证,验证文件是否已经下载完整和文件包有无遗漏。
[0033] 验证的部分代码如:
[0034]
[0035] 启动IPS框架,事先准备好后端IPS运行的目录和对外提供的访问端口。
[0036] /usr/lib/pkg.depotd-d/export/home/ips-p 8080其中ips是IPS月艮务器运行的后端目录,8080是对客户端访问的端口。
[0037] 启动这个客户端的最大使用线程和超时最大值。
[0038] 先用svccfs-s pkg/server listprop,查看PKG系统默认的状态。
[0039] 设置IPS端口svccf-s application/pkg/server setprop pkg/port-8080[0040] 设置IPS的存放目录svccf-s application/pkg/server serproppkg/nst_root=/export/home/ips
[0041] 设置IPS的最大延时svccf-s application/pkg/server serproppkg/socket_t imeout=300
[0042] 设置IPS可提供的线程数svccf-s application/pkg/server serproppkg/threads=60
[0043] 用svccfs-s pkg/server listprop或者firefox就可以看到IPS的运行状态。
[0044] 查看上面修改状态,然后重启IPS服务,用IE[0063]发布包到IPS。
[0045] 采用pkgsend的方式,由于每要发布一个包中途都会产生一个PKG_TRAN ID,它是这个包的关键标识符,因此需要记录。所有的包都发布到IPS,采用程序实现,发布包的部分代码如:
[0046]
[0047] 完成包发布后,刷新浏览器,可以看到发布包的数量也变成需要发布包的数量。在正式为其他应用提供服务之前,先验证IPS的可用性。为避免使用IPS对现有系统的影响,创建一个临时目录操作。具体的是创建ltmp/my_img,用pkg命令安装一些包。
[0048] pkg image-create-F-a test=http://localhost:8080/tmp/my_img[0049] pkg-R/tmp/test_img install SUNWcsd //非常小的包(0.1M)[0050] pkg-R/tmp/test_img install SUNWcs //大的包(15M)
[0051] pkg-R/tmp/test_img install slim_install //非常大的包(500M以上)[0052] 能够正常的安装,说明IPS和发布的包都是可用的。
[0053] 在发布包之前,对下载的包文件进行源码和manifest修改,再发布到IPS系统,可以使包能提供应用所需要的功能。
[0054] 分发构建器DC应用是通过IPS,下载、并安装所需要的包,然后定制操作系统的一个应用。完成一个分发构建应用,需要在分发构建器DC中指定IPS。
[0055]
[0056]
[0057] 其中pkg_repo_default_authority部分是分发构建器DC在下载安装包过程中连接的IPS地址。post_install_default_authority是安装完成之后,需要升级安装其他包的时候,默认指定的IPS地址。
[0058] 比较本地IPS和远程IPS。
[0059] 比较局域网和官方网的下载、安装包的速度可知,局域网的速度要快10倍以上,完成一次分发构建,整体时间只需要官方网站的1/4多点,大大的提高了分发构建器DC的开发速度和其他的安装包速度,开发者还能随意增加定制的包和修改分发构建器DC应用,大大开拓了开发者的开发范围。