如何在Ubuntu中运行一个软件的多个实例?

我有一个软件,它将使用./configure-make-make install周期从源代码./configure-make-make install 。 是否有可能“虚拟化”这个软件,以便不同的软件安装可以完成(使用不同的选项)和使用?

例如,在一个实例中,我可能希望在Makefile使用terrible.cc并编译。 而在另一种情况下,我可能会排除该文件并包含其他文件。 而且可能有几个这样的模块。 实质上,这意味着运行同一软件的多个实例,但是每个实例都安装了不同的configuration。

而且,这些安装不会“静态”完成。 为了说明这一点,考虑多个用户telnet到Linux机器,编译Apache多个实例,并运行它们。 因此,用户John的Apache对用户Adam来说是透明的,尽pipe两个Apache都在相同的物理服务器上执行。 但是,我不知道有多less用户会在任何时候login。 (但可能是我可以修复一个上限。)

这实际上是可能实现的吗? 我将非常感谢可能的url的详细回应。

不可能说出什么可能是实现您的目标的最佳方式,因为这非常依赖于您要使用的软件以及其构build环境的灵活性。

但是,在一般情况下,我首先要做的是检查是否可以使用./configure为各种版本创build安装前缀。 就像是

 --prefix /opt/yoursoft/var1 

然后将编译后的二进制文件放入/opt/yoursoft/var1/bin或类似的东西。

取决于软件的完整构build,可能需要在各种var*文件夹下使用完整的lib etc bin等文件夹。

正确执行此操作时,可以从各自的目录启动软件变体。

使用虚拟化涉及更多,因为您必须维护整个操作系统的多个副本,并在每个操作系统上安装各种版本的软件。 你可以用几种变体来做到这一点,包括像VirtualBox这样的桌面风格types,或者使用Xen或者KVM的服务器风格方法(参见这个Ubuntu指南 )。

如果您希望您的用户和计算机的行为好像对计算机上的资源具有完全访问权限(或几乎完全访问权限),而无需实际访问权限,则需要使用虚拟化为您的用户创build多个虚拟机(以及每个虚拟机将拥有自己的IP为您的应用程序,如果它提供的服务需要一个端口),或者你需要看看像jail沙盘机制(如果运行某种forms的networking争端问题仍然会导致一些应用程序“重复”,但希望使用相同的端口)。

否则,他们将能够编译和运行安装在他们的主目录中的应用程序,正如在Unix的“过去的日子”中所做的那样。 听起来像你正在描述安装应用程序到系统和本地机器目录,这是一个系统pipe理员任务。 你需要将它们限制在他们的主目录中,或者给他们虚拟机来运行。