CN100426235C - 在软件包管理***将用户进程表示为软件包的***和方法 - Google Patents
在软件包管理***将用户进程表示为软件包的***和方法 Download PDFInfo
- Publication number
- CN100426235C CN100426235C CNB2006101437016A CN200610143701A CN100426235C CN 100426235 C CN100426235 C CN 100426235C CN B2006101437016 A CNB2006101437016 A CN B2006101437016A CN 200610143701 A CN200610143701 A CN 200610143701A CN 100426235 C CN100426235 C CN 100426235C
- Authority
- CN
- China
- Prior art keywords
- software package
- bag
- consumer
- consumer process
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的***、方法和计算机程序产品。该方法包括创建包括用户进程和***进程中的至少一种进程的至少一个包。该至少一个包包括与软件包一致的结构,使得该至少一个包能够由软件包管理***管理。经由该软件包管理***将该至少一个包存储于信息***上。
Description
技术领域
本发明一般地涉及软件包管理***领域,并且更特别地涉及安装、移除和跟踪由软件包管理***管理的软件包。
背景技术
很多现代计算环境使用某种形式的软件包管理***来管理安装在***上的软件应用程序的生命周期。软件包管理***是用于使软件应用程序包在计算机上的安装、升级、配置和移除的处理自动进行的工具的集合。在采用软件包管理***的计算机***中,软件(例如应用程序)分布在通常编译为单一文件的包中。软件包一般包括安装该软件所需的软件文件以及实现为使得用户能够在计算机上安装该软件或在以后卸载该软件的机制。软件包还包括称为依赖关系的其他软件包的列表,这些其他软件包是该软件正确运行所需的。软件包管理***对安装在***上的所有软件包进行组织并维持这些软件包的可用性。
图1在典型的软件包管理***上示出了一种用于安装软件包的现有技术方法。该现有技术软件包管理***在步骤102中执行依赖关系检查。如果在步骤104中确定所需的软件包可用,则该管理***在步骤108中针对待安装的软件包执行冲突检查。如果所需的软件包不可用,或者在步骤110中确定存在冲突,则分别在步骤106和步骤112中生成错误消息。仅当所有所需的软件包都可用并且不存在冲突时,该管理***才在步骤114中执行安装前任务(pre-install task)。安装前脚本(pre-installscript)用于在脚本的实际安装之前运行该脚本。软件包管理***在步骤116中管理软件包的配置文件,并随后在步骤118中将实际应用程序文件解包到其正确位置并设置适当的所有者和许可权限。在步骤120中执行安装后任务(post-install task)。例如,如果需要完成任何所需的任务,诸如启动后台程序(daemon)或注册新安装的应用程序,则执行安装后脚本(post-install script)。在步骤122中用关于已安装的软件包的信息来对软件包数据库进行更新。
尽管软件包管理***和软件包提供了一种用于分布软件包并且还对安装在***上的软件包进行管理的有用的***,但这两个组件都具有大量缺陷、问题和缺点。
当前的软件包管理***的一个问题是,尽管这些***对描述软件包的复杂的依赖关系以及其与其他软件包的冲突来说工作良好,但当前的使用局限于静态的应用程序信息。当前的软件包管理***没有实现对动态的运行时信息的描述。并且,只将在特定时间上运行的***和用户进程记入日志。没有确定诸如所使用的库之类的依赖关系的版本、运行时命令选项等。没有创建在其上执行作业的***的精确副本。
另一个问题是,当前没有供软件包管理器用于表明卸载一个程序是否安全的通用方法。现有解决方案能够做到的最好的程度是表明诸如Windows中的DLL(动态链接库)之类的文件是否正被使用,或者使用特定的锁定文件来表示应用程序正被使用。这一方法不是非常完善,这意味着当前的***常常会在卸载进行到一半时才碰到正被使用的文件,或者该***甚至不知道要检查锁定文件。
另一个问题是,传统的软件包管理器仅实现了应用程序而不是用户进程(作业)的安装、卸载以及对安装状态的跟踪。一旦安装了应用程序,就没有用于执行利用已安装的应用程序用户进程的的相容方法了。此外,尽管当今的计算作业正变得越来越复杂和相互依赖,但软件包管理***却仅管理软件包而不处理作业与可安装的应用程序之间的依赖关系。作业通常具有复杂的依赖关系,并且现有的***需要的说明必须存在的特定文件以及创建用于运行作业的环境。另外,在很多实例中,可以获得作业的结果和输出,但在执行作业时***的运行时状态或应用程序状态是未知的。
又一个问题是,软件包包含设计为运行于一组特定的硬件和软件上的应用程序,并且必须在通常称为软件包描述符的软件包元信息中对此进行指定。大多数封装***使用诸如“x86”、“mips”或“amd64”之类的单一字符串来表示这种性能。即使是诸如采用格式“cpu-vendor-[kernel-]system(中央处理器-供应商-[内核]-***)”(即“i686-pc-linux-gnu”或“i686-pc-cygwin”)的综合方案也是不够的。例如,存在软件包可能依赖的其他重要设置,并且在新的性能出现时难以对软件包进行扩展。使用单一字符串强制每个***采用预定的平台。
当前,软件包可以测试平台字符串中不存在的性能的唯一方法是开始安装过程并在安装前阶段期间采用平台特定的测试(platform-specifictesting)来进行测试,该平台特定的测试很有可能不是可移植的并且将需要针对每个***而单独地设计。如果这些性能得不到支持,则安装过程中止。如果出现问题的安装是一系列安装的一部分,则该安装可能为***留下很多不必要的软件包,这些软件包是作为已中止的软件包的先决条件而安装的。
另一个问题是,试图使用包来定义整个平台的***仅使用单一的包,该包包含容纳性能信息的文件。这种性能信息没有扩展到封装***(通过封装***其他包将依赖于存在于***上的特定性能)。这种类型的单一包具有与字符串描述符相同的问题,即如果向***添加性能(硬件或软件),则该包不能容易地扩展。如果要组合多个***的性能,诸如来自Redhat、SuSE内核和Debian封装***的文件***标准,则现有技术的方法将需要创建不可重用的单一包。
因此,需要克服如上所述的现有技术的问题。
发明内容
简而言之,根据本发明,公开了一种在信息处理***产品上的用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的***、方法和计算机程序产品。该方法包括创建包括用户进程和***进程中的至少一种进程的至少一个包。该至少一个包包括与用户进程和***进程中的至少一种进程相关联的至少一个需求,还包括与用户进程和***进程中的至少一种进程相关联的冲突信息。该至少一个包包括与软件包一致的结构,使得该至少一个包能够由软件包管理系管理。经由该软件包管理***将该至少一个包安装于信息处理***上。
在本发明的另一实施例中,公开了一种用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的***。该***包括存储器以及可通信地连接到该存储器的信息处理***。该***还包括包含用户进程和***进程中的至少一种进程的至少一个包。该至少一个包包括与用户进程和***进程中的至少一种进程相关联的至少一个需求。该至少一个需求标识用户进程和***进程中的至少一种进程所需的应用程序、另一用户进程和另一***进程中的至少一个。该至少一个包还包括与用户进程和***进程中的至少一种进程相关联的冲突信息。该***还包括软件包管理***,该软件包管理***包括用于将该至少一个包安装在信息处理***上的安装器。该软件包管理***还包括用于存储该至少一个包的软件包数据库。该软件包数据库包括针对与用户进程和***进程中的至少一种进程相关联的需求和冲突中的至少一个的一组条目。
在本发明的另一实施例中,公开了一种用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的计算机程序产品。该计算机程序产品包括创建包括用户进程和***进程中的至少一种进程的至少一个包。该至少一个包包括与软件包一致的结构,使得该至少一个包能够由软件包管理***管理。经由该软件包管理***将该至少一个包安装于信息处理***上。
本发明的前述实施例的一个优点是,可以将用户进程编译到包中,从而利用现有工具来管理包。可以将用户进程的先决条件描述为可以由现有的包管理器来解析的一组依赖关系。
附图说明
附图用于进一步说明根据本发明的各种实施例并用于解释根据本发明的各种原理和优点,在附图中,在所有的不同视图中,相同的参考标号表示相同的或功能上类似的单元,并且附图连同以下详细描述一起包括在本说明书中并形成本说明书的一部分。
图1是示出安装软件包的现有技术处理的操作流程图;
图2是说明根据本发明实施例的示例性***的框图;
图3是说明根据本发明实施例的用户***的框图;
图4是说明根据本发明实施例的软件包管理***的框图;
图5是说明根据本发明实施例的示例性软件包的框图;
图6是说明根据本发明实施例的示例性***/用户进程包的框图;
图7是说明根据本发明实施例的示例性***性能包的框图;
图8说明了根据本发明实施例的图5的软件包中的说明文件的更详细的视图;
图9说明了根据本发明实施例的图6的用户进程包中的说明文件的更详细的视图;
图10说明了根据本发明实施例的图7的***性能包中的说明文件的更详细的视图;
图11说明了根据本发明实施例的示例性包数据库;
图12是示出根据本发明实施例的应用程序、用户进程以及***性能包之间的依赖关系/冲突关系图;
图13是说明根据本发明实施例的对***/用户进程包进行安装的处理的操作流程图;
图14是说明根据本发明实施例的图13的安装处理的继续的操作流程图;
图15是说明根据本发明实施例的对用户进程包进行监控和卸载的处理的操作流程图;并且
图16是说明根据本发明实施例的对***性能包进行安装的处理的操作流程图。
具体实施方式
根据需要,在此公开了本发明的详细实施例。然而,应当理解,所公开的实施例只是本发明的示例,可以以各种形式具体实现本发明。因此,在此所公开的特定的结构上和性能上的细节不应解释为限制性的,而只应解释为权利要求的基础以及启发本领域的普通技术人员以几乎任何适当的详细结构来不同地使用本发明的代表性基础。此外,在此所用的术语和措词并非旨在进行限制,而是旨在提供对本发明的可理解的描述。
在此所用的术语“一”或“一个”应定义为一个或多个。在此所用的术语“多个”应定义为两个或多于两个。在此所用的术语“另一”应定义为至少第二个或更多。在此所用的术语“包括”和/或“具有”应定义为包括(即开放式的语言)。在此所用的术语“耦合”应定义为连接,但不一定是直接地连接,并且不一定是机械地连接。在此所用的术语“程序”、“软件应用程序”等应定义为设计用于在计算机***上执行的指令序列。程序、计算机程序或软件应用程序可以包括子程序、函数、过程、对象方法、对象实现、可执行应用程序、applet(JAVA小应用程序)、servlet、源代码、对象代码、共享库/动态加载库以及/或者设计用于在计算机***上执行的其他指令序列。
根据实施例,本发明通过以软件包格式来提供用户进程而克服了现有技术的问题,该软件包格式使得可以在软件包数据库中提供关于诸如所使用的库之类的依赖关系的版本、运行时命令选项等信息。另外,以软件包格式描述***性能/资源使得在添加了新性能时软件包可扩展并且实现了对该软件设计为在其上运行的硬件和软件的更完整的说明。此外,与在安装步骤期间对性能的运行时检查相对,本发明在依赖关系解析阶段中实现了更细化(finer-grained)的依赖关系。
示例性***
根据本发明的实施例,如图2所示,说明了示例性***200。图2示出了***200,其包括至少一个用户***202、204、206、208。用户***1202和用户***2204通过网络212与至少一个服务器210进行通信。根据一个实施例,网络212是LAN(局域网)、WAN(广域网)、万维网、有线网络、无线网络,等等。在替代性的实施例中,用户***1202和用户***2204是独立的***并且不连接到网络212。在另一实施例中,用户***1202和用户***2204通过IR(红外)、有线方式、无线方式、蓝牙或本领域中已知的任意其他类似的方式直接连接到彼此。
在一个实施例中,用户***1202和用户***2204包括至少一个用户进程(作业)包214、216和/或***性能包222、224。用户***202、204还包括软件包328(图3)。以下将对用户进程包214、***性能包222和软件包328(图3)进行更详细的讨论。另外,在一个实施例中,用户***1202和用户***2204还包括***进程包(未示出)。在以下段落中讨论了用户进程包,该讨论也适用于***进程包。
在一个实施例中,***200包括一组用户***206、208。群组230例如是工作组、家庭网络组、游戏网络组、计算集群,等等。每个群组用户***206、208通过本地网络234与至少一个本地服务器232进行通信。本地网络234例如是内网。群组用户***206、208还通过网关236与网络212进行通信。每个群组用户***206、208包括至少一个用户进程(作业)包218、220和/或***性能包226、228,以下将对其中每个进行更详细的讨论。在替代性的实施例中,服务器210和本地服务器232也包括至少一个用户进程(作业)包(未示出)和/或***性能包(未示出)。
示例性用户***
图3是是说明根据本发明实施例的用户***1202的更详细视图的框图。尽管以下讨论是针对用户***1202的,但该讨论同样适用于如图2所示的其他用户***204,群组用户***206、208,服务器210,以及本地服务器232。用户***1202基于适合于实现本发明的示例性实施例的适当地配置的处理***。任意适当地配置的处理***都类似地能够被本发明的实施例用作用户***1202,这些处理***例如个人计算机、工作站、PDA(个人数字助理)等。用户***1202包括计算机302。计算机302具有处理器304,该处理器304连接到主存储器306、大容量存储接口308、终端接口310和网络适配器硬件312。***总线314将这些***组件互连。大容量存储接口308用于将诸如数据存储设备316之类的大容量存储设备连接到用户***1202。一种特殊类型的数据存储设备是诸如软盘驱动器之类的计算机可读介质,其可以用于将数据存储到软盘318或CD(压缩光盘)(未示出)或者从软盘318或CD读取数据。另一类型的数据存储设备是配置为支持NTFS(新技术文件***)类型的文件***操作的数据存储设备。
主存储器306包含通信软件320、数据322、操作***映像324、软件包管理***326、软件包328、用户进程包214、***性能包222以及应用程序330。在一个实施例中,主存储器306中存在包326、214、222的任意组合。应用程序330例如正在运行或等待被执行。尽管示出为并发地驻留在主存储器306中,但显然主存储器306的每个相应组件不需要每时每刻或甚至同时全部驻留在该主存储器306中。在一个实施例中,用户***1202利用常规的虚拟寻址机制来使得程序表现得仿佛其有权访问在此称为计算机***存储器的大型的单一存储实体,而不是访问多个较小的存储实体,诸如主存储器306和数据存储设备316。注意,术语“计算机***存储器”在此用于一般地指代用户***1202的整个虚拟存储器。
尽管对于计算机302仅示出了一个CPU(中央处理单元)304,但可以等效地采用具有多个CPU的计算机***。本发明的实施例还包括多个接口,每个接口包括用于从CPU 304卸载进程的单独的完全编制好的微处理器。终端接口310用于将一个或多个终端332直接连接到计算机302以提供到用户***1202的用户接口。这些终端332用于使得***管理员或用户可以与用户***1202进行通信,其中这些终端332可以是非智能的或完全可编程的工作站。终端332还可以包括用户接口和***设备,这些***设备连接到计算机302并由包括在终端I/F(接口)310中的终端接口硬件控制,该终端接口硬件包括视频适配器和用于键盘、指示设备等的接口。
操作***324是适当的多任务操作***,诸如Linux、UNIX、Windows XP和Windows Server 2003操作***。本发明的实施例能够采用任意其他适合的操作***。本发明的某些实施例采用诸如面向对象的框架机制之类的体系结构,该体系结构使得可以在位于用户***1202中或者在替代性的实施例中位于群组用户***206、208中的任意处理器上执行操作***324的组件的指令。
网络适配器硬件312用于提供到网络212和/或本地网络234的接口。本发明的实施例能够适用于与包括目前的模拟和/或数字技术或者经由未来的联网机制的任意数据通信连接一起工作。
尽管在全功能性的计算机***中描述了本发明的示例性实施例,但本领域的普通技术人员可以理解,可以将这些实施例作为程序产品经由软盘(例如软盘318)、CD ROM(压缩光盘-只读存储器)或其他形式的可读介质或者经由任意类型的电子传输机制发行。
示例性软件包管理***
图4示出了图3的软件包管理***326的更详细的视图。软件包管理***326的组件可以变化并且以下是软件包管理***326的一般非限制性描述。软件包管理***326包括软件包安装器402,该软件包安装器402用于安装包214、222、328的内容并执行与安装过程相关联的动作。软件包管理***326还包括软件包卸载器404,该软件包卸载器404用于卸载包214、222、328并执行与卸载过程相关联的动作。软件包管理器406对已安装的包214、222、328进行管理,并且软件包更新器408执行对已安装的包214、222、328来说可用的任意更新。软件包管理***326还包括软件包数据库410,该软件包数据库410用于存储已安装的包214、222、328。
示例性软件包
图5示出了根据本发明实施例的示例性软件包328的更详细的视图。图5示出了包括档案文件502的软件包328。档案文件502包括待安装的应用程序文件504、506、508,以及说明文件510。说明文件510描述了软件包及其需求/依赖关系。说明文件510的元数据512例如包括对待安装的软件的概述,软件包328的版本,创建该软件包的实体的名称,等等。元数据512还包括软件包328的需求/依赖关系的列表。例如,需求1/依赖关系1514列出了为使软件包328正确运转而需要安装的其他软件包。说明文件510还包括冲突信息516和***性能包需求518。冲突信息516例如列出了如果运行或安装就会导致软件包328的安装失败的其他软件包。***性能包需求518列出了安装该软件所需的***性能包。
档案文件502还包括可选的安装前脚本520、安装后脚本522、卸载前脚本524以及卸载后脚本526。可选的安装前脚本520使得可以在实际安装软件包328之前执行脚本。例如,可选的安装前脚本520可以用来运行用于检查软件包的GNU(网络对象模型环境)隐私保护(“GPG”)签名的脚本,以验证软件包328是否已经被篡改。可选的安装后脚本522例如使得可以完成在安装之后需要完成的任意所需的任务,诸如启动后台程序或注册新安装的应用程序。可选的卸载前脚本524和卸载后脚本526例如使得可以在对应用程序进行卸载之前和对应用程序进行卸载之后清除不再需要的任意文件。
示例性用户进程(作业)包
图6示出了用户进程包214的更详细的视图。尽管以下讨论是针对用户***1202的用户进程包214的,但该讨论同样适用于如图2所示的其他用户进程包216、218、220。图6示出了包括档案文件602的用户进程包214。用户进程(作业)是对应用程序的实例化。例如,用户进程包214可以用于运行从以上针对图5所讨论的软件包328安装的应用程序。在另一实施例中,用户进程是称为“批作业”的被封装到用户进程包214中的长期运行进程(long-running process)。用户进程或作业由***用户或由***自身提交。档案文件602包括使用户进程正确运行所需的数据文件604、606。
档案文件602还包括用户进程说明文件608。用户进程说明文件608描述了用户进程包214及其需求/依赖关系。在一个实施例中,用户进程说明文件608的元数据610包括对待安装的用户进程的概述,用户进程包214的版本,创建用户进程包214的实体的名称,等等。元数据610还包括用户进程包214的需求/依赖关系的列表。例如,需求1/依赖关系1612列出了为使用户进程包214正确运转而需要存在的(已经安装的和/或正在运行的)其他用户进程包和软件包。因此,在用户进程包与软件包之间创建了相互依赖关系。用户进程说明文件608还包括冲突信息614。冲突信息614例如列出了如果运行或安装就会导致用户进程包214的安装进程失败的其他用户进程包和软件包。
档案文件602还包括可选的安装前脚本616、安装后脚本618、卸载前脚本620以及卸载后脚本622。可选的安装前脚本616使得可以在实际安装用户进程包214之前执行脚本,以便执行使用户进程运行所需的任意基本设置(setup)。例如,可选的安装前脚本616可以用来运行用于创建目录、设置环境变量、复制所需文件、检查用户进程包214的GPG签名等的脚本。可选的安装后脚本618例如生成使***的调度器开始执行已安装的用户进程的脚本。可选的安装后脚本618还触发对用户进程的卸载过程。可选的卸载前脚本620和卸载后脚本622例如使得可以在对用户进程进行卸载之前和对用户进程进行卸载之后清除不再需要的任意文件。
根据以上讨论可以看出,用户进程包214的格式和内容与软件包328的格式和内容类似。因此,根据本发明的实施例,用户进程可以由诸如软件包管理***326之类的现有软件包管理***来处理和管理。
将用户进程/作业表示为与应用程序并列的软件包使得可以将用于管理软件包的现有工具的优点用于用户进程。此外,可以将用户进程的先决条件描述为可以由现有的软件包管理器解析的一组依赖关系。将软件包元数据与用户进程相集成使得可以将用户进程需求描述为一组软件包或描述为其他作业。这提供了一种用于确定用户进程需求是否得到满足的有效方式。可以确定和识别遗漏的程序或作业。此外,现在可以描述动态的运行时信息,并且该信息现在可以由诸如软件包管理***326之类的现有的软件包管理***来管理。
将用户进程提供为软件包结构还实现了对运行时环境的复制。例如,如果将用户进程编译到包括软件包结构的包中并将软件包数据库410的变化记入日志,则用户可以得到关于在任意给定时间上***上正在运行的内容的状态快照(snapshot)。由于将用户进程表示为与软件包结构一致的包,因此能够在软件包数据库410中提供关于诸如所用的库之类的依赖关系的版本、运行时命令选项等信息。利用这种信息,可以对执行用户进程的***进行复制。
示例性***性能包
图7示出了***性能包222的更详细的视图。尽管以下讨论是针对用户***1202的***性能包222的,但该讨论同样适用于如图2所示的其他***性能包224、226、228。***性能包222例如表示为运行已从软件包328安装的软件而使用的特定平台或所需的***资源。例如,***性能包222表示虚拟机、处理器指令集、文件***布局、API(应用程序接口),等等。另外,在一个实施例中,***性能包222是虚拟包。图7示出了包括档案文件702的***性能包222。
档案文件702包括说明文件708。说明文件708描述了***性能包222及其需求/依赖关系。在一个实施例中,***性能说明文件708的元数据710包括对由***性能包222表示的***性能的概述,***性能包222的版本,创建***性能包222的实体的名称,等等。元数据710还包括***性能包222的需求/依赖关系的列表(未示出)。性能信息712标识了由***性能包222描述的***性能。***性能说明文件708还包括冲突信息714。冲突信息714例如列出了如果在当前***上运行或存在就会导致***性能包222的安装失败的其他***资源。
档案文件702还包括可选的安装前脚本716、安装后脚本718、卸载前脚本720以及卸载后脚本722。以下是可选的安装前脚本716、安装后脚本718、卸载前脚本720以及卸载后脚本722的示例性功能的非限制性示例。在一个实施例中,可选的安装前脚本716使得可以在实际安装***性能包222之前执行脚本,以便执行安装所需的任意基本设置。例如,可选的安装前脚本716可以用来运行用于创建目录、设置环境变量、复制所需文件、检查***性能包222的GPG签名等的脚本。在一个实施例中,可选的安装后脚本718实现了完成在安装之后需要完成的任意所需的任务。在一个实施例中,可选的卸载前脚本720和卸载后脚本722使得可以在对***性能包222进行卸载之前和对***性能包222进行卸载之后清除不再需要的任意文件。
***性能包222的格式和内容与软件包328的格式和内容非常类似。换言之,根据以上讨论可以看出,***性能包222所具有的结构与软件包328的结构一致。因此,根据本发明的实施例,***性能包222可以由现有软件包管理***来处理和管理。
将诸如硬件和软件性能之类的***资源描述在包中的一个优点是,不再需要指定软件设计为在其上运行的硬件和/或软件的字符串描述。字符串描述不提供对软件包所依赖的内容的完整描述。另外,当新的性能出现时,难以对字符串描述进行扩展。例如,***可能支持POSIX(可移植操作***接口)及各种扩展,或者Win32或.NET。***的文件***布局可以在例如Redhat、BSB或Linux Standard Base(Linux标准基础)上形成。软件包中的字符串描述不考虑软件包可能依赖的这些其他性能。根据本发明,***性能包222在添加新性能时是可扩展的,并且***性能包222实现了对软件设计为在其上运行的硬件和软件的更完整的说明。
本发明的***性能包222的另一个优点是,由于没有强制***采用(由字符串描述)预先定义的平台,因此实现了对软件包的优化的有目的安装。例如,如果针对i686机器开发了支持MIPS(每秒百万条指令)指令集的新的仿真器并采用了对***性能的字符串描述,则必须定义诸如i686+MIPS之类的新的体系结构。将需要对软件包管理工具进行重新编码以接受这一新的体系结构。然而,如果使用***性能包来处理体系结构,则仅需下载现有的MIPS体系结构包并将其安装到与现有的i686***性能包并列的软件包数据库410。
此外,如果要组合多个***的性能,例如来自Redhat、SuSE内核和Debian封装***的文件***标准,则将需要创建不可重用的单一包。然而,通过实现本发明的***性能包,将存在针对这些性能中的每个性能的***性能包,并且这些***性能包可以彼此并列地安装以定义***的平台。
示例性软件包说明文件
图8更详细地示出了软件包说明文件510。图8示出了用于软件包328的示例性元数据512。图8的说明文件510中的信息仅仅是包括在说明文件中的一部分示例性信息而非穷举。另外,元数据512包括概述信息802,其给出了对所封装的软件的简短描述。名称信息804定义了实际上将用于软件包的称谓。版本信息806是正被封装的软件的版本,并且名称发布信息808表示在当前版本下已经对软件进行封装的次数。同样还包括URL(统一资源定位符)信息810和源信息812。URL信息810指向用于正被封装的软件的文档资料,并且源信息812向软件包管理***326提供源文件名称。
元数据512还包括许可信息814,其描述了与待安装的软件相关联的许可的类型。还包括了群组信息816,其限定了应当如何将已封装的软件与其他软件包组合成组。元数据512还包括需求1/依赖关系1信息514。如以上针对图5所讨论的,需求1/依赖关系1信息514列出了正确安装当前的软件包328所需的软件包及其版本(如果可应用的话)。例如,为使软件包328正确安装,需要安装版本大于或等于3.5的应用程序X。元数据512还包括冲突信息516。如以上针对图5所描述的,冲突信息516列出了如果运行和/或安装就会导致软件包328的安装失败的任意软件及其版本(如果可应用的话)。例如,如果安装和/或运行了版本低于1.0的应用程序F,则不会安装软件包328。
***资源包需求518同样包括在元数据512中,该***资源包需求518列出了使软件正确运转所需的任意硬件或软件性能。例如,***性能包需求518阐明了,为使软件正确运转而需要存在的***性能A(Syscap A)包或***性能Y(Syscap Y)包。更详细地描述软件及其功能的描述信息818同样包括在元数据512中。***性能A包和***性能Y包例如可以是用于Sun SPAC(sparc)平台、i386平台、Power PC(ppc)平台等的包。
示例性用户进程(作业)包说明文件
图9更详细地示出了用户进程(作业)包说明文件608。图9示出了用于用户进程包214的示例性元数据610。图9的用户进程(作业)包说明文件608中的信息仅仅是包括在用户进程(作业)包说明文件608中的一部分示例性信息而非穷举。此外,元数据610还可以变化并且不限于前述实施例。元数据610包括概述信息902,其给出了对所封装的用户进程的简短描述。名称信息904定义了实际上将用于用户进程包214的称谓。版本信息906是用户进程的版本,并且名称发布信息908表示在当前版本下已经对用户进程进行封装的次数。同样还包括URL(统一资源定位符)信息910和源信息912。URL信息910指向用于正被封装的用户进程的文档资料,并且源信息912向软件包管理***326提供了源文件名称。
元数据610还包括群组信息,其限定了应当如何将已封装的用户进程与其他软件包组合成组。元数据610还包括需求1/依赖关系1信息612。如以上针对图6所讨论的,需求1/依赖关系1信息612列出了正确执行用户进程所需的软件包及其版本(如果可应用的话)。例如,为使用户进程正确运行,需要安装应用程序A。元数据610还包括冲突信息614。如以上针对图6所描述的,冲突信息614列出了如果运行和/或安装就会导致用户进程的安装失败的任意软件及其版本(如果可应用的话)。例如,如果安装或运行了应用程序B和/或作业Y,则不会安装用户进程。更详细地描述软件及其功能的描述信息916同样包括在元数据610中。
示例性***性能包说明文件
图10更详细地示出了***性能说明文件708。图10示出了用于***性能包222的示例性元数据710。图10的***性能说明文件708中的信息仅仅是包括在***性能说明文件708中的一部分信息而非穷举。此外,元数据710还可以变化。元数据710包括概述信息1002,其给出了对***性能包的简短描述。名称信息1004定义了实际上将用于***性能包222的称谓。版本信息1006是***性能包222的版本,并且发布信息1008表示在当前版本下已经对***性能进行封装的次数。
元数据710还包括群组信息1010,其限定了应当如何将***性能描述与其他软件包组合成组。元数据710还包括性能信息712,其标识了由***性能包222描述的***性能,例如i386平台和i586平台。元数据710还包括冲突信息714。如以上针对图7所描述的,冲突信息714列出了如果在当前***上运行或存在就会导致***性能包222的安装失败的其他***资源。例如,如果***性能包222表示Power PC(ppc)平台并且***性能X表示Sun SPARC(sparc)平台,如果***X存在于当前***上,则不能使用由***性能包222描述的性能/资源。
示例性包数据库
图11示出了图3的软件包数据库410的更详细的视图。应当注意,可以向软件包数据库410添加一个或多个字段或从软件包数据库410中删除一个或多个字段,并且所示出的内容并非穷举性的。软件包数据库410包括关于安装在用户***1202上的所有包的信息,这些包例如软件包、用户进程包以及***资源包。软件包数据库410记录在安装包时改变和创建的所有文件,从而使得软件包数据库410可以管理这些包。
图3的软件包数据库410包括包名称字段1102,其用于包括已安装的每个包的名称。例如,存在条目1104、1106、1108,用以标识应用程序A、作业X以及***性能A。包版本字段1110包括条目1112、1114、1116,这些条目标识了例如在名称字段1102下标识的应用程序、作业以及***性能的版本。包大小字段1118包括条目1120、1122、1124,这些条目表明了软件包数据库410中的每个包的大小。许可费用字段1126包括条目1128,该条目表明安装在用户***1202上的每个应用程序的许可费用。
软件包数据库410还包括依赖关系字段1130,该字段列出了安装在用户***1202上的每个包的需求/依赖关系。例如,条目1132表明应用程序A需要版本为3.5或以上的应用程序B也被安装。作业X需要安装应用程序A和作业Z。冲突字段1134包括指示将导致相应的包被错误地安装的软件和/或硬件的条目。例如,针对应用程序A的冲突条目1136表明版本低于版本1.0的应用程序F与应用程序A相冲突。针对作业X的冲突条目1138表明应用程序B和作业Y与作业X相冲突。针对***性能A的冲突条目1140表明***性能X与***性能A相冲突。
如以上针对图6和图7所讨论,用户进程包214和***性能包222包括与软件包328类似的格式。因此,这些类型的包中的每种类型的包都可以被添加到将由软件包管理***326管理的软件包数据库410。
依赖关系图
图12是示出根据本发明实施例的应用程序、用户进程以及***性能之间的相互依赖关系的关系图。如图所示,作业X依赖于应用程序A并且与应用程序B相冲突。作业X还依赖于作业Z并与作业Y相冲突。应用程序A依赖于***性能A或Y并与***性能X相冲突。作业Z依赖于应用程序C。通过将用户进程和***性能编译为与软件包结构一致的包格式,可以将用于管理软件包的现有工具的优点用于用户进程和***性能。
用于安装用户进程(作业)包的处理
图13和图14是示出安装用户进程包214的处理的操作流程图。图13的操作流程图开始于步骤1302并且直接进行到步骤1304。可以安装用户进程包214并使用诸如RPM、APT、LLP之类的任意软件包管理***来对其进行管理。用户进程包214能够安装在任意软件包管理***上并由该软件包管理***管理。在步骤1304中,从用户进程包214的档案文件602中提取用户进程说明文件608。在步骤1306中,软件包管理***326执行依赖关系检查。在步骤1308中,软件包管理***326确定是否符合所有的依赖关系/需求。如果该确定结果为肯定,则在步骤1310中,软件包管理***326执行冲突检查。如果该确定结果为否定,则在步骤1312中,生成错误消息。例如,软件包管理***326确定是否安装了应用程序A并且正在运行作业Z。如以上针对图7所讨论,将用于传统的软件说明文件的相同格式用于用户进程说明文件608。因此,传统的软件包管理***能够检查依赖关系而不必进行改变。
在步骤1314中,软件包管理***326确定是否存在任意冲突。例如,软件包管理***326确定是否安装了应用程序B以及作业Y是否正在运行。如果该确定结果为肯定,则在步骤1316中,生成错误消息。如果该确定结果为否定,则在步骤1318中,在安装前阶段期间管理配置文件。例如,执行运行用户进程/作业所需的任意基本设置,诸如创建目录、设置环境变量、复制所需文件等。在步骤1320中,软件包管理***326将数据文件604、606提取到存储器308中的指定目录,使得当执行用户进程/作业时,这些数据文件对用户进程/作业可用。控制流程继续到图14的步骤1402。
在步骤1402中,自动地将用户进程/作业提交给本地***的作业调度器(未示出)。例如,在一个实施例中,将用户进程提交给批处理调度器。此时,已安装了用户进程/作业,并且在步骤1404中,将软件包数据库410更新为包括新安装的用户进程/作业。在步骤1406中,执行安装后脚本,该安装后脚本在步骤1408中生成本地***调度器脚本624。本地***调度器脚本624例如开始执行用户进程/作业。在步骤1410中,运行本地***调度器脚本并且用户进程/作业开始执行。在另一实施例中,由安装后脚本618将用户进程/作业提交给本地***的作业调度器(未示出)。在一个实施例中,在安装前阶段期间生成本地***调度器脚本624,并随后在安装阶段期间将其移到正确位置上。然后,控制流程在步骤1412处退出。
用于卸载用户进程(作业)包的处理
图15是示出卸载用户进程/作业的处理的操作流程图。图15的操作流程图开始于步骤1502并且直接进行到步骤1504。当用户进程/作业执行时,包括用于检测用户进程何时完成的挂钩程序(hook)的本地***调度器脚本624在步骤1504中监控用户进程的状态。例如,如果用户进程仍然在软件包数据库410中,则该用户进程仍然在运行。如果在步骤1506中确定用户进程仍然在运行,则本地调度器脚本624继续监控该用户进程。如果在步骤1506中确定用户进程已经完成了其执行,则本地调度器脚本624的挂钩程序在步骤1508中发起卸载处理。在步骤1510中,卸载前脚本620发起依赖关系检查。在另一实施例中,所执行的用户进程(作业)包括运行结束(end-of-run routine)“挂钩程序”。如果在步骤1512中,软件包管理***326确定软件包数据库410中的现有包需要该用户进程/作业,则在步骤1514中,生成错误消息。如果确定结果为否定,则在步骤1516中,自动地卸载/移除由用户进程/作业创建的任意文件和原始数据文件。
在步骤1518中,卸载前脚本移除由用户进程/作业创建但未由卸载前脚本移除的任意另外的文件。在步骤1520中,对软件包数据库410进行更新以反映对用户进程/作业的卸载。在一个实施例中,卸载前脚本620和卸载后脚本622可选地将用户进程/作业的结果报告回用户进程/作业的提交者。然后,控制流程在步骤1522处退出。
将用户进程编译到与软件包的结构一致的包中的另一优点是可以将现有封装工具用于跟踪特定用户进程的运行时状态。“安装”用户进程将会把用户进程添加到软件包数据库410并自动地对其进行提交以由***上正在使用的任意批调度器执行。可以将用于检查应用程序的安装状态的相同工具用于检查作业的运行时状态。一旦不再安装用户进程,用户进程就已经完成。此外,这用作一类表明作业正在运行的信号量,该信号量防止从底层删除作业所依赖的任意应用程序,从而提供了对应用程序的安全卸载。
另外,通过将用户进程编译到与软件包的结构一致的包中,可以更好地表示进程的复杂的依赖关系和冲突,并且可以创建将运行作业的环境。用户进程结果也变为可验证的且可重新创建的。将作业表示为用户包并跟踪软件包数据库状态提供了执行作业时对***的运行时和应用程序状态的观察。
用于安装***性能包的处理
图16是示出安装***性能包222的示例性处理的操作流程图。图16的操作流程图开始于步骤1602并且直接进行到步骤1604。在步骤1604中,软件包管理***326执行依赖关系检查。在步骤1606中,软件包管理***326确定由***性能包222描述的***性能所需的组件是否可用。如果该确定结果为肯定,则在步骤1608中,软件包管理***326执行冲突检查。如果该确定结果为否定,则在步骤1610中,生成错误消息。在步骤1612中,软件包管理***326确定当前***上是否存在发生冲突的***性能/资源。如果该确定结果为肯定,则在步骤1614中,生成错误消息。如果该确定结果为否定,则在步骤1616中,软件包管理***326执行安装前任务。
安装前脚本用于在实际安装一个脚本前执行该脚本。在步骤1618中,软件包管理***326管理***性能包222的配置文件。在步骤1620中,软件包管理***326将实际的***性能文件解包到其正确位置并设置适当的所有者和许可权限。在步骤1622中,软件包管理***326执行安装后任务。例如,如果需要完成任何所需的任务,诸如启动后台程序或注册新安装的***性能/资源,则执行安装后脚本。在步骤1624中,用关于***性能包222的信息来对软件包数据库410进行更新。然后,控制流程在步骤1626处退出。在另一个实施例中,仅在忽略软件包数据库410中的元数据信息和可选的脚本716、718、720、722的情况下安装***性能包222。
非限制性示例
本发明的前述实施例是有利的,原因是它们以软件包格式提供了用户进程并表示了***性能,该软件包格式使得可以在软件包数据库中提供关于诸如所使用的库的依赖关系的版本、运行时命令选项等信息。另外,以软件包格式描述***性能/资源使得软件包在添加新性能时是可扩展的并且实现了对软件设计为在其上运行的硬件和软件的更完整说明。此外,与安装步骤期间对性能的运行时检查相对,本发明在依赖关系解析阶段实现了更细化的依赖关系。
本发明可以以硬件、软件或者硬件和软件的组合来实现。根据本发明的优选实施例的***可以在一个计算机***中以集中方式来实现,或者以不同单元散布于若干互连的计算机***上的分布方式来实现。适于执行在此所描述的方法的任意类型的计算机***或其他设备都是适合的。硬件与软件的一种典型组合可以是带有计算机程序的通用计算机***,当该计算机程序被加载和执行时,该计算机程序控制该计算机***以使其执行在此所描述的方法。
本发明的实施例可以实现为用于结合计算机***而使用的程序产品,该计算机***诸如是在图1中示出并在此进行描述的计算环境。该程序产品的程序定义了实施例(包括在此所描述的方法)的功能并且可以被包含在多种计算机可读介质中。说明性的计算机可读介质包括但不限于:(i)永久地存储在不可写入存储介质(例如计算机内的只读存储设备,诸如可由CD-ROM驱动器读取的CD-ROM光盘)上的信息;(ii)存储在可写入存储介质(例如磁盘驱动器内的软盘或硬盘驱动器)上的可变信息;(iii)通过通信介质传送给计算机的信息,诸如通过计算机网络或电话网络(包括无线通信)传送给计算机的信息。后一实施例特别地包括从因特网和其他网络下载的信息。当执行对本发明的功能进行指示的计算机可读指令时,这些计算机可读介质代表了本发明的实施例。
一般而言,不管是实现为操作***的一部分还是特定的应用程序、组件、程序、模块、对象或指令序列,所执行的用以实现本发明的实施例的例行程序在此都称为“程序”。计算机程序通常包括多条指令,本地计算机将把这些指令转换为机器可读格式并从而转换为可执行的指令。另外,程序包括驻留在程序本地或可在存储器中或在存储设备上找到的变量和数据结构。此外,在此描述的各种程序可以基于应用程序(在本发明的特定实施例中这些程序是针对该应用程序而实现的)来识别。然而,应当意识到,所遵循的任意特定的程序命名法只是为了方便起见,并且本发明不应限于仅在由这种命名法标识和/或暗示的任意特定的应用程序中使用。
同样清楚的是,本发明给出了可以将计算机程序组织为例行程序、过程、方法、模块、对象之类通常不限数目的方式以及可以将程序功能性分配在驻留在典型的计算机内的各软件层(例如操作***、库、API、应用程序、applet等)之间的各种方式。应当意识到,本发明不限于在此描述的特定组织以及分配或程序功能性。
每个计算机***可以包括一个或多个计算机和至少一个计算机可读介质,该计算机可读介质使得计算机可以从该计算机可读介质中读取数据、指令、消息或消息分组,以及其他计算机可读信息。计算机可读介质可以包括非易失性存储器,诸如ROM、闪存、磁盘驱动存储器、CD-ROM以及其他永久性存储器。此外,计算机可读介质可以包括例如易失性存储器,诸如RAM、缓冲器、高速缓冲存储器以及网络电路。此外,计算机可读介质可以包括瞬态介质中的计算机可读信息,瞬态介质诸如网络链路和/或网络接口,包括使得计算机可以读取这种计算机可读信息的有线网络或无限网络。
尽管已经公开了本发明的特定实施例,本领域的普通技术人员可以理解,在不偏离本发明的本质和范围的情况下,可以对这些特定实施例进行改变。因此,本发明的范围不限于这些特定实施例,并且旨在使所附权利要求覆盖本发明范围内的任意和所有的这些应用程序、修改以及实施例。
Claims (12)
1.一种用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的方法,所述方法包括:
创建包括用户进程和***进程中的至少一种进程的至少一个包,所述至少一个包包括与所述用户进程和所述***进程中的所述至少一种进程相关联的至少一个需求,所述至少一个包还包括与所述用户进程和所述***进程中的所述至少一种进程相关联的冲突信息,其中所述至少一个包包括与软件包一致的结构,使得所述至少一个包能够由软件包管理***管理;以及
经由所述软件包管理***将所述至少一个包安装于信息处理***上。
2.根据权利要求1所述的方法,其中所述安装还包括:
对所述至少一个包的一组需求进行分析;
确定是否已经满足所述一组需求;
确定是否存在与所述用户进程和所述***进程中的所述至少一种进程相关联的任何冲突;以及
响应于还不满足所述一组需求和存在任何冲突中的至少一种情况而生成错误。
3.根据权利要求1所述的方法,其中所述安装还包括:
生成本地调度器脚本,所述本地调度器脚本用于将所述用户进程和所述***进程中的所述至少一种进程提交给所述进程的调度器。
4.根据权利要求1所述的方法,其中所述用户进程和所述***进程中的所述至少一种进程具有对另一用户进程和另一***进程中的至少一种进程的相互依赖关系。
5.根据权利要求1所述的方法,其中所述用户进程和所述***进程中的所述至少一种进程具有对安装在所述信息处理***上的至少一个应用程序的相互依赖关系。
6.根据权利要求4所述的方法,还包括:
将与所述用户进程和所述***进程中的所述至少一种进程相关联的依赖关系信息存储于软件包数据库中。
7.根据权利要求1所述的方法,还包括:
监控所述用户进程和所述***进程中的所述至少一种进程,以确定是否所述用户进程和所述***进程中的所述至少一种进程正在执行;以及
响应于所述监控表明所述用户进程和所述***进程中的所述至少一种进程正在执行而防止移除至少一个已安装的应用程序,其中所述用户进程和所述***进程中的所述至少一种进程正在使用所述至少一个已安装的应用程序。
8.一种用于在软件包管理***中将用户进程和***进程中的至少一种进程表示为软件包的***,所述***包括:
存储器;
可通信地连接到所述存储器的信息处理***;
包括用户进程和***进程中的至少一种进程的至少一个包,所述至少一个包包括与所述用户进程和所述***进程中的所述至少一种进程相关联的至少一个需求,其中所述至少一个需求标识所述用户进程和所述***进程中的所述至少一种进程所需的应用程序、另一用户进程和另一***进程中的至少一个,所述至少一个包还包括与所述用户进程和所述***进程中的所述至少一种进程相关联的冲突信息,并且其中所述至少一个包包括与软件包一致的结构,使得所述至少一个包能够由软件包管理***管理;
软件包管理***,包括:
安装器,用于将所述至少一个包安装在所述信息处理***上;
以及
软件包数据库,用于存储所述至少一个包,其中所述软件包数据库包括针对与所述用户进程和所述***进程中的所述至少一种进程相关联的需求和冲突中的至少一个的一组条目。
9.根据权利要求8所述的***,其中所述进程的提交者是本地调度器脚本,所述本地调度器脚本将所述用户进程和所述***进程中的所述至少一种进程提交给所述进程的调度器。
10.根据权利要求9所述的***,其中所述本地调度器脚本包括监控器,所述监控器用于监控所述用户进程和所述***进程中的所述至少一种进程的状态。
11.根据权利要求8所述的***,其中所述软件包管理***还包括卸载管理器,其中如果所述用户进程和所述***进程中的所述至少一种进程正在使用由所述至少一个需求标识的所述应用程序,则所述卸载管理器防止移除所述应用程序。
12.根据权利要求8所述的***,其中所述进程的调度器是批调度器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/267,067 | 2005-11-03 | ||
US11/267,067 US8490082B2 (en) | 2005-11-03 | 2005-11-03 | System and method for representing user processes as software packages in a software package management system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1959640A CN1959640A (zh) | 2007-05-09 |
CN100426235C true CN100426235C (zh) | 2008-10-15 |
Family
ID=38071347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101437016A Expired - Fee Related CN100426235C (zh) | 2005-11-03 | 2006-11-02 | 在软件包管理***将用户进程表示为软件包的***和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8490082B2 (zh) |
CN (1) | CN100426235C (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324685B1 (en) | 1998-03-18 | 2001-11-27 | Becomm Corporation | Applet server that provides applets in various forms |
US8074214B2 (en) * | 2005-05-19 | 2011-12-06 | Oracle International Corporation | System for creating a customized software installation on demand |
US8495619B2 (en) * | 2005-06-29 | 2013-07-23 | Flexera Software Llc | Method and system for pre-deployment conflict checking |
US8132266B2 (en) * | 2006-03-28 | 2012-03-06 | Emc Corporation | Methods, systems, and computer program products for identifying and enforcing software feature limits across different hardware platforms, software releases, and tiers |
US8108836B1 (en) * | 2006-10-13 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | System and method for defining software management |
US8464245B2 (en) * | 2007-06-27 | 2013-06-11 | Flexera Software Llc | Method and system for software virtualization directly from an installation package |
US8612966B2 (en) * | 2007-11-29 | 2013-12-17 | Red Hat, Inc. | Method and system for preparing software offerings having software application code and post-install configuration information |
US8161479B2 (en) * | 2008-06-13 | 2012-04-17 | Microsoft Corporation | Synchronizing virtual machine and application life cycles |
US8418161B2 (en) * | 2008-11-24 | 2013-04-09 | International Business Machines Corporation | System and method for loading a called class file table with data indicating a highest version of a class file |
JP5304360B2 (ja) * | 2009-03-17 | 2013-10-02 | 株式会社リコー | 情報処理装置、情報処理方法および情報処理プログラム |
JP5487962B2 (ja) * | 2009-12-28 | 2014-05-14 | 株式会社リコー | 操作抑制システム、画像形成装置、操作抑制情報提供装置、及び操作抑制方法 |
US8505003B2 (en) * | 2010-04-28 | 2013-08-06 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
US8930942B2 (en) * | 2010-05-26 | 2015-01-06 | Tibco Software Inc. | Capability model for deploying componentized applications |
CN102073582A (zh) * | 2010-07-30 | 2011-05-25 | 兰雨晴 | 基于冲突的软件包依赖关系检查方法 |
CN102109991A (zh) * | 2010-07-30 | 2011-06-29 | 兰雨晴 | 软件包依赖关系建模方法 |
US9128803B2 (en) | 2010-12-15 | 2015-09-08 | Microsoft Technology Licensing, Llc | Application model for implementing composite applications |
US20120159517A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Managing a model-based distributed application |
US9043767B2 (en) * | 2011-04-12 | 2015-05-26 | Pivotal Software, Inc. | Release management system for a multi-node application |
CN102419711A (zh) * | 2011-11-16 | 2012-04-18 | 深圳市佳创视讯技术股份有限公司 | 数字电视接收终端的嵌入式***的包管理***及方法 |
US10108307B1 (en) * | 2012-05-11 | 2018-10-23 | Amazon Technologies, Inc. | Generation and distribution of device experience |
US9135045B2 (en) * | 2012-05-29 | 2015-09-15 | International Business Machines Corporation | Generating user-requested virtual machine templates from super virtual machine templates and cacheable patches |
US9183012B2 (en) * | 2012-06-22 | 2015-11-10 | Microsoft Technology Licensing, Llc | Adaptive rendering based on runtime capability check |
CN102880466B (zh) * | 2012-09-04 | 2016-03-16 | 中标软件有限公司 | 一种Linux操作***软件包依赖关系检测方法 |
US20140258977A1 (en) * | 2013-03-06 | 2014-09-11 | International Business Machines Corporation | Method and system for selecting software components based on a degree of coherence |
US9507589B2 (en) * | 2013-11-07 | 2016-11-29 | Red Hat, Inc. | Search based content inventory comparison |
US10148731B2 (en) * | 2015-06-30 | 2018-12-04 | Oracle International Corporation | Methods, systems, and computer readable media for on-boarding virtualized network function (VNF) packages in a network functions virtualization (NFV) system |
US10452246B2 (en) * | 2015-08-27 | 2019-10-22 | Sap Se | Customizable user interfaces for software applications based on user-and industry-defined constraints |
CN106775608B (zh) * | 2015-11-24 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 独立***进程的实现方法和装置 |
US10380365B2 (en) * | 2016-06-01 | 2019-08-13 | Chef Software, Inc. | Choreographed distributed execution of programs |
US10447814B2 (en) * | 2017-02-02 | 2019-10-15 | Microsoft Technology Licensing, Llc | Joint servicing of software packages |
US10564959B2 (en) * | 2017-03-14 | 2020-02-18 | Google Llc | Shared software libraries for computing devices |
CN107341003B (zh) * | 2017-06-15 | 2020-08-07 | 百富计算机技术(深圳)有限公司 | 定制***实现方法、计算机设备和存储介质 |
US10481898B2 (en) * | 2017-11-03 | 2019-11-19 | Salesforce.Com, Inc. | Automated software package deployment |
US10884815B2 (en) | 2018-10-29 | 2021-01-05 | Pivotal Software, Inc. | Independent services platform |
CN112416421A (zh) * | 2020-11-17 | 2021-02-26 | 用友网络科技股份有限公司 | 软件依赖关系分析方法、分析装置和可读存储介质 |
CN112416379B (zh) * | 2021-01-21 | 2021-06-01 | 统信软件技术有限公司 | 一种应用程序安装方法、装置、计算设备及可读存储介质 |
US20230342132A1 (en) * | 2022-04-22 | 2023-10-26 | Dell Products L.P. | Patch uninstallation using a signed operating system install package |
CN117573234A (zh) * | 2024-01-15 | 2024-02-20 | 龙芯中科技术股份有限公司 | 软件包卸载管理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133814A1 (en) * | 2000-11-29 | 2002-09-19 | Bourke-Dunphy Erin M. | System and method to facilitate installation of components across one or more computers |
US20040123287A1 (en) * | 2002-12-19 | 2004-06-24 | International Business Machines Corporation | System and method for installation and Integration of component datamodels |
US20040255291A1 (en) * | 2003-01-17 | 2004-12-16 | Sierer Brian H. | Installing software using programmatic component dependency analysis |
CN1641583A (zh) * | 2003-12-16 | 2005-07-20 | 微软公司 | 自描述软件映象更新组件 |
CN1645322A (zh) * | 2003-12-16 | 2005-07-27 | 微软公司 | 确定对安装有效的最大依赖软件更新组 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0573190B1 (en) * | 1992-06-03 | 2001-09-05 | Sun Microsystems, Inc. | Dynamically configurable kernel |
US5384910A (en) * | 1992-12-31 | 1995-01-24 | International Business Machines Corporation | Method and apparatus for facilitating operator reconfiguration of a graphical user interface in a data processing system |
US6715144B2 (en) | 1999-12-30 | 2004-03-30 | International Business Machines Corporation | Request based automation of software installation, customization and activation |
US6963908B1 (en) * | 2000-03-29 | 2005-11-08 | Symantec Corporation | System for transferring customized hardware and software settings from one computer to another computer to provide personalized operating environments |
US7140013B2 (en) | 2000-06-01 | 2006-11-21 | Aduva, Inc. | Component upgrading with dependency conflict resolution, knowledge based and rules |
JP2002163106A (ja) | 2000-11-24 | 2002-06-07 | Mitsui Mining & Smelting Co Ltd | 基幹業務統合型アプリケーションシステム、基幹業務支援方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP2290532A3 (en) | 2001-07-26 | 2013-04-24 | IRiSE | System and process for gathering, recording and validating requirements for computer applications |
US7117495B2 (en) | 2002-06-12 | 2006-10-03 | Altiris, Inc. | Systems and methods for the creation of software packages using layered systems |
US20040060035A1 (en) | 2002-09-24 | 2004-03-25 | Eric Ustaris | Automated method and system for building, deploying and installing software resources across multiple computer systems |
US7228541B2 (en) | 2003-01-17 | 2007-06-05 | National Instruments Corporation | Creation of application system installer |
US7735057B2 (en) | 2003-05-16 | 2010-06-08 | Symantec Corporation | Method and apparatus for packaging and streaming installation software |
-
2005
- 2005-11-03 US US11/267,067 patent/US8490082B2/en not_active Expired - Fee Related
-
2006
- 2006-11-02 CN CNB2006101437016A patent/CN100426235C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133814A1 (en) * | 2000-11-29 | 2002-09-19 | Bourke-Dunphy Erin M. | System and method to facilitate installation of components across one or more computers |
US20040123287A1 (en) * | 2002-12-19 | 2004-06-24 | International Business Machines Corporation | System and method for installation and Integration of component datamodels |
US20040255291A1 (en) * | 2003-01-17 | 2004-12-16 | Sierer Brian H. | Installing software using programmatic component dependency analysis |
CN1641583A (zh) * | 2003-12-16 | 2005-07-20 | 微软公司 | 自描述软件映象更新组件 |
CN1645322A (zh) * | 2003-12-16 | 2005-07-27 | 微软公司 | 确定对安装有效的最大依赖软件更新组 |
Also Published As
Publication number | Publication date |
---|---|
US8490082B2 (en) | 2013-07-16 |
CN1959640A (zh) | 2007-05-09 |
US20070168956A1 (en) | 2007-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100426235C (zh) | 在软件包管理***将用户进程表示为软件包的***和方法 | |
US7337434B2 (en) | Off-device class/resource loading methods, systems and computer program products for debugging a Java application in a Java micro device | |
US20070101197A1 (en) | System and method for representing system capabilities as software packages in a software package management system | |
CN104793946B (zh) | 基于云计算平台的应用部署方法和*** | |
US7684964B2 (en) | Model and system state synchronization | |
US8122106B2 (en) | Integrating design, deployment, and management phases for systems | |
US8365164B1 (en) | Portable software applications | |
CN101030144B (zh) | 用于打包软件的方法与*** | |
CN102460382B (zh) | 标注虚拟应用进程 | |
US6892382B1 (en) | Method and apparatus for implementing deployment descriptors in an enterprise environment | |
US8151256B2 (en) | Platform independent registry framework | |
CN110727440B (zh) | 一种软件封装方法 | |
CN102754073B (zh) | 用于虚拟化的扩展点声明性注册的方法和*** | |
CN101454765A (zh) | 用补丁等来更新虚拟机 | |
WO2005020089A1 (en) | Servicing a component-base software product | |
CN103902265A (zh) | 一种应用实现方法及相关装置 | |
US20070282801A1 (en) | Dynamically creating and executing an application lifecycle management operation | |
CN101297280A (zh) | 隔离扩展和设备驱动程序的配置 | |
CN102054041A (zh) | 元数据升级方法和*** | |
JP2000357082A (ja) | 企業環境において展開記述子を実施するための方法と装置 | |
CN117707543A (zh) | 一种应用安装包制作和安装方法、计算设备及存储介质 | |
US20130167138A1 (en) | Method and apparatus for simulating installations | |
CN112286543A (zh) | 一种应用服务部署方法及装置 | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及*** | |
Müller | Aspect design with the building block method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081015 Termination date: 20101102 |