I don’t like the mess some software makes when it install in my system so I want to move it to a more appropriate place.
My questions are:
1- Where is the most appropriated directory for this? (some hidden folder made with this purpose, I thought linux had something like this as a standard)
2- How I move it without breaking anything?
The appropriate directory’s are the XDG Base Directory, check this page on arch wiki to move them correctly. You can also use xdg-ninja and it will scan for these extra directories on your $HOME and tell you what you need to do to move them to their appropriate location or not if these directories are hardcoded or cannot be moved.
I don’t like the mess some software makes when it install in my system
I gave up bothering about this a decade ago and I just store my files elsewhere while software treat the home directory as ‘application data’.
Agreed - I’m much happier with my /files directory. Not to mention I have no interest in organizing my files by type (photos, documents, music). Instead I have directories like house, finances, podcasts, etc.
I just wish programs wouldn’t take the XDG directories so seriously and default to those locations. I’d rather they always default to last saved directory.
gotcha, yeah, I think I will try the same. I used to do this in windows because it is a mess.
~/go
is created when compiling go programs, you can change it’s location with the GOPATH environment variable to something likeGOPATH=$HOME/.local/go
, and moving the directory there.Never seen
~/perl5
, could you provide the output ofperl -V
Don’t know about perl but for go you need to look up setting gopath like here https://stackoverflow.com/questions/10838469/how-to-compile-go-program-consisting-of-multiple-files/61793820#61793820
cool, thanks!
RE Go: Others have already mentioned the right way, thought I’d personally prefer
~/opt/go
over what was suggested.
RE Perl: To instruct Perl to install to another directory, for example to
~/opt/perl5
, put the following lines somewhere in your bash init files.export PERL5LIB="$HOME/opt/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}" export PERL_LOCAL_LIB_ROOT="$HOME/opt/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}" export PERL_MB_OPT="--install_base \"$HOME/opt/perl5\"" export PERL_MM_OPT="INSTALL_BASE=$HOME/opt/perl5" export PATH="$HOME/opt/perl5/bin${PATH:+:${PATH}}"
Though you need to re-install the Perl packages you had previously installed.
With ~/.local already mirroring the system paths for /share and such, I tend to prefer putting applications like these in ~/.local/opt because I think that makes more sense.
Now, if only snap would move its stupid directory to a nornal place, or at least use a capital letter like every other folder in my home directory…
I didn’t like the capitalised names so configured xdg to use all lowercase letters. That’s why
~/opt
fits in pretty nicely.You’ve got a point re
~/.local/opt
but I personally like the idea of having the important bits right in my home dir. Here’s my layout (which I’m quite used to now after all these years):$ ls ~ bin desktop doc downloads mnt music opt pictures public src templates tmp videos workspace
where
bin
is just a bunch of symlinks to frequently used apps fromopt
src
is where i keep clones of repos (but I don’t do work insrc
)workspace
is a where I do my work on git worktrees (based offsrc
)
- You don’t 🙃
/s Sorry, I had to 🤣
lol
Try
xdg-ninja
to learn how to move them (and everything else) away from your home directory.Thanks!
- usually ~/.config/PROGRAM_NAME/
You probably want to look into $XDG_CONFIG_HOME and the freedesktop spec documentation if you are interested in more of where these standards come from:
https://specifications.freedesktop.org/basedir-spec/latest/ar01s02.html(and more generally)
Thanks!