在 Windows 上,我有一个 C:\msys32 文件夹(其中包含我认为是 MSYS2 安装的内容),它是为/由 ESP32 开发环境(位于 ~/esp)创建的。MSYS 主文件夹包含我的 Windows 用户名。
现在,当我将该安装复制到另一台计算机时,该文件夹突然更改了名称,我发现这本身就很令人不安,因为这不是“我的文件夹”,它只是一个绕过 Linux 要求的名称,它可能是一些固定的(规范的)名称,例如“用户”。
更重要的是,这种行为意味着我的安装不可移植。当我将 msys32 文件夹复制到另一台计算机时,所有内容要么中断,要么没有任何意义。对我来说,最好是简单地从路径中删除该用户名,但我将采取次优方案,即为其指定一个固定名称。我该怎么做?
PS,我理解 msys 的目标是重新创建一个 Linux 环境,但请考虑一下在大多数人都使用“多台计算机”的当今世界,“多用户”已经过时了。
答案1
我不太清楚“一切都崩溃了,或者没有任何意义”该如何理解,以及我是否可以帮助你。
关于不同的用户配置文件、主路径、用户名以及它们之间的关系。请记住,Windows 上的每个本地用户帐户都是总是无论如何都是唯一的,您可能使用相同的帐户名和相同的密码登录两台 Windows 计算机,但它们的 SID 始终不同。这通常对您来说并不重要,只是因为默认文件权限是为“经过身份验证的用户”和类似的抽象组设置的。
类似地,在 unix 上,您通常会关心主文件夹的内容和文件访问权限,除此之外,用户名或底层 UID 并不重要,它只是您在登录时必须提供的名称。
除非“ESP32”对/etc
配置文件做了一些奇怪的事情,否则无论提示符上显示的用户名是什么,一切都应该正常工作,%HOME%
通过 Windows 系统属性进行设置是我指定自定义主目录的首选方法,因为像 emacs 的 Windows 版本这样的程序也尊重此设置。如果你想要一个完全独立的便携式解决方案,只针对一个用户,那么/etc/nsswitch.conf
应该可以完成这项工作。
详细资料:
PS:Msys 是一个由 cygwin 衍生的构建环境,用于帮助 gcc 及其同类产品的 Windows 端口(统称为 mingw)在 Windows 上构建理论上跨平台但主要基于 Unix 构建且依赖于 unix 工具进行构建的软件。就是这样。Cygwin 的目标远不止于此,例如,如果您想运行具有特权分离的 ssh 服务器,那么 cygwin 事实上会因为文件权限问题和缺少帐户等原因而无法移植。
答案2
对于我的需求来说,在运行 mingw32.exe 之前编辑“C:\msys32\etc\nsswitch.conf”中的“db_home: /home/user”就足够了。
运行 ming32.exe 后,将创建 c:\msys32\home\user,其中包含常用文件。这是新的主文件夹。现在用户空间中的所有路径都是常量,并且可以将安装压缩并复制到另一台 PC,所有安装问题都会消失。
答案3
今天,我在这里发现了一个不错的 MSYS2 便携式包:MSYS2 Portable | PortableApps.com - 适用于 USB、便携式和云驱动器的便携式软件和直接下载。