如何防止葡萄酒在我的主目录中创建目录?
我已经安装了几款游戏,其中大部分游戏都非常棒。 但是,葡萄酒会在我的家中创建目录,用于播放器数据,保存等。
有没有办法在〜/ .winesaves或类似的东西? 我宁愿葡萄酒不乱扔我的主目录。
(葡萄酒:1.5.27,有问题的游戏是SCII和DE:IW)
编辑澄清:
〜/ .wine中的所有内容都很好,但我不希望应用程序创建〜/ GameSaves或类似内容。
您可能需要尝试使用winetricks
的sandbox
选项,这可能对您有所帮助,因为当该设置应用于带有winetricks sandbox
的默认WINEPREFIX时,将删除$HOME
所有Wine
符号链接。
但是, wine
仍然具有用户在主文件夹中的权限,并且通常在安装新程序时,安装中的操作可以触发要删除的沙箱。 所以它根本不是一个真正的“沙箱”,但它可能对你的用例有所帮助。
在官方葡萄酒常见问题解答中注意到:
Winetricks确实有一个沙箱动词,至少可以将Wine程序与系统的其他部分隔离开来。 它可以防止错误而不是恶意。 这对于保持游戏不在主目录的随机子目录中保存其设置很有用。
在官方的winetricks页面上 ,有人解释说
如果您想隔离一个应用程序,以便它不会将任何内容保存到您的主目录,您可以尝试’winetricks sandbox’。 这将删除您的主目录的符号链接。 在保存任何数据之前执行此操作,或者您必须将旧的已保存数据从主目录复制到$ WINEPREFIX / drive_c / users / $ USERNAME。
重要笔记
-
可能需要重复使用wine sandbox选项,即将其包含在运行
winetricks sandbox
的启动器脚本中,然后启动游戏,因为wine
的许多内容都可以触发符号链接的重建。 -
您已经生成的保存文件夹需要移动到您的WINEPREFIX,例如
/home/$USER/.wine/drive_c/users/$USER/"My Documents"
,以便您恢复游戏。 如果wine
刚刚创建了一个名为~/gamesaves
的文件夹,只需将该文件夹移动到上面提到的位置即可。 否则,请观察目录结构; 如果游戏保存文件夹是~/Documents/Syberia/save
确保在/home/$USER/.wine/drive_c/users/$USER/"My Documents"
创建等效/home/$USER/.wine/drive_c/users/$USER/"My Documents"
。 -
当您将来安装游戏时,请确保在开始时运行
winetricks sandbox
,以便游戏将自动开始使用WINEPREFIX作为保存位置,而不是$HOME
的文件夹。
对我有用的是创造一个围绕wine
的包装纸,用不同的HOME
推出wine
。 例如,你可以创建自己的~/bin/wine
(假设~/bin
在你的PATH
),它设置:
#!/bin/sh export "HOME=$HOME/.wine/home" exec /usr/bin/wine "$@"
使用空的WINEPREFIX
( ~/.wine/
),Wine将在~/.wine/home/
创建指向其自己的私有主目录的符号链接。
您可以进一步扩展到不同Wine前缀的多个包装器(例如,对于32位与64位)。
如果安装了bubblewrap
,则可以使用其机制来限制文件系统访问。
例1。 你希望葡萄酒可以访问~/.wine
, ~/Downloads
,但没有别的。 您可以使用此命令:
bwrap --dev-bind / / --tmpfs ~ --bind ~/.wine ~/.wine --bind ~/Downloads ~/Downloads --new-session wine ~/.wine/path-to-your-program
在上面的命令中,我们创建一个新的命名空间,绑定root /
,将内存中的文件系统绑定到~
,并绑定~
之上的两个目录。 在这两个目录之外进行的任何更改都将进入tmpfs,并且一旦bubblewrap(和你的程序)退出就会丢失。
例2。 你不想要复杂的层次结构,你只需要所有与葡萄酒相关的东西都存在于~/.bubblewrap-wine-container
。 而在其他任何地方。 在这种情况下,您可以使用:
bwrap --dev-bind / / --bind ~/.bubblewrap-wine-container ~ --new-session wine path-to-your-program-relative-to-this-directory
如果您要禁止任何这些示例的Internet访问 ,请添加--unshare-net
参数。 或者甚至可能--unshare-all
看看它是否会启动。 有关更多详细信息,请参阅bubblewrap文档。
Wine将其目录结构保存在〜/ .wine中以模拟Windows目录结构,因此默认情况下,wine下运行的程序无法访问层次结构的上层。 它取决于存储其数据的最终应用程序(或游戏)。 您可以创建一个符号链接,将.wine目录放在其他位置。 就像是:
cd ~; sudo -s mv .wine /var/cache/wine && ln -s /var/cache/wine ~/.wine
此命令的说明:1。转到主目录。 成为root用户2.将.wine目录移动到所需位置(在此示例中,它是/ var / cache / wine,如果成功从/ var / cache /创建一个软(符号[我建议您阅读’man ln’)链接葡萄酒给你_home_dir / .wine。