What's the most appropriate directory where to place development software shared between users?

For sharing data files and directories among users within the same machine, the /srv directory was recommended here:

  • What's the most appropriate directory where to place files shared between users?

I am assuming this is still valid or recommendded — correct me if that changed.

But what should be the directory for shared development-related software like Java, Maven, Gradle? They will all be installed by unpacking .tar.gz archives. A central location for programs would be preferred over repeated installations by each user in their respective home directory.

As an example, in order to work with CI like Jenkins I would have installed many JDK versions: 11, 15 and 17, and similarly for Gradle and Maven. These are used to test a project with different environments. The mentioned software packets are installed simply by unpacking the .tar.gz files and updating the .profile file with the respective settings for them. And yes, I use these repositories as well to install servers, such as MySQL, RabbitMQ etc ...


Since these software projects are installed by extracting a .tar.gz file it sounds like they are self-contained applications and I would install them in /opt/<project>. Another common choice is /usr/local, but I prefer that for source based installs.

Links

  • Use of /opt and /usr/local directories in the context of a PC
  • https://codeghar.com/blog/should-your-software-go-in-usr-local-or-opt.html
  • https://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/c23.html

Put it in /usr/local/, it is ignored by package managers.