我为什么要将所有内容都移到/ opt中?

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

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

首先,要了解任何未显式为单独分区(或此类安装点的子目录)的安装点的目录都存储在根( / )分区中。 因此,如果您有root( / )和/home ,而没有其他分区,则/opt目录只是root( / )上的目录。 同样对于/tmp/sbin和其他任何东西。 因此,最初的问题是基于错误的前提,即您需要为从根( / )引出的每个目录单独分区,因此无法直接回答。

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

最后,结合前两点,Ubuntu安装很少分割/opt分离到一个单独的分区,因为很少有大量数据存储在那里。 大多数Ubuntu软件都在/usr和其他位置。 将/usr拆分成一个单独的分区曾经很常见,但这种做法在今天非常罕见。 如果您确实需要在/opt安装大量软件,那么为它创建一个单独的分区可能是有意义的 – 但在许多情况下这不会真正有用。 如果您需要以不同方式处理安全性,如果不同的文件系统function将有所帮助,在多引导配置中跨多个OS安装共享数据,以及其他原因,则单独的分区是有意义的。 常规软件安装不太可能从单独的分区中受益; 事实上,如果存储在那里的软件消耗的大小发生变化,或者如果最初估计的大小错误,则为/opt创建单独的分区可能会导致问题。

你呢?

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

从Linux Filesystem Hierarchy:第1章.Linux Filesystem层次结构 :

1.13。 /选择

此目录保留给不属于默认安装的所有软件和附加软件包。 例如,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,/ opt / 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中安装软件,但未经本地系统管理员同意,不得修改或删除本地系统管理员安装的软件。

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

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

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

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

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

/opt的使用由Filesystem Hierarchy Standard指定: / opt ,它指出/opt最初来自Unix。

/ opt:附加应用程序软件包

目的

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

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

要求

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

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

必须在/ var / opt中安装可变的包文件(在正常操作中更改)。 有关更多信息,请参阅/ var / opt一节。

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

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

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

合理

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

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

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

使用/ opt对分发的次要限制是必要的,因为在分发安装和本地安装的软件之间可能存在冲突,特别是在某些二进制软件中找到固定路径名的情况下。

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

没有什么神圣的/opt ,通常的做法是放置预编译的软件,该软件应该可供该目录中系统的所有用户访问。 如果您是系统的唯一用户,则在主目录中提取它并没有任何错误。 即使系统上有多个用户需要访问此软件但你想使用/home分区上的空间,创建一个可公开访问的/home/softwarename目录并在那里提取你的软件也没有错(唯一需要注意的是,如果您碰巧有一个名为softwarename的用户,您将无法在用户的主目录中使用它。

详细的答案是非常好的,但(除了可能有硬编码绝对路径的软件 – 不是最好的编程实践),重点是非系统/非分配软件不应与常规系统文件。

将东西放在/opt/usr/local可以使东西更干净,更安全。

特别是,您的软件搜索路径($ PATH)确定在查找要执行的特定名称的程序时搜索位置的顺序。 通常,像/opt/usr/local都在列表的末尾。

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

如果它不能以这种方式工作,那么当你认为你只是想复制一些文件的时候,如果一个名为cp的程序运行起来,那么谁知道什么可能会破坏或打开一个安全漏洞。

如果这样的事情确实发生了,可能需要一段时间才能有人认为运行像type cp这样的命令(这可能甚至不足以表明出现问题),以发现正在运行的是不是你认为的那样是。 在那之前,你一直坚持“一切都应该是它应该的方式,除了它不起作用的小细节!”

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

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

如果您的系统或程序出现问题并需要帮助,首先要问的问题之一是“您更改了什么?” 并且“我们可以暂时禁用所有这些变化,因此我们知道我们正在关注真正的问题而不仅仅是其他事情的症状。”

通过单独的位置,可以快速识别这些更改,并且您只需要执行所有操作(至少对于程序本身而言)是从路径中临时删除它们的目录。