安装用户应用程序时,“最佳实践”建议它们位于何处?

cit*_*rad 241 application-development software-installation

有时我手动安装应用程序,而不是使用apt或其他包管理器。

安装用户应用程序的“最佳实践”建议在哪个位置(/usr//usr/local//opt//home/等)?

Uma*_*ang 210

这取决于,真的。如果应用程序有一个 makefile,或者例如对于 python 应用程序,如果应用程序使用 distutils(例如,有一个setup.py文件),或者类似的构建/安装系统,你应该将它安装到/usr/local/. 这通常是默认行为。

据我了解,/usr/local/具有类似于/usr/. 但是,像/usr/bin//usr/lib/这样的目录通常是为通过apt. 因此,希望“安装”到其中的程序/usr/应该可以在/usr/local/.

如果您只需要提取一个 tarball 并直接运行(例如 Firefox),则将其放入/opt/. 一个只需要一个目录并将获取与该目录相关的所有文件/库的程序可以在/opt/.

  • 似乎很多人都忘记了 `opt/` - 在我看来,你已经达到了它的目的。 (29认同)
  • 从 /usr/bin 创建符号链接或将其添加到 ~/.bashrc 中的 PATH (4认同)
  • 那`~/.local/share`呢?@马可 (2认同)
  • 您可以在`~`(您的主目录)中安装东西,但这将使应用程序只能被一个用户访问。您系统上的其他用户必须安装和维护他们自己安装的该软件。至于安装应用程序安装主目录的最佳实践,我相信没有那么强的指导方针,因为您不会干扰系统包。 (2认同)
  • @JARC,这仅对系统上的一个用户可用(在您的情况下为“ubuntu”用户)。 (2认同)

Wal*_*ner 132

最好记住它/usr不代表user而是unix system resources

因此,我倾向于认为任何发行版都有权践踏所有内容,/usr,并且我对系统的特定添加进入/usr/local,我在升级之前保留这些内容。

同时,应用程序和其他东西进入/opt

有些人觉得把东西放进去很舒服/home,尽管我很少遵循那个惯例。

说了这么多,我让分发包管理器先按自己的方式做事,然后在手动滚动东西时执行上述操作。

  • 值得记住的是,“unix 系统资源”是在添加“/home”之后执行的重命名。在旧的、旧的、旧的时代(Unix 版本 6 等),您会看到 /usr/jimmy、/usr/siobhan、/usr/ahmed 等目录,因为“用户”目录存储在 /usr . (40认同)
  • /usr 是“用户”。那是因为 linux 用户是开发人员。首先,当它开始分为开发人员和用户时,引入了 `/home` 目录。然后有人想说它的意思是“Unix 系统资源”,这实际上没有意义,因为我们在“/dev”中有“Unix 系统资源” (9认同)
  • 好吧,我咬咬牙:opt 代表什么? (6认同)
  • @Seth 我认为它是“可选的”——它最初用于不属于默认安装的软件。 (4认同)
  • 正确,/usr 是一个反义词。自从 1969 年 Unix 在 PDP-7 上运行以来,目的已经改变。 (3认同)
  • 哇,这个历史背景真的把事情弄清楚了。谢谢沃尔特·斯通伯恩纳和马克·莱顿·费舍尔。 (2认同)

Las*_*sen 37

在 /home/user/opt/ 中安装像 firefox devel 这样不稳定的程序使它更容易删除,并且不会让其他用户混淆他们应该使用的版本......所以如果它不是全球使用的程序,请安装它在您的主目录的子文件夹中。

千万不要在/usr/下安装程序,很容易造成混乱,安装在/usr/下的东西只是为了分发包。/usr/local/ 用于本地编译的包。并且结构以完全相同的方式工作!/usr/local/ 中的文件将优先于 /usr/ 中的文件

/opt/ 应该用于安装预编译(二进制)包(Thunderbird、Eclipse、Netbeans、IBM NetSphere 等)等。但是,如果它们仅用于单个用户,则应将它们放在您的主目录中。

如果您希望能够运行安装在“奇怪”位置(如 /home/user/opt/firefox/)的程序,而无需键入需要将其添加到 $PATH 变量的整个路径,您可以这样做在您的 /home/user/.profile 中添加这样的行

export PATH=/home/user/opt/firefox:$PATH
Run Code Online (Sandbox Code Playgroud)

文件夹名称应该是您需要运行的可执行文件所在的文件夹名称。


pop*_*pey 29

Linux 文件系统层次结构标准表明/usr/local.

http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html

'/usr/local' 背后的最初想法是在除了 '/usr' 之外的每台机器上都有一个单独的('local')'/usr' 目录,它可能只是从其他地方以只读方式挂载。它复制“/usr”的结构。现在,'/usr/local' 被广泛认为是保存自编译或第三方程序的好地方。/usr/local 层次结构供系统管理员在本地安装软件时使用。它需要在系统软件更新时不会被覆盖。它可用于可在一组主机之间共享但在 /usr 中找不到的程序和数据。本地安装的软件必须放在 /usr/local 而不是 /usr 中,除非安装它是为了替换或升级 /usr 中的软件。

  • 似乎与此 /usr/local 内容与 opt 页面上的信息相矛盾: http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html " "此目录为所有软件保留并添加-on 不属于默认安装的软件包。例如,StarSuite、Kylix、Netscape Communicator 和 WordPerfect 软件包通常可以在这里找到。为了符合 FSSTND,所有第三方应用程序都应安装在此目录中。"..."(类似于 Windows 将新软件安装到其自己的目录树 C:\Windows\Progam Files\"Program Name ")" (4认同)

Jav*_*era 8

我通常在家里有一个名为“Programs”的文件夹,我在其中安装这些程序,很奇怪(或不奇怪)它们现在都是 java 的东西。

它对我来说有一个很大的优势,当我重新安装或更换计算机时,它们会与我家的其他部分一起移动。它有一个明显的缺点,这些应用程序仅对我的用户可用。