CN102073583A - Method for checking software package dependency relationship based on dependency - Google Patents
Method for checking software package dependency relationship based on dependency Download PDFInfo
- Publication number
- CN102073583A CN102073583A CN201010241133XA CN201010241133A CN102073583A CN 102073583 A CN102073583 A CN 102073583A CN 201010241133X A CN201010241133X A CN 201010241133XA CN 201010241133 A CN201010241133 A CN 201010241133A CN 102073583 A CN102073583 A CN 102073583A
- Authority
- CN
- China
- Prior art keywords
- dependency
- software package
- package
- software
- cnf
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
技术领域technical field
本发明涉及软件包管理技术领域,特别是指适用于Linux分发端的,对Linux下的软件包依赖关系可满足性检查的方法。The invention relates to the technical field of software package management, in particular to a method for checking the satisfiability of software package dependencies under Linux, which is applicable to a Linux distribution terminal.
背景技术Background technique
当前管理软件包之间复杂依赖关系的工具或方法从用途上来说主要分为两种:基于客户端的包依赖管理工具和基于分发端的包依赖管理工具。在客户端包依赖管理工具方面,通常Linux分发版本都提供客户端依赖管理工具以支持客户端的包管理,如Debian Linux的apt-get,RedHatLinux的yum,Suse Linux的red carpet等,而且有研究人员针对apt-get和yum存在的不完整性等问题,研究形成了优化的或性能更好的客户端包管理工具,如Smart和Optimal。分发端包依赖管理工具方面,目前没有相关的工具,大多都是复用客户端的软件包管理工具,由维护人员进行进一步的管理。但是随着分发端的规模不断扩大,现有的软件包管理工具并不能完成分发端的软件包依赖完整性检查,维护人员工作量日益庞大。The current tools or methods for managing complex dependencies between software packages are mainly divided into two types in terms of usage: client-based package dependency management tools and distribution-based package dependency management tools. In terms of client-side package dependency management tools, usually Linux distributions provide client-side dependency management tools to support client-side package management, such as apt-get of Debian Linux, yum of RedHatLinux, red carpet of Suse Linux, etc., and some researchers Aiming at the incompleteness of apt-get and yum, research has resulted in optimized or better-performing client package management tools, such as Smart and Optimal. In terms of distribution-side package dependency management tools, there are currently no related tools, and most of them are reused client-side package management tools, which are further managed by maintainers. However, as the scale of the distribution end continues to expand, the existing software package management tools cannot complete the integrity check of the software package dependencies at the distribution end, and the workload of maintenance personnel is increasing.
因此,随着Linux功能的不断扩充和增长,如何有效地维护数量庞大的软件包之间的依赖关系,是所有Linux操作系统厂商面临的共同挑战:新软件包是否与原有软件包集合中的各软件包存在冲突?新软件包依赖的所有软件包在原有软件包集合中是否存在?当原有软件包集合中的某个软件包获得更新时,原来的依赖关系是否依然存在,或是否导致冲突?当原有软件包集合中的某个软件包被删除或弃用时,原来的依赖关系是否仍然能够保持,或需要重新调整,或导致局部依赖链被破坏?根据行业用户的特殊需求,如何快速制定出一个专用的Linux操作系统发布版本,其中只包含所需的软件包?而当用户安装、卸载、更新软件包时,软件包集合依赖关系的更新维护对用户来说应该是透明的。Therefore, with the continuous expansion and growth of Linux functions, how to effectively maintain the dependencies between a large number of software packages is a common challenge faced by all Linux operating system manufacturers: whether the new software package is compatible with the original software package set Conflicts between packages? Do all packages that the new package depends on exist in the original package collection? When a package in the original package collection gets updated, do the original dependencies persist, or do they cause conflicts? When a package in the original package collection is deleted or deprecated, can the original dependency still be maintained, or need to be readjusted, or cause the local dependency chain to be broken? According to the special needs of industry users, how to quickly formulate a dedicated Linux operating system release version, which only includes the required software packages? And when the user installs, uninstalls, and updates the software package, the updating and maintenance of the dependencies of the package set should be transparent to the user.
这些问题的解决可以归结为:在一个软件包集合中,任意一个软件包是否依赖可满足?The solution to these problems can be boiled down to: in a set of software packages, is any package dependency satisfiable?
发明内容Contents of the invention
有鉴于此,本发明的主要目的在于解决上述问题,减轻维护人员工作强度,提高分发端软件包管理的自动化程度,提供一种基于依赖的软件包依赖关系检查方法,所要解决的技术问题是如何对Linux分发端软件包依赖关系可满足性进行检查,使其能够判定Linux分发端软件包可安装问题,提高软件包依赖关系管理的效率,降低软件包之间的依赖关系管理的复杂度。In view of this, the main purpose of the present invention is to solve the above problems, reduce the work intensity of maintenance personnel, improve the automation of software package management at the distribution end, and provide a method for checking software package dependencies based on dependencies. The technical problem to be solved is how Check the satisfiability of the dependency relationship of the Linux distribution terminal software package, so that it can determine the installation problem of the Linux distribution terminal software package, improve the efficiency of software package dependency management, and reduce the complexity of dependency management between software packages.
对于上述技术问题,本发明是这样加以解决的。基于依赖的软件包依赖关系检查方法,包括以下步骤:步骤·10:从软件包依赖关系描述文件graphml.xml中读取依赖信息并生成软件包依赖关系树;步骤20:将依赖关系树转换成CNF范式;步骤30:将描述依赖关系的CNF范式文件作为SAT问题解决算法的输入,计算结果为该软件是否可安装的解。For above-mentioned technical problem, the present invention solves like this. Dependency-based software package dependency inspection method, comprising the following steps: Step 10: Read dependency information from the software package dependency description file graphml.xml and generate a software package dependency tree; Step 20: Convert the dependency tree into CNF paradigm; step 30: use the CNF paradigm file describing the dependency as the input of the SAT problem solving algorithm, and the calculation result is the solution of whether the software can be installed.
根据对软件包可安装性的分析,当分发版本或分发池包基R中每一个软件包都是依赖可满足的,即都是可安装的,对包基的依赖完整性检查,即对组成包基的每个软件包进行可安装性的判定。经由上述步骤可以将软件包可安装性判定问题映射为经典的布尔可满足问题。布尔可满足(SAT)问题是一种典型的NP完全问题。可安装性判定问题有解当且仅当其对应的SAT问题有解,软件包集合(简称包基)中每个软件包的依赖子集求解则是对相应的SAT问题的解空间的搜索问题。利用布尔可满足性问题的求解,可以发现依赖不可满足的软件包,进一步可以判断分发池的软件包依赖完整性。According to the analysis of the software package installability, when each software package in the distribution version or distribution pool package base R is satisfiable, that is, it is all installable, the dependency integrity check on the package base, that is, the composition Each package in the package base is evaluated for installability. Through the above steps, the software package installability decision problem can be mapped to a classical Boolean satisfiable problem. Boolean satisfiable (SAT) problem is a typical NP-complete problem. The installability determination problem has a solution if and only if its corresponding SAT problem has a solution, and the solution of the dependent subset of each software package in the software package set (referred to as the package base) is a search problem of the solution space of the corresponding SAT problem . Using the solution of the Boolean satisfiability problem, it is possible to find unsatisfiable dependent software packages, and further determine the completeness of the software package dependencies in the distribution pool.
本发明的目的及解决其技术问题还可以采用以下技术措施进一步实现。The purpose of the present invention and its technical problems can also be further realized by adopting the following technical measures.
前述的基于依赖的软件包依赖关系检查方法,其中所述的步骤10中的软件包依赖关系描述文件graphml.xml是依据专利发明申请书《一种软件包依赖关系建模方法》得到的软件包依赖关系描述文件,该描述文件采用扩展的GraphML文件格式描述。The aforementioned dependency-based software package dependency checking method, wherein the software package dependency description file graphml.xml in step 10 is a software package obtained according to the patent application "A Modeling Method for Software Package Dependency" A dependency description file, which is described in an extended GraphML file format.
《一种软件包依赖关系建模方法》,其步骤包括:"A Method for Modeling Software Package Dependency", its steps include:
第一步,解析软件包中的依赖关系表示为统一软件包元数据格式Package格式,这一步可以细分为以下三个小步骤根据各种不同的Linux软件包格式,从依赖关系建模的角度,提出一种统一的软件包元数据格式Package格式及其XML表示方法;根据输入的软件包格式,读取此种软件包格式的包基的软件包文件或包基的描述文件,解析并提取软件包元数据的依赖信息;将获得的依赖信息转换为统一软件包元数据格式Package格式,并用XML表示为统一软件包元数据描述的包基描述文件。The first step is to analyze the dependencies in the software package and express it as a unified software package metadata format Package format. This step can be subdivided into the following three small steps. According to various Linux software package formats, from the perspective of dependency modeling , propose a unified software package metadata format Package format and its XML representation method; according to the input package format, read the package file or description file of the package base in this package format, parse and extract The dependency information of the software package metadata; the obtained dependency information is converted into the package format of the unified software package metadata format, and expressed in XML as the package base description file described by the unified software package metadata.
第二步,将表示为统一软件包元数据格式Package格式的依赖关系用扩展的GraphML语言描述并将其可视化,这一步可以细分为以下三个小步骤:基于包基建模需求,对GraphML进行扩展,得到扩展的GraphML格式;将Package结构转换为扩展的GraphML文件格式描述,生成graphmlxml文件;读取graphml.xml并将其可视化。The second step is to describe and visualize the dependencies expressed in the unified package metadata format Package format with the extended GraphML language. This step can be subdivided into the following three small steps: Based on the package base modeling requirements, the GraphML Extend to get the extended GraphML format; convert the Package structure into an extended GraphML file format description to generate a graphmlxml file; read graphml.xml and visualize it.
其中,该统一的软件包元数据格式从依赖关系建模的角度提出,只包含了依赖关系建模所需的必须信息,其定义如表1所示;该扩展的GraphML是基于GraphML,通过为其元素增加属性和增加<data>元素内容的方式对其进行了扩展,图2为扩展的GraphML格式。Among them, the unified software package metadata format is proposed from the perspective of dependency modeling, which only contains the necessary information required for dependency modeling, and its definition is shown in Table 1; the extended GraphML is based on GraphML, through the It is extended by adding attributes to its elements and adding content of <data> elements. Figure 2 shows the extended GraphML format.
表1统一软件包元数据格式的定义Table 1 Definition of unified software package metadata format
前述的基于依赖的软件包依赖关系检查方法,其中所述的步骤10进一步包括:步骤101:从软件包依赖关系描述文件graphml.xml中读取依赖信息;步骤102:从软件包集合中任选一个软件包;步骤103:根据选择的软件包和所读取的依赖信息生成依赖关系树。The aforementioned dependent-based software package dependency checking method, wherein said step 10 further includes: Step 101: reading dependency information from the software package dependency description file graphml.xml; Step 102: selecting from the software package collection A software package; Step 103: Generate a dependency tree according to the selected software package and the read dependency information.
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明基于依赖的软件包依赖关系检查方法具有下列优点及有益效果:Compared with the prior art, the present invention has obvious advantages and beneficial effects. By means of the above technical solution, the dependency-based software package dependency checking method of the present invention has the following advantages and beneficial effects:
1.本发明中依赖树转换为CNF范式的算法采用不完备的算法,其将放弃转换大量的冗余依赖关系,程序占用的空间将在可控范围内,对软件包的数目是没有限制。1. In the present invention, the algorithm for converting the dependency tree into the CNF paradigm adopts an incomplete algorithm, which will give up converting a large amount of redundant dependencies, and the space occupied by the program will be within a controllable range, and there is no limit to the number of software packages.
2.DPLL完全算法能够证明可满足性(SAT)问题的不可满足性,所以对软件包依赖关系进行检查的时候,能够准确的发现依赖不可满足的软件包。当分发池中没有发现依赖不可满足的软件包时,可以判断该分发池是依赖完整的。2. The DPLL complete algorithm can prove the unsatisfiability of the satisfiability (SAT) problem, so when checking the software package dependencies, it can accurately find the unsatisfiable software packages. When no software package with unsatisfiable dependencies is found in the distribution pool, it can be judged that the distribution pool has complete dependencies.
3.本发明能够很好的对DEB包格式的分发池进行完整性检查,同时也能够对RPM包格式的分发池进行完整性检查。3. The present invention can well check the integrity of the distribution pool in the DEB package format, and can also perform integrity check on the distribution pool in the RPM package format.
综上所述,本发明具有上述优点及有益效果,在方法和功能上皆有较大的改进,在技术上有显著的进步,并具有产业的广泛利用价值。To sum up, the present invention has the above advantages and beneficial effects, has great improvement in method and function, has significant progress in technology, and has wide application value in industry.
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。The above description is only an overview of the technical solution of the present invention. In order to better understand the technical means of the present invention, it can be implemented according to the contents of the description, and in order to make the above and other purposes, features and advantages of the present invention more obvious and understandable , the following preferred embodiments are specifically cited below, and are described in detail as follows in conjunction with the accompanying drawings.
附图说明Description of drawings
图1为基于依赖的软件包依赖关系检查方法流程图。FIG. 1 is a flow chart of a dependency-based software package dependency checking method.
图2为扩展的GraphML格式。Figure 2 is the extended GraphML format.
图3为由九个软件包组成的一个包基的包间依赖关系“与-或图”。Fig. 3 is an "and-or graph" of inter-package dependencies of a package base composed of nine software packages.
图4为依赖关系树转换CNF范式流程图。Fig. 4 is a flow chart of dependency tree transformation to CNF paradigm.
具体实施方式Detailed ways
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据发明提出的基于依赖的软件包依赖关系检查方法其具体实施方式、方法、步骤、结构、特征及其功效,详细说明如后。In order to further explain the technical means and effects of the present invention to achieve the intended purpose of the invention, the specific implementation methods, methods, Steps, structures, features and effects thereof are described in detail below.
有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的详细说明中将可清楚呈现。通过具体实施方式的说明,当可对本发明为达成预定目的的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。The aforementioned and other technical contents, features and effects of the present invention will be clearly presented in the following detailed description with reference to the drawings. Through the description of specific embodiments, the technical means and effects of the present invention to achieve the intended purpose can be understood more deeply and specifically. However, the accompanying drawings are only for reference and description, and are not used to explain the present invention. be restricted.
为了能够更好的理解本发明的内容,下面给出一些相关的概念:In order to better understand the content of the present invention, some related concepts are given below:
软件包直接依赖关系约束的形式化表示A Formal Representation of Package Direct Dependency Constraints
设Dr和Dc分别为p的依赖和冲突的软件包集合,直接依赖集合,其中,集合D(p)的元素y为软件包或软件包析取组合(pi∨...∨pj)。如果p与其它软件包不存在依赖或冲突,则直接依赖集合D的λ赋值Dλ(P),表示对集合中析取式的一次赋值。即对D中每一析取组合,选取其中的某一软件包表示该组合,赋值后,Dλ(P)为p的一个直接依赖软件包集合。Let D r and D c be the dependent and conflicting software package sets of p respectively, and the direct dependent set , where the element y of the set D(p) is a software package or a disjunctive combination of software packages (p i ∨...∨p j ). If p has no dependencies or conflicts with other packages, then The λ assignment D λ (P) directly dependent on the set D represents an assignment to a disjunction in the set. That is, for each disjunctive combination in D, select one of the software packages to represent the combination. After assignment, D λ (P) is a set of directly dependent software packages of p.
软件包的依赖可满足性Package dependency satisfiability
对于一个软件包集合R,R中软件包p的依赖可满足性指,在软件包集合R中,存在一个赋值λ,Dλ(X)为依赖函数,定义Dλ(X)为X的直接依赖软件包的集合。Dnλ(p)表示Dλ(Dλ(Dλ(...(Dλ(p)...))),对子集中任一软件包x,使得, For a set of software packages R, the dependency satisfiability of software package p in R means that in the set of software packages R, there exists an assignment λ, D λ (X) is a dependency function, and D λ (X) is defined as the direct A collection of dependent packages. D nλ (p) denotes D λ (D λ (D λ (...(D λ (p)...))), for the subset Any package x such that ,
软件包依赖子集A subset of package dependencies
根据依赖可满足性定义,赋值λ所确定的P,称为软件包p的一个依赖子集,依赖子集P是递归生成的,是一种特殊的传递闭包。λ是相对于整个软件包集合R的依赖可满足性赋值。According to the definition of dependency satisfiability, P determined by assignment λ is called a dependency subset of software package p, and dependency subset P is generated recursively, which is a special transitive closure. λ is the dependency satisfiability assignment relative to the entire package set R.
软件包的可安装性Installability of packages
对于软件包集合R,给定一个软件包p,如果p相对于软件包集合R符合依赖可满足性,则称p在软件包集合R上可安装。For a package set R, given a package p, if p satisfies dependency satisfiability with respect to the package set R, then p is said to be installable on the package set R.
本发明中Linux操作系统中包含的软件包是Linux分发池的子集,一个Linux分发池中包含一个或多个Linux操作系统。The software package contained in the Linux operating system in the present invention is a subset of the Linux distribution pool, and one Linux distribution pool contains one or more Linux operating systems.
Linux分发池/操作系统包集R=(P,D,C)。其中P为软件包集合,D:P→ψ(ψ(P))为依赖函数,ψ(X)表示X的子集的集合。为冲突关系。关系C是对称的。例如对于所有的(p1,p2)∈C当且仅当(p2,p1)∈C。对于一个Linux分发版本来说标识名相同版本号不同的软件包默认为相互冲突。例如,p1=(u,v1),p2=(u,v2),并且v1≠v2,则(p1,p2)∈C。Linux distribution pool/operating system package set R=(P, D, C). Where P is a set of software packages, D:P→ψ(ψ(P)) is a dependency function, and ψ(X) represents a collection of subsets of X. for the conflict relationship. Relationship C is symmetric. For example, for all (p 1 , p 2 )∈C if and only if (p 2 , p 1 )∈C. For a Linux distribution, packages with the same identifier but different version numbers conflict with each other by default. For example, p 1 =(u, v 1 ), p 2 =(u, v 2 ), and v 1 ≠v 2 , then (p 1 , p 2 )∈C.
Linux分发池/操作系统包集R应该具有的特性:Features that a Linux distribution pool/OS package set R should have:
完整性:R中每一个软件包都是依赖可满足的,即都是可安装的。Completeness: Every package in R is dependency-satisfiable, i.e., installable.
软件包可安装性判定问题Software package installability determination problem
对于包基R,给定一个软件包p,如果p相对于包基R符合依赖可满足性,则称p在包基R上可安装。相应的,称其判定问题为软件包的可安装性判定问题。For package base R, given a package p, if p satisfies dependency satisfiability with respect to package base R, then p is said to be installable on package base R. Correspondingly, the decision problem is called software package installability decision problem.
布尔可满足(SAT)问题(Boolean Satisfiablity Problem)Boolean Satisfiable (SAT) Problem (Boolean Satisfiablity Problem)
给定一个布尔函数F(X):{0,1}n→{0,1},找出一组变量赋值X*,使得F(X*)=1或证明不存在这样的赋值。Given a Boolean function F(X): {0, 1} n →{0, 1}, find out a set of variable assignments X * such that F(X * )=1 or prove that there is no such assignment.
可以将软件包可安装性判定问题映射为SAT问题,这样可以基于SAT求解可安装判定问题。The software package installability determination problem can be mapped to a SAT problem, so that the installability determination problem can be solved based on SAT.
软件包依赖关系转换为CNF子句集的基本映射规则Basic mapping rules for converting package dependencies into CNF clause sets
SAT问题中布尔函数通常表达为合取范式(CNF),一个CNF是由子句构成的集合,集合中的每个子句是由文字或其否定构成的析取。一个CNF公式称为可满足的,如果至少有一组变量的赋值使得CNF的值为真。为包基R中的每一个软件包p(u,v)定义一个谓词变量,表示标识名称为u的软件包将以版本号v安装。Ru代表R中标识名为u的软件包的不同版本的集合。向SAT问题映射的基本规则定义如下。Boolean functions in SAT problems are usually expressed as Conjunctive Normal Form (CNF). A CNF is a set of clauses, and each clause in the set is a disjunction composed of literals or their negations. A CNF formula is said to be satisfiable if at least one set of variable assignments makes the CNF true. Define a predicate variable for each package p(u, v) in package base R , which means that the software package with the identification name u will be installed with the version number v. R u represents the set of different versions of the software package named u identified in R. The basic rules for mapping to SAT questions are defined below.
对于直接依赖集合Dr={p1∨...∨pn,...,pj∨...∨pk},For the set of direct dependencies D r ={p 1 ∨...∨p n ,...,p j ∨...∨p k },
引入谓词逻辑 Introduce predicate logic
对于直接冲突集合Dc={p1,…,pj},引入谓词逻辑 For the direct conflict set D c ={p 1 ,...,p j }, predicate logic is introduced
对于标识名相同但版本号不同的软件包产生的冲突关系,对(1)、(2)所确定的所有标识名为u的软件包,引入 For the conflict relationship between software packages with the same identification name but different version numbers, for all software packages with the identification name u determined in (1) and (2), introduce
Linux软件包依赖树Linux package dependency tree
Linux软件包依赖树又称依赖树。Linux操作系统以及分发端的软件包间依赖关系为一个有向图,结点间关系为依赖关系和冲突关系,依赖与冲突关系中的“与依赖”和“或依赖”可采用扩展的“与-或”图。为了更好的将依赖关系向SAT问题映射,本文定义依赖结点这一概念,依赖结点分为直接依赖结点(类似图3中软件包b)和复合依赖结点(类似图3中的结点c或者d)。依赖结点之间的关系为“与依赖”。The Linux package dependency tree is also known as the dependency tree. The dependency relationship between the Linux operating system and the software packages on the distribution side is a directed graph, and the relationship between nodes is a dependency relationship and a conflict relationship. The "and-dependence" and "or-dependence" in the dependency-conflict relationship can use the extended "and- or" Fig. In order to better map dependencies to SAT problems, this paper defines the concept of dependent nodes, which are divided into direct dependent nodes (similar to software package b in Figure 3) and compound dependent nodes (similar to Node c or d). The relationship between dependent nodes is "and dependent".
CNF范式CNF paradigm
CNF范式是SAT问题解决算法中一种通用输入文件的格式。具体描述如下:CNF paradigm is a common input file format in SAT problem solving algorithm. The specific description is as follows:
文件可以以c开始,并在该行添加文件的描述信息。The file can start with c, and add the description information of the file in this line.
在描述信息后添加一行例如”p cnf nbvar nbclauses”,表示文件格式为CNF。其中nbvar表示在文件出现的变量总数,nbclauses表示在文件中出现的因数项。并在本行后添加因数项Add a line such as "p cnf nbvar nbclauses" after the description information, indicating that the file format is CNF. Among them, nbvar represents the total number of variables appearing in the file, and nbclauses represents the factor items appearing in the file. and add the factor term after this line
每个因数项占据一行,该行中包含需要描述的因数,并以“0”为结尾Each factor item occupies a line that contains the factor to be described and ends with "0"
具体样例如下:Specific examples are as follows:
cc
c comments Max-SATc comments Max-SAT
cc
p cnf 34p cnf 34
1-201-20
-1 2-3 0-1 2-3 0
-3 2 0-3 2 0
1 3 01 3 0
请参阅图1所示,为本发明提出的基于依赖的软件包依赖关系检查方法的流程图,包括以下步骤:Please refer to Fig. 1, which is a flow chart of the dependency-based software package dependency inspection method proposed by the present invention, including the following steps:
步骤10:从软件包依赖关系描述文件graphml.xml中读取依赖信息并生成软件包依赖关系树。Step 10: Read dependency information from the package dependency description file graphml.xml and generate a package dependency tree.
一般而言,软件包之间的依赖关系可分为两类:需求依赖和冲突依赖。需求依赖是一种常见的依赖关系,即为安装软件包P1,必须首先安装软件包P2,P1对P2存在着需求依赖;冲突依赖较为少见,是一种负依赖关系,即软件包P1和P2无法共同存在。In general, dependencies between software packages can be divided into two categories: requirement dependencies and conflict dependencies. Requirement dependency is a common dependency relationship, that is, to install software package P1, software package P2 must be installed first, and P1 has a requirement dependency on P2; conflict dependency is relatively rare, and it is a negative dependency relationship, that is, software packages P1 and P2 cannot co-exist.
从软件包依赖关系描述文件graphml.xml中读取依赖信息并生成软件包依赖关系树做详细说明,它包括以下三个步骤:Read dependency information from the package dependency description file graphml.xml and generate a package dependency tree for detailed description, which includes the following three steps:
步骤101:从软件包依赖关系描述文件graphml.xml中读取依赖信息。Step 101: Read dependency information from the software package dependency description file graphml.xml.
本发明中提取的依赖信息是从软件包依赖关系描述文件graphml.xml中读取的,其中,graphml.xml是依据专利发明申请书《一种软件包依赖关系建模方法》中得出的软件包依赖关系描述文件,是采用扩展的GraphML文件描述的,基于扩展的GraphML表示软件包依赖关系图,如图2所示。图示说明,依赖关系图由节点node、边edge和超边hyperedge组成。图中利用节点node表示组成包基的软件包,边edge表示两个软件包间的依赖关系,超边hyperedge表示软件包间的“或依赖”关系。每个软件包都会有一个版本号(version)作为一个重要的标识,RPM和DEB软件包的版本号格式相同的。版本号是标识软件包之间依赖关系的一个重要依据。RPM和DEB软件包元数据中描述的依赖类型大部分是相同的,只有一些特殊用途的依赖关系是不同的(例如:obsoletes,replaces),而这些依赖关系对软件包依赖完整性的影响并不大。因此本发明只提取三种主要的依赖关系,作为判断软件包依赖完整性的依据。具体如下:The dependency information extracted in the present invention is read from the software package dependency description file graphml.xml, wherein graphml.xml is the software obtained according to the patent invention application "A Modeling Method for Software Package Dependency" The package dependency description file is described by using the extended GraphML file, and the package dependency graph is expressed based on the extended GraphML, as shown in Figure 2. The illustration shows that the dependency graph is composed of nodes, edges and hyperedges. In the figure, the node node is used to represent the software packages that make up the package base, the edge edge represents the dependency relationship between two software packages, and the hyperedge represents the "or dependency" relationship between software packages. Each software package will have a version number (version) as an important identifier, and the format of the version number of the RPM and DEB software packages is the same. Version numbers are an important basis for identifying dependencies between software packages. Most of the dependency types described in RPM and DEB package metadata are the same, only some special-purpose dependencies are different (for example: obsoletes, replaces), and these dependencies have no impact on the package dependency integrity big. Therefore, the present invention only extracts three main dependency relationships as the basis for judging the completeness of software package dependencies. details as follows:
run(Depends关系):用来表示主要依赖的软件包,如果当前软件包要安装或者运行,系统中必须存在的软件包。run (Depends relationship): Used to indicate the main dependent software package, if the current software package is to be installed or run, the software package must exist in the system.
conflict(Conflicts关系):用来表示与当前软件包冲突的软件包,如果当前软件包要安装或者运行,系统中不能存在的软件包。一个软件包要完成安装或者运行必须保证系统中不存在与之冲突的软件包。Conflict (Conflicts relationship): It is used to indicate a software package that conflicts with the current software package. If the current software package is to be installed or run, the software package cannot exist in the system. For a software package to be installed or run, there must be no conflicting software packages in the system.
install(Pre-Depends关系):与depends关系类似,表示当前软件包要安装或者运行,系统中必须存在的软件包,不同之处在于depends依赖的软件包在当前软件包安装的时候可以不存在于系统中,但是安装完成后会与当前软件包同时展开到系统中;Pre-Depends依赖的软件包在当前软件包安装时就必须已经存在于系统中。install (Pre-Depends relationship): Similar to the depends relationship, it means that the current software package must be installed or run, and the software package must exist in the system. The difference is that the software package that depends depends on may not exist when the current software package is installed. In the system, but after the installation is complete, it will be expanded to the system at the same time as the current software package; the software package that Pre-Depends depends on must already exist in the system when the current software package is installed.
本发明以一个简化的GraphML文件作为较佳实施例,假设graphml.xml内容如下:The present invention uses a simplified GraphML file as a preferred embodiment, assuming that the content of graphml.xml is as follows:
<graphml><graphml>
<graph edgedefault=′directed′version_type=′rpm′><graph edgedefault='directed'version_type='rpm'>
<node package=′a′id=′a′/><node package='a'id='a'/>
<node package=′b′id=′b′/><node package='b'id='b'/>
<node package=′c′id=c′/><node package='c'id=c'/>
<node package=′c′id=d′/><node package='c'id=d'/>
<node package=′c′id=e′/><node package='c'id=e'/>
<node package=′c′id=f′/><node package='c'id=f'/>
<node package=′c′id=g′/><node package='c'id=g'/>
<node package=′c′id=h′/><node package='c'id=h'/>
<node package=′c′id=i′/><node package='c'id=i'/>
<edge type=′run′source=′a′target=′b′/><edge type='run'source='a'target='b'/>
<edge type=′run′source=′b′target=′f′/><edge type='run'source='b'target='f'/>
<edge type=′run′source=′b′target=′g′/><edge type='run'source='b'target='g'/>
<edge type=′run′source=′c′target=′g′>/<edge type='run'source='c'target='g'>/
<edge type=′run′source=′e′target=′i′/><edge type='run'source='e'target='i'/>
<edge type=′conflict′source=′c′target=′e′/><edge type='conflict'source='c'target='e'/>
<edge type=′conflict′source=′g′target=′h′/><edge type='conflict'source='g'target='h'/>
<hyperedge type=′run′><hyperedge type='run'>
<endpoint type=″out″node=″a″/><endpoint type="out"node="a"/>
<endpoint type=″in″node=″c″/><endpoint type="in"node="c"/>
<endpoint type=″in″node=″d″/><endpoint type="in"node="d"/>
</hyperedge></hyperedge>
<hyperedge type=′run′><hyperedge type='run'>
<endpoint type=″out″node=″a″/><endpoint type="out"node="a"/>
<endpoint type=″in″node=″d″/><endpoint type="in"node="d"/>
<endpoint type=″in″node=″e″/><endpoint type="in"node="e"/>
</hyperedge></hyperedge>
<hyperedge type=′run′><hyperedge type='run'>
<endpoint type=″out″node=″d″/><endpoint type="out"node="d"/>
<endpoint type=″in″node=″g″/><endpoint type="in"node="g"/>
<endpoint type=″in″node=″h″/><endpoint type="in"node="h"/>
<endpoint type=″in″node=″i″/><endpoint type="in"node="i"/>
</hyperedge></hyperedge>
</graph></graph>
</graphml></graphml>
由上可见,为了简化问题,该graphml.xml文件中只包含9个软件包节点分别为a、b、c、d、e、f、g、h、i,每个节点元素仅给出了packagename属性,version和privade均已省略;软件包a与依赖b,a或依赖c和d,a或依赖d和e,b与依赖f和g,c与依赖g,d或依赖g、h和i,e与依赖i,c与e冲突,g与h冲突。It can be seen from the above that in order to simplify the problem, the graphml.xml file only contains 9 software package nodes, namely a, b, c, d, e, f, g, h, i, and each node element only gives the packagename Attributes, version and privade are omitted; package a depends on b, a depends on c and d, a depends on d and e, b depends on f and g, c depends on g, d depends on g, h and i , e conflicts with dependency i, c conflicts with e, and g conflicts with h.
步骤102:从软件包集合中任选一个软件包。Step 102: Select a software package from the software package collection.
在软件包集中任选一个软件包,假设选择软件包a,要判断软件包a是否可安装的为待描述的基于依赖的软件包依赖关系检查方法示例。Select a software package in the software package set, assuming that software package a is selected, it is necessary to determine whether the software package a can be installed is an example of a dependency-based software package dependency checking method to be described.
步骤103:根据选择的软件包和所读取的依赖信息生成依赖关系树。Step 103: Generate a dependency tree according to the selected software package and the read dependency information.
软件包依赖树为一个有向图,结点间关系为依赖关系和冲突关系,依赖与冲突关系中的“与依赖”和“或依赖”可采用扩展的“与-或”图表示,扩展的虚线表示冲突关系。根据较佳实施例中要判断的软件包a,提取与其直接或者间接相关的软件包共8个,分别为b、c、d、e、f、g、h、i。根据前述步骤102提取的依赖信息:软件包a与依赖b,a或依赖c和d,a或依赖d和e,b与依赖f和g,c与依赖g,d或依赖g、h和i,e与依赖i,c与e冲突,g与h冲突,生成的软件包依赖关系树如图3所示。软件包a为依赖关系树的根,c与e、g与h之间存在冲突,用扩展的虚线表示冲突关系。由图3可知,若要安装a,先要安装b,c或d,d或e。c和e不能同时安装。a可安装即至少存在一个依赖满足解。对于一个分发池或者Linux版本的依赖完整性即其中所有软件包都有依赖满足解,即都是可安装的。The software package dependency tree is a directed graph, and the relationship between nodes is a dependency relationship and a conflict relationship. The "and-dependence" and "or-dependence" in the dependency-conflict relationship can be represented by an extended "and-or" graph, and the extended Dashed lines indicate conflicting relationships. According to the software package a to be judged in the preferred embodiment, a total of 8 software packages directly or indirectly related to it are extracted, namely b, c, d, e, f, g, h, i. Dependency information extracted according to the preceding step 102: software package a depends on b, a depends on c and d, a depends on d and e, b depends on f and g, c depends on g, d depends on g, h and i , e conflicts with dependency i, c conflicts with e, g conflicts with h, and the generated software package dependency tree is shown in Figure 3. Package a is the root of the dependency tree, and there are conflicts between c and e, g and h, and the conflict relationship is represented by an extended dotted line. It can be seen from Figure 3 that if a is to be installed, b, c or d, d or e must be installed first. c and e cannot be installed at the same time. a can be installed that there is at least one dependency satisfaction solution. The dependency integrity of a distribution pool or Linux version means that all software packages in it have a dependency satisfaction solution, that is, they are all installable.
步骤20:将依赖关系树转换成CNF范式。Step 20: Convert the dependency tree into CNF paradigm.
根据软件包依赖关系转换为CNF子句集的基本映射规则,完成软件包依赖树向CNF范式的转换本发明采用的是一种递归式算法。软件包依赖树转换为CNF范式的算法分为两种,完备的和不完备的。其中完备的算法包含所有的特殊情,但是会转换大量的冗余依赖关系,从而造成程序所需空间巨大;不完备的算法将放弃转换大量的冗余依赖关系,但是程序占用的空间将在可控范围内,对软件包的数目是没有限制。不完备的算法和完备的算法的主要区别在复合结点转换CNF范式的时候遍历依赖树深度的有所区别:完备的算法遍历依赖树直到树叶为止,不完备的算法遍历依赖树时,当深度达到定值时会停止向下遍历。本发明实现时采用不完备的算法具体流程,请参阅图4所示。According to the basic mapping rule of converting software package dependency into CNF clause set, the conversion of software package dependency tree to CNF paradigm is completed. The present invention adopts a recursive algorithm. There are two types of algorithms for converting software package dependency tree to CNF paradigm, complete and incomplete. The complete algorithm contains all the special cases, but it will convert a large number of redundant dependencies, resulting in a huge space required by the program; the incomplete algorithm will give up converting a large number of redundant dependencies, but the space occupied by the program will be within the available space. Within the scope of control, there is no limit to the number of software packages. The main difference between the incomplete algorithm and the complete algorithm is the difference in traversing the depth of the dependency tree when the composite node is converted to the CNF paradigm: the complete algorithm traverses the dependency tree until the leaves, and the incomplete algorithm traverses the dependency tree when the depth It will stop traversing downwards when it reaches a certain value. Please refer to FIG. 4 for the specific flow of the incomplete algorithm used in the realization of the present invention.
根据较佳实施例,根据软件包依赖关系转换为CNF算法流程,采用树的宽度遍历算法将图3所示的软件包依赖树转换成CNF范式文本,其具体过程如下:According to a preferred embodiment, the software package dependency is converted into a CNF algorithm process, and the tree width traversal algorithm is used to convert the software package dependency tree shown in Figure 3 into a CNF paradigm text, and the specific process is as follows:
(1)将根节点a添加到结点队列;(1) Add root node a to the node queue;
(2)获取队列中结点a;(2) Obtain node a in the queue;
获取结点a的直接依赖结点,从图3可知,a直接依赖b,则将b加入结点队列中,并将b转换为CNF范式输出,输出格式为b 0;获取结点a的复合依赖结点,从图3可知,a的复合依赖结点为c∨d和d∨e,则将c、d、e都加入到结点队列中,并将c∨d转换为CNF范式输出,输出格式为c d 0,将d∨e转换为CNF范式输出,输出格式为d e 0;获取与a冲突结点,从图3可知,没有与a冲突的结点;Obtain the directly dependent nodes of node a, as can be seen from Figure 3, a directly depends on b, then add b to the node queue, and convert b to CNF paradigm output, the output format is b 0; obtain the composite of node a Dependent nodes, as can be seen from Figure 3, the compound dependent nodes of a are c∨d and d∨e, then add c, d, and e to the node queue, and convert c∨d to CNF paradigm output, The output format is c d 0, convert d∨e to CNF paradigm output, and the output format is d e 0; obtain the conflicting node with a, as can be seen from Figure 3, there is no conflicting node with a;
将a从结点队列中删除。Remove a from the node queue.
(3)获取队列中结点b;(3) Obtain node b in the queue;
获取结点b的直接依赖结点,从图3可知,b的直接依赖结点为f和g,则将f和g加入结点队列中,并将f转换为CNF范式输出,输出格式为f0,将g转换为CNF范式输出,输出格式为g 0;获取结点b的复合依赖结点,从图3中可知,b没有复合依赖结点;获取与b冲突结点,从图3可知,没有与b冲突的结点;Obtain the directly dependent nodes of node b. From Figure 3, we can see that the directly dependent nodes of b are f and g, then add f and g to the node queue, and convert f to CNF paradigm output, and the output format is f0 , convert g to CNF paradigm output, and the output format is g 0; obtain the compound dependent node of node b, as can be seen from Figure 3, b has no compound dependent node; obtain conflicting nodes with b, as can be seen from Figure 3, There are no nodes that conflict with b;
将b从结点队列中删除。Remove b from the node queue.
(4)获取队列中结点c;(4) Obtain node c in the queue;
获取结点c的直接依赖结点,从图3可知,c的直接依赖结点为g,因为g已经在结点队列中,故不再需要将其加入结点队列;因c∨d,故将c的直接依赖结点g与d取或,转换为CNF范式输出,输出格式为g d 0;获取与c冲突结点,从图3可知,与c冲突的结点为e,转换为CNF范式输出为-c-e 0;Obtain the directly dependent node of node c, as can be seen from Figure 3, the directly dependent node of c is g, because g is already in the node queue, so it is no longer necessary to add it to the node queue; because c∨d, so Take the OR of the directly dependent nodes g and d of c, and convert it into CNF paradigm output, and the output format is g d 0; get the node that conflicts with c, as can be seen from Figure 3, the node that conflicts with c is e, and convert it into CNF The normal form output is -c-e 0;
将c从结点队列中删除。Remove c from the node queue.
(5)获取队列中结点d;(5) Get the node d in the queue;
获取结点d的直接依赖结点,从图3可知,d没有直接依赖结点;获取结点d的复合依赖结点,从图3可知,d的复合依赖结点为g∨h∨i,则将还没有在结点队列中的结点h和i都加入到结点队列中,因c∨d,故将c与d的复合依赖结点g∨h∨i取或,转换为CNF范式输出,输出格式为cg h i 0;因d∨e,故将e与d的复合依赖结点g∨h∨i取或,转换为CNF范式输出,输出格式为g h i e 0;因g∨d,故将g与d的复合依赖结点g∨h∨i取或,转换为CNF范式输出,输出格式为g h i 0;获取与d冲突结点,从图3可知,没有与d冲突的结点;Obtain the direct dependent nodes of node d, as can be seen from Figure 3, d has no direct dependent nodes; obtain the composite dependent nodes of node d, as can be seen from Figure 3, the composite dependent nodes of d are g∨h∨i, Then add the nodes h and i that are not yet in the node queue to the node queue, because c∨d, so the compound dependent node g∨h∨i of c and d is ORed, and converted into the CNF paradigm Output, the output format is cg h i 0; because of d ∨ e, the compound dependent node g ∨ h ∨ i of e and d is taken or, converted into CNF paradigm output, the output format is g h i e 0; because g ∨ d, so take or the compound dependent node g∨h∨i of g and d, and convert it into CNF paradigm output, and the output format is g h i 0; obtain conflicting nodes with d, as can be seen from Figure 3, there is no connection with d the point of conflict;
将d从结点队列中删除。Remove d from the node queue.
(6)获取队列中结点e;(6) Get the node e in the queue;
获取结点e的直接依赖结点,从图3可知,e的直接依赖结点为i,将结点i其加入结点队列;因d∨e,故将d与e的直接依赖结点i取或,转换为CNF范式输出,输出格式为d i 0;获取与e冲突结点,从图3可知,与e冲突的结点为c,CNF范式中已经存在,故不需要在输出;Obtain the direct dependent node of node e, as shown in Figure 3, the direct dependent node of e is i, and add node i to the node queue; because d∨e, the direct dependent node i of d and e Take or, convert to CNF normal form output, the output format is di 0; get the node that conflicts with e, as can be seen from Figure 3, the node that conflicts with e is c, which already exists in the CNF normal form, so it does not need to be output;
将e从结点队列中删除。Remove e from the node queue.
结点队列中的f、g、h、i都既没有直接依赖结点也存在复合依赖结点,而仅结点g与h冲突,转换为CNF范式,输出格式为-g-h 0;然后将它们都从结点队列中删除,结点队列为空,软件包依赖关系树转CNF范式完毕。f, g, h, and i in the node queue have neither direct dependent nodes nor complex dependent nodes, but only node g and h conflict, converted to CNF paradigm, and the output format is -g-h 0; then they are All are deleted from the node queue, the node queue is empty, and the software package dependency tree is converted to the CNF paradigm.
生成CNF范式文件,文件具体内容如下:Generate a CNF paradigm file. The specific content of the file is as follows:
文件具体内容如下:The specific content of the file is as follows:
p cnf 9 12p cnf 9 12
b 0b 0
c d 0c d 0
d e 0d e 0
f 0f 0
g 0g 0
g d 0g d 0
-c-e 0-c -e 0
c g h i 0c g h i 0
g h i e 0g h i e 0
g h i 0g h i 0
d i 0d i 0
-g-h 0-g -h 0
由上述数据中第一行描述信息可知,文件中数据遵循CNF范式,一共9个变量12个范式,每个范式占用一行,每行的0代表一行的结尾。From the description information in the first line of the above data, it can be seen that the data in the file follows the CNF paradigm, a total of 9 variables and 12 paradigms, each paradigm occupies a line, and 0 in each line represents the end of a line.
步骤30:将描述依赖关系的CNF范式文件作为SAT问题解决算法的输入,计算结果为该软件是否可安装的解。Step 30: The CNF paradigm file describing the dependency relationship is used as the input of the SAT problem solving algorithm, and the calculation result is the solution of whether the software can be installed.
SAT问题解决算法部分,本发明考虑到软件包可满足性判断的严谨性,选择了完备的方法一一DPLL(Davis-Putnam-Logemann-Loveland)算法。DPLL算法是完全的、高校的、基于回溯的解决逻辑命题可满足性的算法。In the part of the SAT problem-solving algorithm, the present invention considers the rigor of software package satisfiability judgment, and selects a complete method——DPLL (Davis-Putnam-Logemann-Loveland) algorithm. The DPLL algorithm is a complete, high-level, backtracking-based algorithm for solving the satisfiability of logical propositions.
具体算法伪代码如下:The specific algorithm pseudo code is as follows:
function DPLL(Φ)\\其中Φ为CNF格式的输入。function DPLL(Φ)\\where Φ is the input in CNF format.
ifΦis a consistent set of literalsifΦis a consistent set of literals
then return true; then return true;
ifΦcontains an empty clauseif Φcontains an empty clause
then return false;then return false;
tor every unit clause l inΦtor every unit clause l inΦ
Φ=unit-propagate(l,Φ);Φ=unit-propagate(l, Φ);
for every literal l that occurs pure inΦfor every literal l that occurs pure inΦ
Φ=pure-literal-assign(l,Φ);Φ=pure-literal-assign(l, Φ);
l:=choose-literal(Φ);l:=choose-literal(Φ);
return DPLL(ΦAl)OR DPLL(ΦAnot(l));return DPLL(ΦAl) OR DPLL(ΦAnot(l));
根据较佳实施例,由上述步骤20得到的数据中第一行为描述信息,说明文件中数据遵循CNF范式,一共9个变量,12个范式。判断软件包a是否可安装,就是判断上述12条CNF范式是否布尔可满足。将上述数据作为SAT解决算法的输入可以得到解:{Sat;(b d f g)},其中SAT问题解决算法只是判断该软件包是否有可满足解,如果有,则给出一条可满足解的赋值,如果没有则返回UNSAT,表示该软件包不存在可满足解。According to a preferred embodiment, the first line of the data obtained in the above step 20 describes the information, indicating that the data in the file follows the CNF paradigm, with a total of 9 variables and 12 paradigms. Judging whether the software package a can be installed is to judge whether the above 12 CNF paradigms are Boolean satisfiable. Using the above data as the input of the SAT solving algorithm can get the solution: {Sat; (b d f g)}, where the SAT problem solving algorithm just judges whether the software package has a satisfiable solution, and if so, gives a satisfiable solution If there is no assignment, UNSAT is returned, indicating that there is no satisfiable solution for the software package.
另外包基的依赖完整性检查算法总结为如下:In addition, the package-based dependency integrity check algorithm is summarized as follows:
基于依赖的软件包依赖关系检查方法:DependIntegritySolver(R)Dependency-based package dependency checking method: DependIntegritySolver(R)
输入:包基R;input: package base R;
输出:包基的依赖完整性检查结果,包括每个软件包的可安装解或无解判定结果;Output: the package base dependency integrity check result, including the installable solution or no solution determination result of each package;
for(each软件包p∈R){for(each package p∈R){
提取包基R中软件包p的依赖关系图PDG;Extract the dependency graph PDG of package p in package base R;
将PDG中软件包之间的依赖关系转换为CNF子句集CSet;Convert the dependencies between software packages in PDG into CNF clause sets CSet;
MiniSAT_Solver.InitCNF(CSet);MiniSAT_Solver.InitCNF(CSet);
result=MiniSAT_Solver.Solve(CSet);result = MiniSAT_Solver.Solve(CSet);
if(result为NULL)输出“no result”;else保存解result;If (result is NULL) output "no result"; else save the solution result;
}}
以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更改或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。The above description is only a preferred embodiment of the present invention, and does not limit the present invention in any form. Although the present invention has been disclosed as above with preferred embodiments, it is not intended to limit the present invention. Anyone familiar with this field Those skilled in the art, without departing from the scope of the technical solution of the present invention, can use the method and technical content disclosed above to make some changes or modify equivalent embodiments with equivalent changes, but if they do not depart from the technical solution of the present invention, according to The technical essence of the present invention Any simple modifications, equivalent changes and modifications made to the above embodiments still fall within the scope of the technical solutions of the present invention.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010241133XA CN102073583A (en) | 2010-07-30 | 2010-07-30 | Method for checking software package dependency relationship based on dependency |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010241133XA CN102073583A (en) | 2010-07-30 | 2010-07-30 | Method for checking software package dependency relationship based on dependency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102073583A true CN102073583A (en) | 2011-05-25 |
Family
ID=44032129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010241133XA Pending CN102073583A (en) | 2010-07-30 | 2010-07-30 | Method for checking software package dependency relationship based on dependency |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102073583A (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446757A (en) * | 2014-08-21 | 2016-03-30 | 阿里巴巴集团控股有限公司 | Data packet processing method and device |
CN109033816A (en) * | 2018-06-15 | 2018-12-18 | 中国人民解放军国防科技大学 | Domestic office peripheral drive management method and system on kylin operating system platform |
CN110543423A (en) * | 2019-09-05 | 2019-12-06 | 中国人民解放军国防科技大学 | Method, system and medium for detecting software dependency package capabilities |
CN112667250A (en) * | 2020-12-23 | 2021-04-16 | 北京浪潮数据技术有限公司 | Method, system and device for packaging and downloading components of centros system |
CN113971031A (en) * | 2021-10-28 | 2022-01-25 | 中国银行股份有限公司 | Software package dependency relationship checking method and device |
CN115686491A (en) * | 2022-11-14 | 2023-02-03 | 山东新一代信息产业技术研究院有限公司 | Software package graphical display method, equipment and medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013452A (en) * | 2007-02-05 | 2007-08-08 | 江苏大学 | A Symbolic Model Checking Method |
CN101686143A (en) * | 2008-09-22 | 2010-03-31 | 华为技术有限公司 | Method and device for satisfiability detection of ontological concepts |
US20100115341A1 (en) * | 2008-09-04 | 2010-05-06 | Telcordia Technologies, Inc. | Computing diagnostic explanations of network faults from monitoring data |
-
2010
- 2010-07-30 CN CN201010241133XA patent/CN102073583A/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013452A (en) * | 2007-02-05 | 2007-08-08 | 江苏大学 | A Symbolic Model Checking Method |
US20100115341A1 (en) * | 2008-09-04 | 2010-05-06 | Telcordia Technologies, Inc. | Computing diagnostic explanations of network faults from monitoring data |
CN101686143A (en) * | 2008-09-22 | 2010-03-31 | 华为技术有限公司 | Method and device for satisfiability detection of ontological concepts |
Non-Patent Citations (1)
Title |
---|
顾昊等: "基于SAT的软件包依赖问题的研究", 《第九届计算机科学与技术研究生学术讨论会论文集》, 16 August 2007 (2007-08-16), pages 1 - 6 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446757A (en) * | 2014-08-21 | 2016-03-30 | 阿里巴巴集团控股有限公司 | Data packet processing method and device |
CN105446757B (en) * | 2014-08-21 | 2019-09-17 | 阿里巴巴集团控股有限公司 | A kind of processing method and equipment of data packet |
CN109033816A (en) * | 2018-06-15 | 2018-12-18 | 中国人民解放军国防科技大学 | Domestic office peripheral drive management method and system on kylin operating system platform |
CN109033816B (en) * | 2018-06-15 | 2020-08-21 | 中国人民解放军国防科技大学 | Domestic office peripheral drive management method and system on Kylin operating system platform |
CN110543423A (en) * | 2019-09-05 | 2019-12-06 | 中国人民解放军国防科技大学 | Method, system and medium for detecting software dependency package capabilities |
CN110543423B (en) * | 2019-09-05 | 2022-12-30 | 中国人民解放军国防科技大学 | Software dependence package capability detection method, system and medium |
CN112667250A (en) * | 2020-12-23 | 2021-04-16 | 北京浪潮数据技术有限公司 | Method, system and device for packaging and downloading components of centros system |
CN113971031A (en) * | 2021-10-28 | 2022-01-25 | 中国银行股份有限公司 | Software package dependency relationship checking method and device |
CN115686491A (en) * | 2022-11-14 | 2023-02-03 | 山东新一代信息产业技术研究院有限公司 | Software package graphical display method, equipment and medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kehrer et al. | A rule-based approach to the semantic lifting of model differences in the context of model versioning | |
US8826225B2 (en) | Model transformation unit | |
Lagarde et al. | Improving UML profile design practices by leveraging conceptual domain models | |
Garcés et al. | Managing model adaptation by precise detection of metamodel changes | |
JP5197688B2 (en) | Integrated environment generator | |
Iovino et al. | On the Impact Significance of Metamodel Evolution in MDE. | |
Habermehl et al. | Forest automata for verification of heap manipulation | |
CN106062751B (en) | Management of data profiling operations relating to data types | |
CN102073583A (en) | Method for checking software package dependency relationship based on dependency | |
JP2016029582A (en) | Method, computer program, and system for editing and compiling business rules | |
CN102955697B (en) | Based on the component base construction method of AOP | |
US20090113382A1 (en) | Automated deployment implementation with a deployment topology model | |
Debreceni et al. | Query-driven incremental synchronization of view models | |
Le et al. | Validating consistency between a feature model and its implementation | |
Radke et al. | Translating essential OCL invariants to nested graph constraints focusing on set operations | |
Varró et al. | An algorithm for generating model-sensitive search plans for pattern matching on EMF models | |
Behjati et al. | Architecture-level configuration of large-scale embedded software systems | |
CN102193802A (en) | Method for converting models with model subsets of same base class structure | |
Wißmann et al. | Explaining behavioural inequivalence generically in quasilinear time | |
Schauerhuber et al. | Bridging WebML to model-driven engineering: from document type definitions to meta object facility | |
CN104615438B (en) | A kind of characteristic slice model checking method of software product line | |
Ehrig et al. | Model transformation from visualocl to ocl using graph transformation | |
Xia et al. | Rigorous EBNF-based definition for a graphic modeling language | |
Ramalingam et al. | Semantics-based reverse engineering of object-oriented data models | |
Gerth et al. | Precise mappings between business process models in versioning scenarios |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: BEIHANG UNIVERSITY Free format text: FORMER OWNER: LAN YUQING Effective date: 20130717 |
|
C41 | Transfer of patent application or patent right or utility model | ||
COR | Change of bibliographic data |
Free format text: CORRECT: ADDRESS; FROM: 100084 HAIDIAN, BEIJING TO: 100191 HAIDIAN, BEIJING |
|
TA01 | Transfer of patent application right |
Effective date of registration: 20130717 Address after: 100191 Haidian District, Xueyuan Road, No. 37, Applicant after: Beihang University Address before: 205, room 2, building 15, building 100084, brown stone garden, Dongmen east gate, Old Summer Palace, Beijing, Haidian District Applicant before: Lan Yuqing |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110525 |