Linux 发布管理系统
Posted
技术标签:
【中文标题】Linux 发布管理系统【英文标题】:Release management system for Linux 【发布时间】:2010-02-19 14:42:05 【问题描述】:我们公司需要一种用于 Linux/C++ 的发布管理工具。我们的产品由多个库和配置文件组成。在这里,我将列出我们希望此类系统具有的基本功能:
能够跟踪依赖项,轻松增加依赖项的主要版本增加的库的主要版本。它应该在内部构建某种依赖关系图,以便知道谁受到更新的影响。
知道如何构建它处理的产品。一个特定的构建文件,甚至更好 - 阅读和理解 makefile 的能力。
使用 SVN,以便它可以从那里检查新版本并进行构建。
生成一些安装程序 - 以 rpm 或 tar.gz 格式。为此,它应该能够理解 rpm 规范文件格式。
目前我们正在开发这种已经非常有用的工具。但是我相信我们的任务并不是独一无二的,应该有一些工具可以完成这项工作。
【问题讨论】:
【参考方案1】:您应该考虑混合使用 Hudson、Maven(用于构建管理)、Ivy(用于依赖项管理)和 Archiva(用于工件归档)。
另外,如果您正在研究 cross.compilation,请查看 Make Project Creator (MPC) 和 Bakefile。
玩得开心!
【讨论】:
【参考方案2】:在我目前正在进行的项目中,我们使用 cmake 和其他 Kitware 工具来处理本机代码 (C++) 的大部分问题。逐点回答:
cmake 脚本处理我们不同项目的依赖关系。我们有一个依赖图,但不知道是自制脚本还是cmake提供的功能。
cmake 会生成有关平台的 makefile。如果在开发时被要求这样做,我会为 eclipse cdt 和 Visual Studio 生成项目。
Cmake 有几个工具,ctest 和 cdash,我们用来进行日常构建并查看测试的效果。
为了创建安装程序,cmake 具有 cpack。只需一个脚本,它就可以在 Linux 中生成 tar.gz、deb 或 rpm 文件,或者在 Windows 中自动生成 NSIS 脚本来生成安装程序。
对于 Java 代码,我们使用这里已经提到的 maven 和 hudson。
【讨论】:
【参考方案3】:看看这篇来自 DDJ 的文章,其中介绍和实现了一个更强大的构建系统概念(比 make)。不确定它是否能很好地满足您的要求,但它是我见过的最接近的。几个月前我也在寻找同样的东西,然后我发现了这篇文章。
http://www.drdobbs.com/architect/218400678
【讨论】:
【参考方案4】:Maven 有一个native code plugin。我不认为它会做你想做的一切,但它擅长跟踪依赖项的版本号,会构建人工制品,它会与你的 VCS 一起工作。
【讨论】:
【参考方案5】: 不知道 cmake/scons:我使用过 cmake,但我并不完全喜欢它,但我听说过关于 scons 的好消息。但是 scons 是基于 python 的,所以你需要在 build/dev 机器上安装 python。 我使用Hudson,它有一个从svn 获取的插件。它通常智能地执行,特别是仅当某些文件在 svn 更新中发生更改时才构建。 Hudson 很容易上手。 Hudson 是基于 Java 的,在 Java 社区中非常流行。这意味着它非常跨平台,但您需要在构建机器上安装 JRE。 可能可以在 hudson 中调用一些 rpm 工具。【讨论】:
以上是关于Linux 发布管理系统的主要内容,如果未能解决你的问题,请参考以下文章