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.
~/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
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’.
gotcha, yeah, I think I will try the same. I used to do this in windows because it is a mess.
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.
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.
[This comment has been deleted by an automated system]
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
I see syncthing; I comment this.
OK
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!