170

Possible Duplicate:
What is the best place to install user apps?

I've downloaded a .tar.gz and ran sudo sh install.sh. It's asking me where to install the program to. I don't want it cluttering up my home directory, and I want it to be available in the applications menu. Where should I put it? /usr/bin? /usr/local/bin? Or are those only for single binaries? This program wants to create a folder.

2

3 Answers 3

113

First of all which Application are you installing? It is always preferable to install through the native Package Management as the Package Manager will handle the location, updates, paths and the launchers (shortcuts) for you. Also updates would be handled. You should ideally search for the package in the Software Center or Synaptic. PPAs can be used if the software is not in the default repos.

However if you are sure of installing this package, use /opt directory, /opt/appname for example. /opt would be suitable for this kind of installs. Launchers may or may not be created depending on the installer. You can create a launcher manually if the installer doesn't create. You may also use $HOME/bin for putting all your apps.

5
  • Komodo Edit 6. I don't see it in the repos.
    – mpen
    Oct 13, 2010 at 18:01
  • 2
    In that case, Simply use /opt/komodo, or any subdirectory within /opt. This installer will create a launcher for you in the Menu (just tested).
    – LFC_fan
    Oct 13, 2010 at 18:19
  • 7
    I'd go with /opt as well: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html Oct 13, 2010 at 18:22
  • interestingly, many programs/appplications automatically suggest to install to /opt if you do sudo install.
    – HongboZhu
    Sep 10, 2018 at 8:26
  • 2
    Which permissions to set for the /opt/appname?
    – Danijel
    Nov 11, 2020 at 14:44
93

For all path-related questions, the Linux Filesystem Hierarchy Standard is the definitive reference.

If the program needs to create a folder, then /usr/local is the directory of choice; according to the FHS:

The /usr/local hierarchy is for use by the system administrator when installing software locally.

Avoid placing your local binaries directly under /usr, because according to the FHS, that hierarchy is reserved for the software provided by the Linux distribution (in this case, Ubuntu).

Note that, placing a binary in /usr/local/bin (or any other bin directory) will not create a menu entry; for that you have to provide a .desktop file and install it in the appropriate directory with the xdg-desktop-menu command.

10
  • 7
    I disagree. According to FHS, /usr/local should not contain extra directories beyond the ones specified, and /usr/local/bin should only contain binaries. Creating a folder in /usr/local or /usr/local/bin is a violation of FHS. /opt should be used in this case. Mar 28, 2015 at 20:52
  • 8
    @jordanbtucker Hmmm, no the FHS states that: "No other directories, except those listed below, may be in /usr/local after first installing a FHS-compliant system." Actually, it's pretty explicit that /usr/local is for locally-installed software: "The /usr/local hierarchy is for use by the system administrator when installing software locally. [...] Locally installed software must be placed within /usr/local rather than /usr unless [...] to replace or upgrade software in /usr." Mar 30, 2015 at 8:45
  • 3
    @RiccardoMurri Ah, thanks for the clarification. That is an important difference. Mar 30, 2015 at 15:58
  • 2
    Someone else might come up with something better icl7126 - I'm fairly new to linux (35 year old dev moved to Linux a month ago!) but for me what worked was to right click in the folder where the zip file is - select 'open in terminal'. Then type 'sudo xdg-open .' to open the file browser with elevated permissions. From there I could open the zip file with sufficient privileged to extract to the opt folder. Jan 14, 2018 at 11:40
  • 2
    @StackUnderflow The usage of /opt and /usr/localis pretty similar in that both are intended to host software not provided by the Linux distro. But /usr/localis reserved to the sysadmin; /opt provides a directory tree under which 3rd party software vendors can install their software. E.g., if you buy a commercial application, it can install its own files in /opt/app-name without risk of interfering with anything installed by the distro or the sysadmin. Feb 20, 2019 at 20:13
11

Usually you would put it in /usr, binaries in /usr/bin if it's something bigger it would go to /opt.

Not the answer you're looking for? Browse other questions tagged .