acm-header
登录

ACM通信

BLOG@CACM

应对Linux发行版碎片化(在一个巨大的图表中可视化)


Philip Guo资料照片

问题:碎片化损害了软件的可移植性

人们现在使用成千上万种不同的释放数以百计的Linux发行版.每个发行版都包含一组不同的预安装软件、库和内核配置。一个普遍存在的问题是,在一个发行版上创建的软件经常不能在其他发行版上运行,甚至不能在其他版本上运行相同发行版——由于软件、库和内核版本不兼容。

例如,如果您是一名在基于linux的操作系统上编写研究软件的科学家,那么您的同事通常很难在他们的计算机上安装、配置和运行该软件,除非他们正在使用相同的版本你正在使用的是同一个Linux发行版。软件移植性的缺乏使得同事们很难复制和扩展你的工作,从而阻碍了科学的进步。

下图显示了Linux发行版的家族树,时间水平排列;单击查看完整尺寸的图像或参阅这里的原始来源.注意,这个图只显示了时间和祖先关系,并没有说明每个单独的版本;理想的图表会将所有发行版的所有版本呈现为直线上的单个点。

Linux发行版(400宽度)

现在把两个发行版X和Y想象成这个巨大树上的点。你在X发行版上开发的软件在别人的Y发行版上运行的可能性与图中X和Y的距离成正比:

  • X和Y的水平距离越远,软件运行的可能性就越小。例如,由于库和内核的不兼容,在2012年的Ubuntu发行版上创建的软件可能无法在2004年的Ubuntu上运行。
  • 就树中的“家族关系”而言,X和Y的距离越远,您的软件运行的可能性就越小。例如,在Ubuntu上创建的软件不太可能在Fedora上运行,因为它们来自不同的分支(分别是Debian和Red Hat)。

一个潜在的解决方案:CDE

三年前,作为我博士论文的一部分,我开发了一个软件叫做CDE这减轻了这种跨发行版软件不兼容的问题。

您可以使用CDE将您的软件及其所有依赖项打包为一种可移植的格式,这种格式可以在几乎任何Linux发行版在您使用的发行版的大约5年内发布。(我在第2.3节描述了警告和限制这个研究论文.)

让我们通过放大Linux发行版家族树来可视化CDE的好处。下面的(超长!)图表是2006年到2011年发布的发行版树的一个切片。

如果您使用CDE在这个图中的任何发行版上打包您的软件,您就可以立即在图中的任何其他发行版上运行打包的软件.简而言之,CDE使您的软件可以在五年的时间内在数千个Linux发行版之间移植。

CDE是免费的开源软件,在GitHub上.尽管CDE是由一个研究生(我!)作为一个研究项目创建的,但我很高兴在过去的三年中有成千上万的人使用CDE来打包他们的Linux软件,包括:

  • NASA的研究科学家,
  • 科学家将实验部署到欧洲电网计算基础设施,
  • 软件公司的工程师们在开发实验代码,
  • 开源软件包的创造者,
  • CS研究人员想让别人这么做复制他们的实验
  • 计算机教学助理将课堂编程作业打包分发。

不幸的是,我不再有时间维护CDE,但我希望这个项目以某种形式保持活力。参观CDE网站和阅读研究论文要学习更多的知识。


评论


匿名

非常感谢开发这么好的项目。CDE是一个很好的工具,我已经使用了一年半,节省了很多时间。我学到的重要经验是保持我的内核版本老;-)


显示1评论

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map