【问题标题】:Development environment sandboxing开发环境沙盒
【发布时间】:2015-11-26 05:20:42
【问题描述】:

在 Linux 中开发时,将开发环境与系统隔离的标准方法是什么?例如,当我处理系统已经使用的应用程序或包时。我知道我可以使用虚拟机。 Linux 容器也可以使用吗?在虚拟化和容器之前如何执行这种隔离? 'chroot' 是这个工具吗?我正在做 C 和 C++ 开发。

【问题讨论】:

  • 您作为普通用户不能搞砸系统。被设计为多用户,它已经保护系统和其他用户免受您作为用户所做的任何事情的影响。但是,如果您使用 root 权限进行开发,您实际上已经禁用了这种保护,这是愚蠢的。现在,即使您是普通用户,也有保护措施。当您编译程序或库时,它不会自动出现在您的 PATH 中,因此除非您明确更改它,否则使用系统中的版本仍然是默认设置。我想知道你的问题到底是什么......
  • 谢谢,@UlrichEckhardt,我问的原因是我需要处理 gstreamer 及其插件。我正在使用的版本是 1.5.0。但是在我的系统上有 1.4.5。

标签: c++ c virtual-machine lxc linux-containers


【解决方案1】:

Red Hat 通过其Developer Toolset (DTS) 提供更新的 GCC 版本(例如 5.2)。这些较新的 GCC 版本与系统工具链一起运行,因此您不会因为它安装在文件系统的另一部分而搞砸了。这可能足以满足您的需求,但如果您还想要容器隔离,还有一个 Docker image version of the DTS 可以通过 Red Hat 容器开发工具包 (CDK) 使用。

【讨论】:

    【解决方案2】:

    没有真正的整体标准,但或多或​​少有标准方法,具体取决于技术堆栈。例如,virtualenv 在 python 中几乎无处不在。 Node 至少有两个流行的选项。

    许多人使用虚拟机,尤其是与 vagrant 等工具(或 docker 和 docker-compose 以获得更轻量级的解决方案)结合使用。

    我的理解是,就它们所需的工具而言,c 和 c++ 是相当轻量级的。见Is there any virtualenv like tool for c++ out there?。但是,如果您包含操作系统级别的依赖项,例如 DB 驱动程序等,您可能需要一些东西来处理不同项目的不同环境。

    看看 vagrant 和一些虚拟机技术或 docker plus docker-compose。

    【讨论】:

      【解决方案3】:

      Linux 容器尽可能接近 Linux 上的标准隔离环境,无论是用于开发还是其他目的。您可以根据自己喜欢的发行版找到大量开发映像,例如 these GCC Docker images 或 create one yourself,并包含您需要的所有构建工具和依赖项。

      Vagrant 是另一个有助于管理构建环境的有用工具,但如果您使用多个平台的虚拟机,它最有用。如果你只打算使用 Linux 容器,你可能不需要 Vagrant。

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 1970-01-01
        • 2017-03-13
        • 1970-01-01
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        • 2013-05-03
        相关资源
        最近更新 更多