我最近从 Windows 切换到 Linux Mint,到目前为止我非常喜欢它!但是,我想知道如何选择各种程序的安装目的地。
例如,我有一个 1TB 的 SATA 驱动器和 128GB 的 SSD。我想在 SATA 上安装 Steam 和各种游戏,但每当我尝试运行安装时,它都不让我选择目录。
如何为 Linux Mint 中安装的程序选择目录?
答案1
正如您所注意到的,在类 Unix 操作系统上指定安装目录并不常见,因为所有内容都会进入一个大的层次结构,然后由包管理器进行分类。您仍然可以有多个分区,但这些分区将是“特定路径下的所有内容”——例如,典型的设置有一个单独的分区,/home
这样用户就不会填满系统磁盘。
不过,Steam 在这里有点特别,因为它以用户的权限运行,而不是系统管理员的权限,因此它无法将任何东西安装到常规路径中。
因此,所有已安装的文件最终都位于主目录中的隐藏目录中~/.local/share/Steam
。
如果你想有一个专门用于游戏的分区,最简单的方法就是将分区挂载到那里。
对于转换,您需要在 Steam 未运行时移动数据。
$ cd ~/.local/share
$ pwd
记下此处的完整路径,稍后我们将需要它。
$ mv Steam Steam.old
$ mkdir Steam
$ sudo -i
现在我们以 root 身份工作。
# lsblk -o +UUID
这将为您提供块设备及其 UUID 的列表。找到SATA磁盘上的分区,记下UUID。接下来,挂载分区,根据需要更改路径和 UUID:
# mount UUID=12345678-1234-1234-1234-123456789abc /home/yourname/.local/Steam
如果有效,该分区应该显示在df
输出中。如果没有,您可能需要先准备一下,这是一个单独的问题。
然后,您可以通过添加一行来使更改永久化/etc/fstab
:
UUID=12345678-1234-1234-1234-123456789abc /home/yourname/.local/Steam auto noatime 0 2
您会注意到,这些参数与 mount 命令相同,加上文件系统类型(auto
用于自动检测)、标志(noatime
因此不会记录访问时间,这对于游戏文件夹来说是不必要的,并且会导致大量写入加载时生成),以及备份优先级(0
)和文件系统检查(2
,与除根文件系统之外的所有文件系统相同)。
,nofail
如果您希望系统在文件系统出现问题时正常启动,您可以添加这些标志,这样做的缺点是您不会注意到,直到您启动 Steam 并且它的行为就像全新安装一样。
通过手动卸载和安装一次来测试额外的线路是否有效:
# umount /home/yourname/.local/Steam
# mount /home/yourname/.local/Steam
如果这些成功,你就可以退出 root shell
# exit
并将数据复制过来
$ rsync -Pra Steam.old/ Steam/
如果您缺少 rsync 实用程序,请从包管理器获取它。
启动 Steam 以验证一切都已完成,然后删除旧的 Steam 目录
$ rm -rf Steam.old
你就准备好了。
答案2
一种方法是在GNU/Linux
操作系统上使用mount --bind
:
- 检查您想要在外部驱动器上“导出”哪个目录,可以通过示例
/opt
- 您可以做的就是移动目录,然后将其安装到操作系统上的其他位置
root
作为(超级)用户这样做:
shopt -s dotglob # if you are using bash. To match hidden files too with following wildcard*
mv /path/to/BIG/dir/* /path/to/directory/on/external/drive
mount --bind /path/to/directory/on/external/drive /path/to/BIG/dir
echo '/path/to/directory/on/external/drive /path/to/BIG/dir none defaults,bind 0 0' >> /etc/fstab
mount --bind
临时安装- 要使其永久,请修改最后一行代码
/etc/fstab
。花点时间用您最喜欢的内容进行编辑,editor
以确保没有重复。
然后,您可以透明地使用您的操作系统,并且您的 BIG 目录将被移动。
查看man mount | less +/--bind
绑定挂载操作
在其他地方重新安装部分文件层次结构。调用是:
mount --bind olddir newdir
或使用此 fstab 条目:
/olddir /newdir none bind
在此调用之后,可以在两个位置访问相同的内容。重要的是要理解“bind”不会在内核 VFS 中创建任何第二类或特殊节点。 “绑定”只是附加文件系统的另一个操作。没有存储文件系统已通过“绑定”操作附加的信息。 olddir和newdir是独立的,并且olddir可以被卸载。
还可以重新挂载单个文件(在单个文件上)。还可以使用绑定挂载从常规目录创建挂载点,例如:
mount --bind foo foo