为什么我应该将所有内容都移到/opt?

为什么我应该将所有内容都移到/opt?

每次我阅读安装 SDK、IDE、某些扩展等的提示时,它都说我应该将它们解压到/opt文件夹中。为什么我需要这样做?

当我安装 Ubuntu 时,我读到我应该只为/文件系统设置 10-20 GiB,并将剩余空间设置为/home。那么我应该扩展根文件夹的空间,还是将所有内容保留在/home?有什么区别吗?

答案1

首先,要明白,任何不是单独分区的明确挂载点(或此类挂载点的子目录)的目录都存储在根 ( /) 分区上。因此,如果您有根 ( /) 和/home,而没有其他分区,则您的/opt目录只是根 ( /) 上的目录。对于 、 和其他任何目录也是如此/tmp/sbin因此,最初的问题是基于一个错误的前提,即您需要为每个从根 ( /) 开始的目录设置单独的分区,因此无法直接回答。

其次,/opt用于第三方软件,在 Ubuntu 的上下文中,指的是不通过 Debian 软件包分发的预编译软件。有时您会看到引用的官方程序文档/opt,但 Debian 软件包会将这些文件放到其他地方。在这种情况下,当您使用 Debian 软件包时,应该忽略官方文档,或者至少忽略其文件位置引用。此外,如果您可以选择使用通过 tarball 或 Debian 软件包预编译的软件包,通常最好使用 Debian 软件包。总而言之,/opt现在使用 已经很少见了。如果您仍然认为需要将文件放入 中/opt,那么您最好给软件命名,因为这里的人可能知道是否有该软件的 Debian 软件包。

最后,结合前两点,Ubuntu 安装很少会拆分/opt成单独的分区,因为很少会在那里存储大量数据。大多数 Ubuntu 软件都放在/usr其他位置。拆分成单独的分区曾经很常见/usr,但这种做法如今非常罕见。如果你确实需要安装大量软件/opt,那么就为它创建一个单独的分区可能很有意义——但在很多情况下,这实际上并没有什么帮助。如果您需要以不同的方式处理安全性,如果不同的文件系统功能会有所帮助,如果要在多引导配置中跨多个操作系统安装共享数据,或者出于其他原因,则单独的分区很有意义。常规软件安装不太可能从单独的分区中受益;事实上,/opt如果存储在其中的软件所占用的大小发生变化,或者您最初对大小的估计有误,则创建单独的分区可能会导致问题。

答案2

你?

事实上你不需要这么做。使用/opt是一种惯例。我建议使用它,但这并不是绝对必要的。

Linux 文件系统层次结构:第 1 章 Linux 文件系统层次结构

1.13. /opt

此目录是为所有不属于默认安装的软件和附加软件包保留的。例如,StarOffice、Kylix、Netscape Communicator 和 WordPerfect 软件包通常都在此处。为了符合 FSSTND,所有第三方应用程序都应安装在此目录中。要在此处安装的任何软件包都必须将其静态文件(即额外的字体、剪贴画、数据库文件)放置在单独的 /opt/'package' 或 /opt/'provider' 目录树中(类似于 Windows 将新软件安装到其自己的目录树 C:\Windows\Progam Files\"Program Name" 的方式),其中 'package' 是描述软件包的名称,'provider' 是提供商的 LANANA 注册名称。

虽然大多数发行版都忽略了创建目录 /opt/bin、/opt/doc、/opt/include、/opt/info、/o​​pt/lib 和 /opt/man,但这些目录是为本地系统管理员保留的。软件包可能提供“前端”文件,旨在由系统管理员放置在这些保留目录中(通过链接或复制),但在没有这些保留目录的情况下必须正常运行。用户要调用的程序位于目录 /opt/'package'/bin 中。如果软件包包含 UNIX 手册页,则它们位于 /opt/'package'/man 中,并且必须使用与 /usr/share/man 相同的子结构。可变的软件包文件必须安装在 /var/opt 中。特定于主机的配置文件安装在 /etc/opt 中。

在任何情况下,其他软件包文件都不得存在于 /opt、/var/opt 和 /etc/opt 层次结构之外,但那些必须位于文件系统树中的特定位置才能正常运行的软件包文件除外。例如,/var/lock 中的设备锁定文件和 /dev 中的设备。发行版可以在 /opt 中安装软件,但未经本地系统管理员同意,不得修改或删除本地系统管理员安装的软件。

使用 /opt 来安装附加软件是 UNIX 社区中一种成熟的做法。基于 System V 接口定义(第三版)和 Intel 二进制兼容性标准 v. 2 (iBCS2) 的 System V 应用程序二进制接口 [AT&T 1990] 提供了与此处定义的 /opt 结构非常相似的结构。

通常,支持系统上的软件包所需的所有数据都必须存在于 /opt/'package' 中,包括要复制到 /etc/opt/'package' 和 /var/opt/'package' 的文件以及 /opt 中的保留目录。对使用 /opt 的发行版进行微小限制是必要的,因为发行版安装的软件和本地安装的软件之间可能会发生冲突,尤其是在某些二进制软件中发现固定路径名的情况下。

/opt/'provider' 下面的目录结构由软件打包者决定,但建议将软件包安装在 /opt/'provider'/'package' 中,并遵循与 /opt/package 指南类似的结构。偏离此结构的一个有效原因是支持软件包可能将文件安装在 /opt/'provider'/lib 或 /opt/'provider'/bin 中。

