在哪里为所有用户安装软件和可执行文件

Jie*_*eng 20 filesystem package-management

默认情况下,一些应用程序安装到/usr/local/bin. 但是,如果我更改用户,该用户是否能够访问此应用程序?我在这里的某个地方(另一个问题)读到我应该使用/opt. 但是默认情况下进入的二进制文件/usr/local/bin?没有/opt/bin

mni*_*ess 24

通常,您不必尝试手动安装任何东西。在几乎所有情况下,您都会找到一个 .deb 包。如果没有,请谷歌寻求建议(例如如何在 Ubuntu 中安装 Oracle JDK)。如果这是您自己的软件,请查看Ubuntu Packaging Guide以获取有关如何将内容正确放入 Ubuntu 的帮助。

如果您无论如何都必须这样做,请将二进制文件放入/opt/myapp并将可执行文件链接到:

ln -s /opt/myapp/myappbinary /usr/local/bin/myappbinary
Run Code Online (Sandbox Code Playgroud)

如果您想了解有关该主题的更多信息,请输入man hier终端。/usr/bin和之间的区别在/usr/local/bin那里解释。在任何情况下,两个路径都在$PATH环境变量中。这意味着您放置的任何二进制文件都可以由任何人执行,只需提供二进制文件的名称(而不是完整路径)。因此,使用上面的示例,您可以运行程序,myappbinary而不必提供完整路径/opt/myapp/myappbinary

  • @jiewmeng 如果你看一下`man hier`,你会看到那里解释的一切。包括/usr/bin 和/usr/local/bin 的区别。简而言之:不要将任何内容符号链接到 /usr/bin/。@psusi 原因是要保持文件系统干净。如果您曾经重新安装计算机(或移动到不同的机器/硬盘驱动器),您需要查看的唯一目录应该是 /home、/etc 和 /opt。让我再重复一遍:通常你永远不想在 $HOME 之外做任何事情,除了可能在 /etc 中编辑配置文件。 (4认同)
  • 将其放入 /opt 的目的是什么,特别是如果您只是要将其符号链接到 /usr/local 中? (2认同)

psu*_*usi 8

/usr是世界可读的,所以不,其他用户可以运行该程序没有问题。 /usr/local是您自己从源代码编译的应用程序所在的位置。通过包管理器安装的程序去其他地方。我从未见过任何目的/opt,我相信这只是 80 年代旧的 AT&T Sys V 时代的延续。