![我如何才能有效地分离我的工作开发环境和家庭用户环境?](https://linux22.com/image/1426261/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%9C%89%E6%95%88%E5%9C%B0%E5%88%86%E7%A6%BB%E6%88%91%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%92%8C%E5%AE%B6%E5%BA%AD%E7%94%A8%E6%88%B7%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
我python-virtualenv
以前使用过 Python 工具,但现在我找到了一份新的远程工作,需要在我的系统中安装很多原生工具。问题是如何将我的工作开发环境和家庭用户环境分开?
例如,我需要安装,opencv
这需要进行大量的环境更改,但我不想一直在系统中保留这些更改,我想在另一个环境中设置它(以及我远程工作所需的所有软件),并在需要时在那里使用它。首先想到的是简单地使用chroot
。但也许存在一些我不知道的很酷的做法?
我并不经常使用 chroot,这就是我询问的原因。
答案1
我建议使用以下任何一种工具;
或者
我最近才发现 Docker,现在仍在学习中,但很快我就意识到 Docker 是专为开发人员打造的工具。试用一下,尽情享受吧!请注意,Docker 在通过环境变量进行配置时非常出色。
我使用过 LXC 工具一段时间,它们还不错,但是,对于开发来说,它们需要大量的设置工作。而 chroot 也需要更多的工作,对我来说,它们会分散你的开发注意力。而且它们的可移植性不强。
您可能还想看看 Vagrant。
由于我是新手,所以不能在这里发布很多链接,但是 Vagrant 非常流行,如果你在谷歌搜索中输入它,它将是你看到的第一个或第二个结果。
“创建和配置轻量级、可重复和可移植的开发环境。”
还请注意,Vagrant 适用于各种虚拟机或容器环境。您可以将其视为一个使用“vagrant up”命令创建虚拟开发环境的工具。它不仅限于 Linux,还可以在 Linux、Mac OS 和 Windows 上运行(完全相同!)。
更不用说当你使用docker和/或vagrant时,你可以将Dockerfile或Vagrantfile签入你的版本控制系统。因此它们成为你项目的一部分并随你的项目而变化。
希望这些工具能有所帮助。
答案2
Docker 可能适合您,但它并不是完成这项工作的最佳工具。
我强烈建议你看看流浪汉。它将完全按照你的想法去做,而且处理起来更容易。
简而言之,您有自己的桌面,然后安装 virtualbox 和 vagrant。
可能的工作流程:
- 下载预建尽可能符合您的需求的盒子
- 使用此框启动 vagrant
- SSH 进入虚拟机(盒子)
- 做你自己的事
- 完成后停止机器。
这样做的优点是,您可以添加一个在启动 vagrant 时自动运行的脚本,这可以根据您的选择配置您的环境并确保它每次都相同,Chef/Puppet/Ansible/? 也可以使用,效果很好。
如果您不想保留大量虚拟机,您可以删除它们,然后当您再次需要它们时,您只需再次下载该框并运行脚本即可。
在开发过程中,这样做的另一个好处是,如果出现问题,您只需关闭系统并重新启动,系统就会变得干净、清新。共享文件夹也会自动配置,因此您可以将任何内容放入主机上的根 vagrant 目录中,它将位于虚拟机上的 /vagrant 中。
如果你使用一个名为打包机,您可以构建 vagrant box 以及其他类型,包括 OVF、Digital Ocean 和 AWS。 拉克尔也是对 packer 的一个很好的补充。有时你可能想要部署,这将确保正在部署的镜像与你正在使用的镜像 100% 匹配,事实上 Packer 是 vagrant 和许多其他公司用来构建 vagrant boxes 的工具。
http://blog.endpoint.com/2014/03/provisioning-development-environment.html
http://blog.codeship.io/2013/11/07/building-vagrant-machines-with-packer.html
答案3
如果您使用 Debian,我建议您使用debootstrap
来创建 chroot。此外,还有一个名为 的工具schroot
,它允许您创建任意数量的 chroot、管理权限并使用它们执行各种操作。不幸的是,它对我来说太高级了,所以我只debootstrap
单独使用,有时使用cowbuilder
/pbuilder
来重新创建一个干净的构建环境。