Linux中应用程序的常规安装位置是什么?


72

我当前正在安装NetBeans,默认安装目录为/home/thomasowens/netbeans-6.8。我不是该位置的粉丝,所以我在寻找/etc/bin/usr/bin,和/sbin。按照约定,Linux是否有一个与Windows C:\Program Files目录相同的位置?

Answers:


98

根据文件系统层次结构标准,根据应用程序有几个可以接受的地方。我在这里广泛引用。

  • bin 是“二进制”的缩写
  • sbin 是“服务器二进制文件”的缩写,否则定义为:

    用于系统管理的实用程序(和其他仅root用户命令)

  • /usr 用于共享的只读数据,并且应该在各种符合FHS的主机之间共享(如果您的网络上有很多计算机,并且它们都是相同的体系结构,则您应该能够共享一个/ usr文件夹与网络上的每台机器)

  • /usr/local 是供系统管理员在本地安装软件时使用的(即,仅安装在此计算机上而不是网络上每台计算机上的应用程序)。

将这些结合在一起:

  • /usr/bin 是系统上可执行命令的主目录。
  • /usr/sbin 适用于系统管理员专用的任何非必需二进制文件。
  • 所需要的系统修复,系统恢复,安装在/ usr,或其它基本功能的系统管理程序必须放在/sbin代替(即安装你需要以访问的东西/usr/sbin进去/sbin
  • 同样,/usr装入之前可能需要的基本用户命令/bin
  • 只能在本地计算机上安装的任何物品都应进入/usr/local/bin/usr/local/sbin

虽然/ usr / local还有其他用途。通过发行版的软件包管理器安装的大多数东西都将放置在/ usr下。许多人将自己编译的内容放在/ usr / local下。这使它们不影响软件包管理系统,并让您发现从发行版安装的内容(并且无需备份,因为您可以再次获取它)以及手动编译的内容。它还允许您同时运行不同的版本(例如/ usr / bin / firefox与/ usr / local / bin / firefox)。


就在您认为事情已经解决的时候,还有另一个地方,这可能是c:\Program Files- 的最接近的对等物/opt

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

/opt可能是最接近的等效c:\program files,因为它是一个地方,你希望找到的所有文件的应用程序放在一个文件夹中,而不是分散在/usr/bin/var/etc。它通常仅由非常大的软件包使用,但是在这种情况下,鉴于Netbeans希望拥有自己的文件夹,将它放在/ opt / netbeans下可能是最有意义的


3
有趣。如果我设计了Linux,则应该将网络共享应用程序放在/ usr / shared中,然后将私有本地主机应用程序放在/ usr中。这样,我就可以共享/ usr / shared,而无需通过继承共享/ usr。
djangofan

1
真是个好答案。我也喜欢有关使事情远离软件包管理系统的评论。
DaveParillo 2010年

1
绝对/ opt表示“完整的第三方包”。大多数安装会将各种二进制文件,库,文件等划分为不同的目录,但是当您拥有“ all in one”目录时,/ opt使其易于处理。
艾利·佩恩

几个简短的问题:1)如果/ usr应该在网络上的所有计算机之间共享,这是否意味着所有子目录也可以共享,从而使/ usr / local对网络上的其他计算机可见?2)什么是FHS 3)当您谈论挂载/ usr所需的命令时,您是否在谈论操作系统如何从关机引导(例如)?对于7年后的轰炸问题,我深表歉意,但是我是Linux的新手,在看到安装指南说要把东西放在哪里而不是为什么要把它放在那里之后,我也遇到了同样的问题。+1 btw
Ungeheuer

5

确实,这取决于个人喜好。我会解释我的价值。

/ usr,/ usr / bin通常是要安装的系统所安装软件的位置。我自己安装东西时,将它们安装在以下几个位置之一:

  1. 如果仅是我将使用的脚本或小程序,则将其安装在〜/ bin中-这是我大部分工作的结果。
  2. 如果它像您描述的那样(NetBeans)具有自己的完整文件树,则将其安装在/ opt中
  3. 如果是单个可执行文件,则将其安装在/ usr / local / bin中

为什么要区分#2和#3?不知道,这只是我逐渐养成的习惯。可以确定/ opt通常最终会变成一棵文件深的树,但是只安装了2或3个实际的“东西”。这时,我在opt中安装了lampp和Lotus音符,这两个目录下都有很大的树。在/ usr / local / bin中,我有20或30个条目,但没有子目录。

我不会在/ usr / bin或/ usr / sbin中安装东西,因为我希望将手动添加的东西(不是从标准存储库简单安装的一部分)分开。


1

虽然文件系统层次结构标准确实提供了一些指导。我发现大多数发行版都喜欢将软件包安装到中/usr/share

因此,我采用了安装未通过软件包管理器(rpm / apt-get / emerge)安装的任何应用程序的做法/usr/local。这使我可以将未通过程序包管理管理的应用程序和库与未通过程序包管理进行管理的库分开。

这是一项帮助我在Fedora Core和Gentoo下管理系统的技术。


0

我本来以为默认位置是/bin,如果使用apt-get或类似的东西,默认情况下几乎所有东西都安装在这里。

...但是,当涉及到具有许多其他文件的更现代的程序(或没有安装程序的程序)时,我喜欢将它们放在自己的目录中/bin


3
/ bin,/ usr / bin和/ sbin有什么区别?/ bin最有意义,因为它用于BINary文件。
Thomas Owens

0

通常,它们安装在多个文件夹中,主要是/ usr,/ local,/ bin等。您可以从GDebi安装程序(在“文件”选项卡下)找到程序的安装位置。如果您要移动Netbeans,建议将其移动到/ opt,因为Google似乎是在这里安装它的东西。


0

同意James Polley的回答,但是实际上,除非您需要在多个帐户之间共享应用程序,否则默认目录非常有意义。例如,为了在Linux下进行Flex工作,我需要安装Eclipse 3.0(已过时),并将其放在$ HOME / eclipse3中。


0

我喜欢将/ apps用于安装在多台服务器上的大多数附加应用程序。我将文件夹的副本保留在nfs服务器上的/ installs / apps中。当我创建任何新的linux服务器时,我会挂载installs文件夹并复制/ apps,新服务器上有许多不同的通用应用程序。我删除了不需要此新服务器的那些条目,并完成了。好吧,也许我需要运行一个或三个脚本来设置环境变量或路径语句,但这几乎是设置许多新服务器所需要的。

我来自Windows和.net背景。.net的一项承诺是,可以使用Windows xcopy来安装大多数应用程序。我在Linux中寻找相同的东西。在可用的地方,我选择tar而不是RPM或yum等,以便可以使用cp -r部署到/ apps并将该应用程序添加到我的nfs服务器中以供将来部署。


2
问题要求惯例。您亲自描述了自己的工作。您至少可以将此与公约相关联吗?
fixer1234 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.