Where to install programs?
What is the best place to install user apps?
I've downloaded a
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/local/bin? Or are those only for single binaries? This program wants to create a folder.
There's a good conversation on this issue over on unix.stackexchange: http://unix.stackexchange.com/questions/30/where-should-i-put-software-i-compile-myself
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
/optwould 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/binfor putting all your apps.
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).
I'd go with /opt as well: http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html
For all path-related questions, the Linux Filesystem Hierarchy Standard is the definitive reference.
If the program needs to create a folder, then
/usr/localis the directory of choice; according to the FHS:
/usr/localhierarchy 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
bindirectory) will not create a menu entry; for that you have to provide a
.desktopfile and install it in the appropriate directory with the xdg-desktop-menu command.
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.
@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."
@RiccardoMurri Ah, thanks for the clarification. That is an important difference.
`"Extraction not performed" - You don't have the right permissions to extract archive in the folder "local"`. 1) I googled Firefox beta; 2) click download; 3) extract manager got opened; 4) I google where to extract it; 5) I get error; How I'm doing it wrong??? This is why people hate Linux!
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.
As I understand it, "No other directories, except those listed below, may be in `/usr/local` after first installing a FHS-compliant system." means that FHS-compliant systems **proscribe** creation of extra directories in `/usr/local`. The opposite meaning ("it's okay to create extra directories after a first install") would be if `s/after/before`. `/opt/` seems the way to go.
@StackUnderflow The usage of `/opt` and `/usr/local`is pretty similar in that both are intended to host software *not* provided by the Linux distro. But `/usr/local`is 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.
Hum, OP was talking about an installer for Komodo, so most likely that should go in /opt. As I understand, things that create folders should not go in /usr/local. In /usr/local, you need to work with the existing directory structure. So libs can go in a folder under /usr/local/lib and your man page in /usr/local/man and your executable in /usr/local/bin. If what you need to install doesn't fit that, /opt is the better place.