Debian架构研究完整版.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

Debian架构研究

?

?

王洋

摘要:Debian的架构通过详细分析软件包的相关性来了解软件包之间的相互作用进行了研究。Debian中的依赖是广泛的,这使得其成为一个有趣的架构,但它们使得分析更为复杂。研究中提供了分层模式的分析,此模式基于如何使用它们将每个软件包分类为五个层之一。这些层也可以被可视化以给出应用如何被结构化的简明视图。使用这些视图,研究发现有新的架构子模式和反子模式,可以帮助开发人员创建和维护软件包。

关键词:Debian;架构;五层;子模式;反子模式

:TP311:A:1009-3044(2017)13-0075-03

1概述

为了有效地描述Debian的架构,本文提出了一套可以用来对软件包进行分类的模式。首先,软件包可以根据进入和离开依赖关系的数量被分类为分层模式或隐藏模式的一部分。一旦被发现是分层模式的一部分,该软件包可以进一步分类为特定层。本文还提出了两种自动分类技术,以提供属于每个模式的每层的软件包的数量。

属于应用层的软件包与其他层不同,该层内的软件包之间的依赖性可以提供关于特定应用如何被结构化的许多信息。结构化应用程序的不同方法通过五个子模式描述。这些子模式是由软件包维护者做出的设计选择。通过引人这些模式,我们可以向经验不足的维护者提供有关使用模式和避免模式的信息。

1.1可视化Debian软件包

Debian是一个拥有大量软件包的庞大系统,绘制有向图有助于直观的说明Debian软件包如何相互交互。要手动绘制和组织超过30000个软件包,具有120000个依赖关系是几乎不可能的,因此我们依靠软件来帮助可视化。我们从每个软件包中获取依赖性数据,然后将数据合并到一个文件中。数据从Wa-terloo大学的SWAG实验室进入LSEdit。LSEdit是一个图形可视化工具,用于查看,操作,查询,布局和大图聚类。但是,由于软件包的数量和依赖性,很难输出。

在这个不成功的可视化Debian的尝试之后,我们决定缩小并研究单个应用程序及其依赖关系。FransPop开发的一个名为debtree的工具提取了一个特定软件包的所有依赖,然后输出一个图。这些图是大而凌乱的,但是比尝试一次查看整个软件包集合更易于管理。可视化软件包和详细描述它们的依赖关系的功能允许我们理解使软件包运行的内部工作原理。这个程序被应用到各种其他软件包。我们仔细检查了其他20个软件包,注意到他们都共享两个基本的架构模式之一。

1.2分层模式

软件包可以分类到分层模式或隐藏模式中。属于分层模式的软件包是对整个应用程序有贡献的单个部分。我们发现,可以将包含在分层模式中的软件包分类为五个层:元包层,应用程序层,應用程序库层,特定目的库层和通用库层。

1.3隐藏模式

除了五个软件包层之外,还有一组额外的软件包不符合分层模型,我们将这些软件包标记为隐藏包。对于要被分类为隐藏包的软件包,它必须不具有对其他软件包的依赖性,也不具有来自任何软件包的依赖性。属于这个组的许多软件包只包含数据或文本。但是,也可能是这样的情况,软件包是一个轻量级的应用程序。事实上,Debian中很多软件包不包含单个依赖或引用。隐藏包是不与系统的其他软件包交互的独立软件包。

1.4软件包层的自动分类

为了研究Debian的整体组成,我们更详细地研究隐藏和五层,更具体地说,每个层的组成和它们如何相互交互。我们把整套Debian软件包分配给一个层或者作为一个隐藏包。

我们可以通过使用软件包的描述手动将软件包分类到五层中,但是手动分类超过30000个软件包是不可行的,因此我们寻求一种自动完成这个任务的方法。在手动分类的过程中,我们注意到许多相同的通用库被一遍又一遍地引用,同时,在应用程序库级别及以上的软件包很少被引用。这个发现影响到所有Debian软件包的In、Out、TransitiveIn和TransitiveOut度的计数。软件包的In度是直接依赖它的其他软件包的数量。Out度计算对软件包的直接依赖的数量。TransitiveIn计算直接或间接依赖于它的软件包数。例如,如果软件包A依赖于软件包B,而软件包B依赖于软件包C,则软件包C将具有1的In度,但是传递In数为2。TransitiveOut指的是需要安装以满足所有依赖关系的软件包的总数。我们使用两种方法来对软件包进行分类。第一种方法是通过简单的排序和过滤。这是一个特殊过程,其步骤如下:

1.通用库:

我们首先根据TransitiveIn计数对软件包的列表进行排序,因为我们观察到通用库被广泛引用。在大约500次计数时,程序包不再类似于通用程序包,因此我们决定在此时设置阈值。

2.隐藏包:

现在,我们开始识别隐藏包。这些是孤立的软件包,因此组合的In和Out度为1的软件包被标记。我们将In和Out度的阈值

文档评论(0)

186****7928 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档