在多个操作系统(例如 Ubuntu 和 Debian)之间共享 /home 挂载目录和 $HOME 目录是很常见的。各个桌面环境(例如 Ubuntu Gnome 与 Debian Gnome)尝试在 $HOME/.config 和 $HOME/.local 中共享各种配置 — 这可能会导致冲突和混乱。例如,相同的字体或主题可能在两个操作系统安装上都不可用。不同的扩展及其版本也可能造成混乱。有没有办法避免这个问题,除了为每个操作系统创建一个单独的 $HOME,然后从这些目录符号链接一个共享的“真实”主目录?
答案1
如果您共享相同的$HOME
,则需要您确保其按预期工作。如果两个系统都使用相同的桌面环境,并且您拥有不同版本的扩展等,那么这确实会导致问题。一个简单的解决方法是在两个系统上使用不同的桌面环境,这样设置就不会重叠。
虽然跨发行版共享 $HOME 确实很常见,但几年前这要简单得多,因为当时桌面环境较少,而且大多数设置都是关于 shell 而不是 GUI。您仍然可以这样做,但您确实需要更加小心,并尽量避免两个系统具有不同配置选项的情况。因此,请在两个系统上安装相同的主题(如果它们具有相同的 GUI 和版本,这应该会自动发生),确保在两个系统上安装字体等等。只要您保持它们或多或少同步,您就应该能够最大限度地减少问题。
但是,为了使其 100% 稳定,您需要将配置分开。一个技巧是将您的配置文件和目录移动到另一个位置,然后根据您加载的系统对它们进行符号链接。例如,您可以有一个仅由 Ubuntu 安装的分区和一个仅由 Debian 安装的分区,并将您的~/.config/
和各种~/.foo
文件存储在那里。然后,在您的 中$HOME
,您将所有这些替换为指向 的符号链接/mnt/dynamicallyMountedDrive
。您将两个系统设置为将一个或另一个分区安装到/mnt/dynamicallyMountedDrive
,这意味着您的符号链接将始终指向正确操作系统的正确设置。
这样,您仍然可以在两个系统之间共享实际数据,但配置是分开的。
答案2
我曾经爱这样做,但当我遇到数据问题时就停止了。
如果共享 $HOME 的一个系统比另一个系统更新,或者您使用的是不同版本的软件,则可能会出现问题。evolution
我的一个系统上的 GNOME-MUA 更新使新收到的电子邮件对共享目录的另一个操作系统不可见;因为它使用的是旧版本的 evolution,因此忽略了新版本存储邮件的方式……
如果两个操作系统运行的是相同的版本,那么就不会有问题,但如果不是,你需要检查所有应用程序版本在每个使用它的操作系统上都可以应对您正在使用的其他版本的文件版本,否则可能会出现问题。
您还应该避免使用新版本中的新功能(我测试的新功能导致evolution
改变了其存储邮件的方式,从而导致了我的问题)。我以我的问题为例;但我也遇到了其他 GNOME 应用程序在共享方面的问题,所以我停止了这样做。
我现在使用网络共享,并且我知道应用程序可以在该共享上安全地共享数据(即*逐个应用程序地测试新功能,我首先使用我使用的版本测试新功能;使用共享的 $HOME,所有应用程序将共享数据,因此需要做更多的家庭作业)。
答案3
当然,在两个发行版之间共享主文件夹是不是很常见。这是可以做到的,而且在服务器系统上也做到了,但这需要在启动文件中采取预防措施,然后可能需要检查当前正在运行的版本以激活相应的设置(感谢 doneal24 指出这一点)。
原因是,无法保证不同发行版附带的不同版本的应用程序之间的配置数据保持一致。在许多情况下,它可以正常工作,但在其他一些情况下可能不起作用(例如 Gnome Shell 扩展):无法保证它可以正常工作。
因此,你需要保持不同发行版之间的用户配置数据是分开的。如果您想要将相同的数据卷安装到不同的发行版,这是可以的,您需要有不同的用户主目录,每个目录只能在一个发行版中使用。
分享用户文件(文档、图片……)在发行版之间共享数据不是问题。您可以进行符号链接,使数据可以从两个发行版平等访问。然后,您可以设置足够宽松的权限,以便具有不同 UID 的用户可以访问数据,但更好的方法是为不同发行版上的每个用户分配相同的 UID。您甚至可以使用相同的登录名:用户主文件夹的名称不一定需要与登录名匹配。虽然 GUI 不允许设置,useradd
但usermod
相反,允许完全控制用户的登录名、主目录、uid 等。
答案4
我想提供一个完全不同的想法。
如何设置XDG_CONFIG_HOME
,XDG_DATA_HOME
。XDG_STATE_HOME
,XDG_CACHE_HOME
取决于系统。
例如,在 Debian 中输入/etc/environment.d/99xdg-debian.conf
:
XDG_CONFIG_HOME=.config_debian
XDG_DATA_HOME=.local/share_debian
XDG_STATE_HOME=.local/state_debian
XDG_CACHE_HOME=.cache_debian
我还没有进行深入测试,但简短的测试表明它是有效的。
如果您想在系统之间共享缓存,就不要设置XDG_CACHE_HOME
。
看:https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html