![如何创建一个临时沙箱来从源代码进行编译?](https://linux22.com/image/819379/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E4%B8%B4%E6%97%B6%E6%B2%99%E7%AE%B1%E6%9D%A5%E4%BB%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E8%BF%9B%E8%A1%8C%E7%BC%96%E8%AF%91%EF%BC%9F.png)
我想按照找到的步骤这里为了在 Ubuntu 下运行英雄联盟。根据指南,我必须从源代码编译 wine,因为它需要一些补丁。
从源代码编译涉及下载相当多的依赖包,我不希望这些包与系统混合,因此我想知道是否有办法以某种方式隔离整个“下载依赖包和编译”过程,因为我只对最终的 wine 二进制文件感兴趣。
通过隔离编译过程,我可以复制生成的二进制文件并在沙箱上执行简单的删除,而以简单的方式执行此操作则需要更复杂的清理。
答案1
我建议调查一下长石砂岩。 作为这是手册页
说,它是一个“使沙盒桌面应用程序变得简单的工具”,但它也可以用于像您这样的目的。
它的作者 Stéphane Graber 描述了他如何使用它来避免在开发过程中安装许多依赖项在他的博客上:
自从我上次重新安装笔记本电脑以来,我尝试将通常很长的已安装软件包列表保持在最低限度。我通常会安装数百甚至数千个库和开发软件包,因为我维护的大量软件包或我编写的代码都需要这些库和开发软件包。
为了实现这一点,同时保持与以前一样高效(甚至更高),我大量使用 arkose 来生成临时的开发/构建环境,这些环境在我关闭 shell 后就会被清除。这有助于将额外库的数量保持在最低限度,避免某些东西在我的笔记本电脑上神秘地正常工作,但在另一台机器上却无法正常工作的情况,并避免处理 chroot 时所需的维护。
arkose -h
在终端中运行。这将创建一个容器,该容器可以直接访问您的主目录,但对文件系统的其余部分使用写时复制。完成后,退出 shell,所有外部更改/home
(即您安装的所有软件包)都将被丢弃。
答案2
我建议你使用http://www.playonlinux.com/en/forums.html只需搜索他们的或 LoL
否则,你可以使用 virtualbox 或任何其他虚拟化软件