Certain applications like Blender and Eclipse come precompiled in a tarball. Usually I put the directories in my home folder and access them from the command line. Is there a better place to put them and still adhere to POSIX standards (to a degree).
Where is a good place to put applications that come pre-compiled
directory-structuresoftware installation
Related Solutions
Well, there are various considerations.
You don't put anything in
/root
. This is for uid 0 and systems administration only; it's often not even traversable by non-root users.Install under
/home/<username>
if you're an unprivileged user on the machine and you, personally, need to be able to use the software you're installing. If you're the admin, you usually shouldn't mess around with users' homedirs.Install under
/usr/local
for normal software packages which, for whatever reason, you're installing from source locally (instead of installing through the package manager). This is usually where things get put if you run the standard autoconf./configure && make && make install
incantation from a source tarball. I also put little utilities I've developed locally under/usr/local/bin
, if I want them to be universally available.Install under
/opt
for third-party pre-bundled software (a good example of this is Calibre, if you use their binary installer). This makes a separate directory under/opt
for every package you install, and that directory has all the requisites for the package (as opposed to/usr
or/usr/local
, where binaries for all the packages are underbin
, libraries for all the packages are underlib
, &c.). In general, if you're writing or packaging software yourself that needs a lot of different components, it might be good to put it here, but it's probably suboptimal to try to install someone else's package there, if it's not their recommendation. That can be a matter of opinion, though.
If you're creating a package that users or administrators will install manually, you want either /opt
or /usr/local
. If you're installing someone else's package, follow their recommendation. If you're packaging something for a distribution (which you probably aren't), use /usr
.
In the arch package, it seems Dart gets installed into /opt/dart-sdk
. This also seems to match with what FHS says:
/opt
is reserved for the installation of add-on application software packages.The use of /opt for add-on software is a well-established practice in the UNIX community. The System V Application Binary Interface [AT&T 1990], based on the System V Interface Definition (Third Edition), provides for an /opt structure very similar to the one defined here.
The Arch package also seems to be put stuff in /usr/bin
(I suspect symlinks to the things in /opt/dart-sdk/bin
).
Best Answer
The place for this is in
/opt
for "Add-on application software packages" - these are packages that do not come with the distribution/OS.http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES