Ideally everything can be found in repositories and handled by a package manager, but that’s not always the case, with Fedora more so than with Ubuntu. So if downloading and compiling source code or cloning github repos, where do you put them?
It’s easy to clutter ~/Download as a “temporary” dumping ground. Plus not having the directory in the PATH means having to remember absolute paths to execute programs… or even forgetting of their existence.
I’ve seen suggestions for /opt, /usr/local, but since that requires root permissions, is that such a good idea?
Another option is to create packages from source with tools like checkinstall and then let the package manager handle the installation, which is nice. But is there an equivalent for Fedora?
checkinstall seems to be the oldest, with no maintenance for over 9 years (hence no support by anyone). the RPM spec will have been updated since then and the Linux FHS in 2015, youd want to check this program doesn’t conflict with modern distros.
The de facto reality is that there’s a gray area. Personally, if I pull something from git, I put it in /usr/local and consider the git pull kind of equivalent to compiling, but you could also put it in /opt. You can also put either or both on separate partitions.
This would be unusual, but not unprecedented. The home folder is supposed to serve as a division in scope from the rest of the system, so it would follow that ~/bin~/opt~/lib~/etc~/opt~/srv and ~/var are all hypothetically viable, although I have only ever seen ~/bin.
I believe this would be the most appropriate.
I think this makes sense for stuff you are working on, but not necessarily something you’re just pulling off of GitHub to use. Again though, it’s all pretty arbitrary. Just watch out for SELinux if you want to execute something from an unusual place.
I have an ‘archbuilds’ and ‘voidbuilds’ folder on my machine and I can bet you know what those are for. I also just have an apps folder that I throw exe’s and shit into. Appimages, flatpaks, everything.
Not all code requires ./configure or make install. Some just need make or already have a binary executable. It just seems wrong to require root to make/run regular projects, which is why I’m hesitant about anything outside of /home, but on the other hand that doesn’t seem good for organization.