【问题标题】:Release management system for LinuxLinux 发布管理系统
【发布时间】:2010-02-19 14:42:05
【问题描述】:
我们公司需要一种用于 Linux/C++ 的发布管理工具。我们的产品由多个库和配置文件组成。在这里,我将列出我们希望此类系统具有的基本功能:
能够跟踪依赖项,轻松增加依赖项的主要版本增加的库的主要版本。它应该在内部构建某种依赖关系图,以便知道谁受到更新的影响。
知道如何构建它处理的产品。一个特定的构建文件,甚至更好 - 阅读和理解 makefile 的能力。
使用 SVN,以便它可以从那里检查新版本并进行构建。
生成一些安装程序 - 以 rpm 或 tar.gz 格式。为此,它应该能够理解 rpm 规范文件格式。
目前我们正在开发这种已经非常有用的工具。但是我相信我们的任务并不是独一无二的,应该有一些工具可以完成这项工作。
【问题讨论】:
标签:
c++
linux
release-management
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。
【解决方案5】:
- 不知道
- cmake/scons:我使用过 cmake,但我并不完全喜欢它,但我听说过关于 scons 的好消息。但是 scons 是基于 python 的,所以你需要在 build/dev 机器上安装 python。
- 我使用Hudson,它有一个从svn 获取的插件。它通常智能地执行,特别是仅当某些文件在 svn 更新中发生更改时才构建。 Hudson 很容易上手。 Hudson 是基于 Java 的,在 Java 社区中非常流行。这意味着它非常跨平台,但您需要在构建机器上安装 JRE。
- 可能可以在 hudson 中调用一些 rpm 工具。