如何将程序安装在单独的硬盘上?

如何将程序安装在单独的硬盘上?

我最近从 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

相关内容