我已经使用 Windows 很长时间了,
在 Windows 中我可以安装一个应用程序并将其放在硬盘存储上,在 Ubuntu 操作系统上也可以这样做吗?
答案1
包裹有固定位置
安装大多数程序的常用(也是推荐)方法是通过发行版的包管理器。此程序基本上会获取程序的存档(类似 zip 文件)并将其提取到文件层次树上的固定位置。
然而,程序的开发方式决定了它们在系统中的位置,这是在编译时固定的。也就是说,创建存档的人决定了程序在文件层次结构中的位置。除非您创建自己的软件包或在软件包管理器之外安装程序(两者都是不建议),无法在不同的驱动器上安装包。
Windows 驱动器字母与 UNIX 层次结构
但是,Linux 和 Windows 对于如何“利用”磁盘驱动器有着完全不同的想法。在 Windows 上,每个卷都分配有一个卷号,如C:\
,每个卷都有自己的文件系统树,而在 Linux 上,您有一个“大”树,并将具有自己的文件系统的卷“安装到”同一层次结构/树中(注:这在 Windows 上实际上也是可能的,但并不常见)。
方法 A:将 /usr 放在不同的驱动器上
安装程序时,其文件主要位于/usr/
、中/etc/
。 后者仅包含配置文件,因此为了节省存储空间,可以想象只需让/usr/
另一个驱动器(例如/dev/sdb
而不是/dev/sda
)提供 即可解决问题。 不过,这有副作用,即如果您的第二个驱动器无法安装,则您的安装将无法正常工作。 但是,这种情况不太可能发生。
历史方法:拆分 /bin 和 /usr/bin
过去,UNIX(和 Linux)确实/bin
出于/usr/bin
这个原因将程序分为“必需”和“不太必需”的程序——前者是启动驱动器的一部分,后者是数据驱动器的一部分。不过,随着存储量的增加,大多数 Linux 发行版都恢复了这种划分。
方法 B:将分区合并为一个卷
sdb
与物理分区提供的不同的方法/usr/
是使用 LVM 来创建逻辑卷分区sda
和sdb
。这意味着,文件系统 (ext4/btrfs/zfs/...) 看到的是连续存储,实际上由两个驱动器组成。同样,显然,这意味着如果一个驱动器无法访问,文件系统就无法启动,您将陷入糟糕的境地。多年来,我一直使用 5 个 SSD 运行此设置。
好消息是你不需要思考关于将文件放在哪里,您可以让您的操作系统对此进行推理。背后的“理念”是让用户花更少的时间管理他们的 PC,而花更多的时间使用它。
方法 C:将 /home 放在不同的驱动器上
这可能是最常见的方法(并且通常与 B 结合使用)。 通常,数据量远远超过程序量。(出于同样的原因,服务器通常使用/srv
不同的卷。)这会减轻主驱动器的压力。此外,使用 Flatpak(或 Ubuntu Snap),您有其他应用程序管理器比您系统上的应用程序管理器更强大apt
!该系统更适用于将应用程序及其所有依赖项放在一个大包中的完整包,而不是小包。这有点像 Apple macOS 应用程序或 Android/iOS 应用程序,主要侧重于“桌面应用程序”(而不是 CLI 工具!)。我之所以提到这一点,是因为 Flatpak 不仅允许您将应用程序安装到“根树”,还允许每个用户将自己的应用程序安装到他们的主目录中!再次减轻了主驱动器的压力。
/opt 目录
最后说明:安装一些软件包一切到/opt
。通常这些都比较大,而且它们从来都不是必需的程序。因此安装第二个驱动器/opt
是合理的(我也曾经采取过这种方法)。
答案2
在 Windows(和 Linux)中,将程序安装在启动硬盘/固态硬盘以外的其他设备上非常困难且不安全。但如果您指的是辅助硬盘,那么对于某些 Windows 程序来说,这是可能的,但据我所知,大多数 Linux 程序无法安装在辅助硬盘上。一些发行版实际上支持在 RAM 上安装程序(很奇怪,但 PCLinuxOS 可以做到这一点),但您需要在 RAM 上安装完整的操作系统,如果您的 PC 重新启动,它将被删除 :(