安装程序的位置在哪里?

可能重复:
最佳安装用户应用程序的位置是什么? 我下载了一个.tar.gz文件并运行了sudo sh install.sh。它问我要将程序安装到哪里。我不想让它混乱我的主目录,并且希望在应用程序菜单中可用。我应该把它放在哪里?/usr/bin?/usr/local/bin?还是那些只适用于单个二进制文件?这个程序想要创建一个文件夹。

3在unix.stackexchange上有一个关于这个问题的好的讨论:http://unix.stackexchange.com/questions/30/where-should-i-put-software-i-compile-myself - andrewsomething
您可以使用 ~/.local/bin,这是由systemd和XDG认可的。更多信息请参见这里这里的答案。 - Matthias Braun
3个回答

首先,您要安装哪个应用程序?最好通过本机软件包管理器进行安装,因为软件包管理器会处理位置、更新、路径和启动器(快捷方式)等问题。同时也会处理更新。您应该在软件中心或Synaptic中搜索软件包。如果默认存储库中没有该软件,则可以使用PPA。
但是,如果您确定要安装此软件包,请使用/opt目录,例如/opt/appname。对于这种类型的安装,/opt是合适的。启动器可能会根据安装程序的不同而创建或不创建。如果安装程序没有创建启动器,您可以手动创建一个。您还可以使用$HOME/bin来放置所有的应用程序。

Komodo Edit 6. 我在软件仓库中找不到它。 - mpen
2在这种情况下,只需使用/opt/komodo或/opt目录中的任何子目录即可。此安装程序将为您在菜单中创建一个启动器(已经测试过)。 - LFC_fan
7我也会选择/opt:http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html - dr Hannibal Lecter
有趣的是,许多程序/应用在使用sudo安装时会自动建议安装到/opt目录下。 - HongboZhu
2/opt/appname设置哪些权限? - Danijel

对于所有与路径相关的问题,Linux文件系统层次结构标准是权威参考。
如果程序需要创建一个文件夹,那么/usr/local是首选目录;根据FHS

/usr/local层次结构是供系统管理员在本地安装软件时使用的。

避免直接将本地二进制文件放在/usr下,因为根据FHS,该层次结构是为Linux发行版提供的软件保留的(在这种情况下是Ubuntu)。
请注意,将一个二进制文件放置在/usr/local/bin(或任何其他bin目录)中,不会创建菜单项;要创建菜单项,您需要提供一个.desktop文件并使用xdg-desktop-menu命令将其安装到适当的目录中。

7我不同意。根据FHS的规定,/usr/local目录不应包含除指定目录之外的额外目录,而/usr/local/bin目录只应包含可执行文件。在/usr/local或/usr/local/bin中创建文件夹是违反FHS规定的行为。在这种情况下应该使用/opt目录。 - jordanbtucker
8@jordanbtucker 嗯,不是的FHS规范指出:“在首次安装符合FHS规范的系统后,除了下面列出的目录之外,/usr/local目录中不能有其他目录。” 实际上,它非常明确地说明了/usr/local是用于本地安装软件的:“/usr/local层次结构是供系统管理员在本地安装软件时使用的。*[...]* 本地安装的软件必须放置在/usr/local而不是/usr中,除非*[...]* 用于替换或升级/usr中的软件。” - Riccardo Murri
3@RiccardoMurri 啊,谢谢你的澄清。这是一个重要的区别。 - jordanbtucker
1"未执行提取操作" - 您没有在“本地”文件夹中提取存档的权限。1)我在谷歌上搜索了Firefox beta;2)点击下载;3)提取管理器打开了;4)我在谷歌上搜索了提取位置;5)出现错误;我做错了什么?这就是为什么人们讨厌Linux! - icl7126
2可能还有其他人会提供更好的解决方案 icl7126 - 我对Linux还比较新(35岁的开发者一个月前转到了Linux!)但对我来说,以下方法有效:在存放zip文件的文件夹中右键点击,选择“在终端中打开”。然后输入'sudo xdg-open .'以以提升的权限打开文件浏览器。从那里,我可以以足够的特权打开zip文件并提取到opt文件夹。 - Chris Nevill
1据我理解,“在首次安装符合FHS标准的系统之后,/usr/local 目录下除了列出的目录以外,不允许存在其他目录。” 这句话的意思是符合FHS标准的系统禁止/usr/local 目录下创建额外的目录。如果将 after 替换为 before,则意味着“在首次安装之前创建额外的目录是可以的”。使用 /opt/<package> 似乎是一个好办法。 - P-Gn
1这篇文章提出了一个很好的理由,即使用/opt而不是/usr/local - Stack Underflow
2@StackUnderflow 在使用上,/opt/usr/local非常相似,它们都用于托管Linux发行版未提供的软件。但是,/usr/local是为系统管理员保留的;/opt则提供了一个目录树,供第三方软件供应商安装他们的软件。例如,如果你购买了一款商业应用程序,它可以将自己的文件安装在/opt/app-name中,而不会干扰发行版或系统管理员安装的任何内容。 - Riccardo Murri
1嗯,OP在谈论Komodo的安装程序,所以最好放在/opt目录下。据我了解,创建文件夹的东西不应该放在/usr/local目录下。在/usr/local目录下,你需要按照现有的目录结构进行操作。因此,库文件可以放在/usr/local/lib的子文件夹中,手册页可以放在/usr/local/man中,可执行文件可以放在/usr/local/bin中。如果你要安装的内容不适合这样安排,那么/opt是更好的选择。 - Didier A.
@StackUnderflow,“文章”是从StackExchange答案中复制粘贴的。 - Ilya Serbis

通常情况下,你会把它放在/usr目录下,如果是一些较大的文件,则会放在/opt目录下。二进制文件则会放在/usr/bin目录下。