为什么我应该将应用程序安装在 /opt 位置?

为什么我应该将应用程序安装在 /opt 位置?

我不太明白为什么/opt建议第三方软件使用。当我通过命令sudo行运行程序时,我必须使用。这是否会带来安全风险,因为允许程序以超级用户身份运行?/optsudo

我在将文件添加到 /opt 中的程序时也遇到了麻烦.desktop。例如,如果我.jar在 opt 中有一个文件,我必须用它运行它sudo java -jar name.jar才能运行 java 程序,但sudo&在文件gksudo中时似乎不起作用.desktop,因此我无法从启动菜单中执行该程序,除非通过命令行。

不受信任的软件应该安装在哪里?

需要 .desktop 的应用程序应该安装在哪里?

有没有办法让.desktop文件运行应用程序/opt

答案1

Linux 文件系统的文档解释了/选择最常见的用途是安装独立运行的应用程序,而不需要对系统的其他部分有太多的依赖。“不受信任的软件”根本不应该安装;如果必须安装,则应使用卫生隔离的虚拟机容器是实现这一目的最普通、最安全的方法。

此目录是为所有不属于默认安装的软件和附加软件包保留的。例如,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 中。

如果默认权限不足以运行应用程序,则/opt可以从中获得所有权sudo chown -R $USER:$USER /opt/somepackage(这个问题已经被问过很多次了,也许只是搜索而不是询问)。没有规则,在这里我在/home/somecompany/somepackage目录中安装了很多东西,只是因为它有自己的分区并且比更频繁地被访问/opt,这是来自UNIX的一种遗留问题。

相关内容