答案3

/opt用于不被视为 Linux 发行版一部分的(有时是专有的)外部应用程序。这些应用程序可能具有硬编码路径,因此只有在安装到时才能正确运行/opt- 但如果没有硬编码路径,那么您可以将它们安装到任何路径。安装在的程序/opt应该是自包含的。

使用的主要原因/opt是提供一个通用的标准路径,外部软件可以在不干扰已安装系统的其余部分的情况下安装。/opt不会出现在标准编译器或链接器路径(gcc -print-search-dirs/etc/ld.so.conf等)中,因此安装在那里的头文件和库在某种程度上与主系统隔离,不会干扰已安装的程序。

使用/opt文件系统层次标准/选择,其中指出/opt最初来自 Unix。

/opt :附加应用软件包

目的

/opt 保留用于安装附加应用软件包。

安装在 /opt 中的包必须将其静态文件放置在单独的 /opt/<package> 或 /opt/<provider> 目录树中,其中 <package> 是描述软件包的名称,<provider> 是提供商的 LANANA 注册名称。

要求

目录 /opt/bin、/opt/doc、/opt/include、/opt/info、/o​​pt/lib 和 /opt/man 是为本地系统管理员保留的。软件包可以提供“前端”文件,供本地系统管理员(通过链接或复制)放置在这些保留目录中,但必须在没有这些保留目录的情况下正常运行。

用户要调用的程序必须位于目录 /opt/<package>/bin 或 /opt/<provider> 层次结构下。如果软件包包含 UNIX 手册页,则必须位于 /opt/<package>/share/man 或 /opt/<provider> 层次结构下,并且必须使用与 /usr/share/man 相同的子结构。

可变(正常运行时会发生变化)的软件包文件必须安装在 /var/opt 中。有关更多信息,请参阅 /var/opt 部分。

主机特定的配置文件必须安装在 /etc/opt 中。有关详细信息,请参阅 /etc 部分。

除了那些必须位于文件系统树中的特定位置才能正常运行的软件包文件外,其他软件包文件都不能存在于 /opt、/var/opt 和 /etc/opt 层次结构之外。例如,设备锁文件必须放在 /var/lock 中,设备必须位于 /dev 中。

发行版可以在 /opt 中安装软件,但未经本地系统管理员同意不得修改或删除本地系统管理员安装的软件。

基本原理

使用 /opt 安装附加软件是 UNIX 社区中既定的做法。System V 应用程序二进制接口 [AT&T 1990] 基于 System V 接口定义(第三版),提供了与此处定义的非常相似的 /opt 结构。

Intel 二进制兼容性标准 v. 2 (iBCS2) 也为 /opt 提供了类似的结构。

通常,系统中支持软件包所需的所有数据都必须存在于 /opt/<package> 中,包括要复制到 /etc/opt/<package> 和 /var/opt/<package> 中的文件以及 /opt 中的保留目录。

对使用 /opt 的发行版进行微小限制是必要的,因为发行版安装的软件和本地安装的软件之间可能会发生冲突,尤其是在某些二进制软件中发现固定路径名的情况下。

/opt/<provider> 下面的目录结构由软件打包者决定,但建议将软件包安装在 /opt/<provider>/<package> 中,并遵循与 /opt/package 指南类似的结构。偏离此结构的一个有效原因是支持软件包可能将文件安装在 /opt/<provider>/lib 或 /opt/<provider>/bin 中。

答案4

详细的答案非常好,但是(除了可能有硬编码绝对路径的软件 - 不是最佳的编程实践),主要的一点是,非系统/非分发软件不应该与常规系统文件混合存储。

放置物品/opt/usr/local保持物品清洁、安全。

具体来说,软件搜索路径 ($PATH) 决定了在查找要执行的特定名称的程序时搜索位置的顺序。通常,像/opt和这样的位置/usr/local位于列表末尾。

如果你安装一个包含程序名的软件包cp,你的发行版自带的默认搜索顺序将会找到正常的程序,因为存储该程序的目录会在诸如 之类的地方之前被搜索/opt

如果它不这样工作,cp当您认为只是尝试复制一些文件时,如果一个名为“执行其他操作”的程序运行,谁知道会破坏或打开安全漏洞。

如果确实发生了这样的事情,可能需要一段时间才会有人想到运行这样的命令type cp(这甚至可能不足以表明出了问题),以发现正在运行的内容与您的想法不符。 直到那时,您才会陷入“除了不起作用的小细节外,一切都完全正常!”

它基本上有助于防止意外情况发生,还可以避免系统更新可能会删除或替换部分或全部“自定义”安装的软件包的情况。或者,相反,一些“自定义”程序可能会覆盖许多其他程序或脚本可能依赖的系统提供的程序。

从管理角度来看,将“系统”和“可选”程序/文件混合在同一位置会导致系统处于“未定义”或至少是“模糊”状态。

如果您的系统或程序出现问题并需要帮助,那么首先要问的问题之一就是“您更改了什么?”以及“我们能否暂时禁用所有这些更改中的一些更改,以便我们知道我们正在查看的是真正的问题,而不仅仅是其他问题的症状。”

通过单独的位置,可以快速识别这些更改,您所要做的(至少对于程序本身而言)就是暂时从路径中删除它们的目录。

相关内容