1

I have several programs I want to download their src files and compile. They are fetched through git, so I can easily pull updates and recompile them. The right location of these files, to my understanding, is /usr/local/src.

But aren't some (most? any?) deter the use of sudo for source compilation aside make install? So should I give /usr/local/src user permissions? Or am I completely mistaking?

3
  • I just put source code in my home directory, as in /home/<username>/Code/...
    – Ash
    May 13, 2013 at 22:45
  • I thought about doing that, but take tig for example - it only have make, and not make install. I manually add the binary to /usr/local/bin. Placing it in my home folder would mean it's only accessible to me. XnView is another example, without any compilation at all.
    – user212327
    May 13, 2013 at 23:11
  • Ah, okay sounds like you're building tools/modules to run on your system, as opposed to just "developing software"? Maybe putting it in /usr/local is better than, but your instinct about having to "sudo" everything is correct -- it's not recommended.
    – Ash
    May 14, 2013 at 0:51

2 Answers 2

1

The configure and make portion of the process should be performed without escalated privilege. Once that is successfully completed, the install is performed with superuser role (i.e. sudo). Commonly, storage of source is within your $HOME and compilation performed there. I'd strongly recommend packaging the project for integration into your system(s) via native package management.

To answer: no, don't change the permissions of '/usr/local/src' ; just utilize your $HOME for building.

2
  • Though I wonder - if I do give privileges to make install, what difference does it make to give privileges to configure and make?
    – user212327
    May 14, 2013 at 18:14
  • Privilege escalation should only be invoked when absolutely necessary. It's not needed during configure and make portion of the build (the binaries are created after these are successfully completed usually). The install phase requires modification of the fs and linking, etc. which require privilege escalation.
    – swa
    Aug 6, 2013 at 5:01
0

There is no such thing as the "correct location" it is up to the admin to decide. True, traditionally Linux admins place source files in /usr/local/src and you are free to do so. You can also place them in your $HOME, whatever you prefer.

Now, if you are compiling/installing software you are the admin. Therefore, there is no reason why you should not switch to root in order to have access to /usr/local/src. There is absolutely no reason why you should not compile as root, that is what every sysadmin I have ever known does, that is why the root user exists, to perform administrative tasks. This includes the compilation and installation of software.

So, if you are developing software, do it in your $HOME, if you are installing other people's software from source, do it as root in /usr/local/src if you so desire. Personally, I compile programs in $HOME/Setups because my $HOME is on a separate partition and that makes it easier for me to upgrade/reinstall my system. That is just a personal choice though and proper sysadmins will compile in /usr/local/src as root.

0

You must log in to answer this question.