Linux - 关于/opt文件夹的说明

/opt介绍

让我们看看Linux的目录结构,在根层执行ls命令:

bin dev lib opt usr boot etc lib64 proc srv cdrom home lost+found root config media run sys core mnt sbin tmp var

我们在输出中看到的是标准的Linux根级目录。在Linux系统中,每个目录和它的子目录应该包含什么内容,在FHS(Filesystem Hierarchy Standard文件系统层次标准)中已有定义。

(FHS 3.0 Specifications)

FHS将/opt定义为 "为安装附加应用软件包而保留"。在这里,"附加 "是指不属于系统的软件;例如,任何外部或第三方软件。这一惯例起源于AT&T、Sun和DEC等厂商建立的旧UNIX系统。

使用/opt

让我们以一个公司内部开发的应用程序CompanyApplication为例。

如果我们不使用标准的工具,如dpkg或rpm来打包,我们很可能会把所有与CompanyApplication相关的文件放在一个目录中。所以我们会把二进制文件、库和配置放在一起。它们不会像传统的UNIX系统那样被分割到不同的位置。

比方说,我们想把我们的应用程序部署在一个服务器上。在这种情况下,我们可以直接将我们的应用程序的目录复制到/opt/CompanyApplication目录下。

当需要时,我们可以直接从那里执行它。因此,当使用/opt时,安装我们的应用程序就像复制、解压TAR或解压缩一样简单。当我们不再需要这个应用程序时,我们可以通过删除/opt下的目录简单地将其删除。

作为附带说明,我们也可以倾向于使用/opt/Company/CompanyApplication目录结构。在这种情况下,我们应该使用LANANA(The Linux Assigned Names And Numbers Authority)注册的company/provider名称。

对于传统的UNIX系统来说,通过复制一个目录来部署软件是非常规的。通常,UNIX应用程序会将其库、二进制文件和其他文件放在不同的目录中,如/usr/local/bin和/usr/local/lib。

让我们看看UNIX部署软件的方式和/opt之间的区别。

/usr/local vs /opt

FHS将/usr/local定义为 "供系统管理员在本地安装软件时使用"。这可能会让人困惑,因为这个描述与/opt非常相似。另一方面,有一个重要的区别。

/usr/local下的层次结构应该模仿/usr下的层次结构。这意味着我们应该把所有应用程序的二进制文件放在/usr/local/bin中,把所有库放在/usr/local/lib中,以此类推。结果是,我们会把它们和其他应用程序的文件放在一起。

因此,在部署到/usr/local时,我们不能为每个应用程序建立一个单一的目录。相反,我们以更传统的UNIX风格来组织它们,将应用程序文件划分到不同的目录中。

这种传统方法的一些原因是:

 - 当我们把所有的二进制文件放在/usr/local/bin中时,我们只需把这个单一的目录添加到我们的$PATH中,这样我们就可以执行所有我们安装的二进制文件,而不需要额外的配置。

 - 当所有安装的库都在/usr/local/lib中时,多个二进制文件可以共享同一个库,所以我们可以避免在我们的系统中出现同一个库的多个副本。

另一方面,/opt并没有这些目录结构的限制。只要/opt中的应用程序是在独立的目录中,它们就可以在这些目录中拥有自定义的目录结构。它们可以有已经安装在系统中的库的重复拷贝,而且它们可能需要额外的$PATH配置来从终端执行。

使用案例

让我们看看/opt和/usr/local的一些可能情况:

 - 我们的应用程序是一个单一的二进制文件,那么我们就把它复制或链接到/usr/local。

 - 我们想使用一个现有系统程序的替代品,该程序是用make从源代码构建的。在这种情况下,我们将把它安装在/usr/local下。

 - 我们要部署一个应用程序,根据设计,它的所有文件都在同一个目录下。然后,我们将通过把这个目录复制到/opt/myapp目录中来部署它

参考:

What does /opt mean in Linux? | Baeldung on Linux

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为什么会这样[user_mongo@nosql01 replicaset]$ cd /opt [user_mongo@nosql01 opt]$ ll total 0 drwxr-xr-x. 3 root root 25 Mar 16 17:08 servers drwxr-xr-x. 2 root root 51 Mar 16 17:10 software [user_mongo@nosql01 opt]$ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/LICENSE-Community.txt: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/MPL-2 tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/MPL-2: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/README tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/README: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/THIRD-PARTY-NOTICES: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/install_compass: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongo: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongod: Cannot open: No such file or directory mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos tar: mongodb-linux-x86_64-rhel70-4.4.12: Cannot mkdir: Permission denied tar: mongodb-linux-x86_64-rhel70-4.4.12/bin/mongos: Cannot open: No such file or directory tar: Exiting with failure status due to previous errors [user_mongo@nosql01 opt]$ tar -zcvf /opt/software/mongodb-linux-x86_64-rhel70-4.4.12.tgz -C /opt/servers/mongodb_demo/replicaset/ tar: Cowardly refusing to create an empty archive Try `tar --help' or `tar --usage' for more information.
06-01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值