如何使 MSYS (MSYS2) 可移植

use*_*749 6 msys

在 Windows 上,我有一个 C:\msys32 文件夹(包含我认为是 MSYS2 安装的内容)为/由 ESP32 开发环境(位于 ~/esp)创建。MSYS 主文件夹包含我的 Windows 用户名。

现在,当我将该安装复制到另一台计算机时,突然该文件夹更改了名称,我发现这本身令人不安,因为这不是“我的文件夹”,它只是绕过 Linux 要求的名称,它可能是固定的(规范)名称,例如“用户”。

更重要的是,这种行为意味着我的安装不可移植。当我将 msys32 文件夹复制到另一台计算机时,一切要么中断,要么没有任何意义。对我来说,最好只是从路径中删除该用户名,但我会采取第二好的方法,即给它一个固定的名称。我怎样才能做到这一点?

PS我理解msys的目标是重新创建一个Linux环境,但请考虑到“多用户”在当今大多数人都是“多计算机”的世界中是一种恐龙。

T N*_*ath 0

我不太确定“一切要么坏了,要么没有任何意义”是什么意思,以及我是否可以帮助你。

关于不同的用户配置文件、主路径、用户名以及它们之间的关系。请记住,Windows 上的每个本地用户帐户始终是唯一的,您可以使用相同的帐户名和密码登录两台 Windows 计算机,但它们的 SID 始终不同。这通常对您来说并不重要,只是因为默认文件权限是为“经过身份验证的用户”和类似的抽象组设置的。

类似地,在 UNIX 上,您通常关心主文件夹的内容和文件访问权限,除了用户名或底层 UID 并不重要之外,它只是您在登录时必须提供的名称。

除非“ESP32”对/etc配置文件做了一些奇怪的事情,否则无论提示符上显示什么用户名,事情都应该正常工作,%HOME%通过 Windows 系统属性进行设置是我指定自定义主目录的首选方法,因为像 windows build 这样的程序emacs 也尊重这个设置。如果您想要为一名用户提供完全独立的便携式解决方案,那么/etc/nsswitch.conf应该完成这项工作。

详细资料:

PS:Msys 是一个 cygwin 派生的构建环境,用于帮助 gcc 及其朋友(统称为 mingw)的 Windows 端口在 Windows 上构建软件,理论上是跨平台的,但主要构建在 Unix 上,并且逐渐依赖 unix 工具进行构建。就是这样。Cygwin 的目标远高于此,例如,如果您想运行具有权限分离的 ssh 服务器,那么由于文件权限问题和丢失帐户等问题,cygwin 事实上将停止可移植。