this post was submitted on 29 Sep 2023
41 points (97.7% liked)


45885 readers
341 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.


Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago

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?

top 18 comments
sorted by: hot top controversial new old
[–] [email protected] 23 points 9 months ago

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.

[–] [email protected] 11 points 9 months ago

~/go is created when compiling go programs, you can change it's location with the GOPATH environment variable to something like GOPATH=$HOME/.local/go, and moving the directory there.

Never seen ~/perl5, could you provide the output of perl -V

[–] [email protected] 9 points 9 months ago (2 children)

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'.

[–] [email protected] 3 points 9 months ago

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.

[–] [email protected] 2 points 8 months ago

gotcha, yeah, I think I will try the same. I used to do this in windows because it is a mess.

[–] [email protected] 7 points 9 months ago (1 children)
[–] [email protected] 3 points 9 months ago

cool, thanks!

[–] [email protected] 4 points 9 months ago (1 children)
  1. You don't 🙃

/s Sorry, I had to 🤣

[–] [email protected] 3 points 9 months ago
[–] [email protected] 4 points 9 months ago (1 children)

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_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.

[–] [email protected] 1 points 9 months ago* (last edited 7 months ago) (1 children)

[This comment has been deleted by an automated system]

[–] [email protected] 1 points 9 months ago

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 is just a bunch of symlinks to frequently used apps from opt
  • src is where i keep clones of repos (but I don't do work in src)
  • workspace is a where I do my work on git worktrees (based off src)
[–] [email protected] 3 points 9 months ago (1 children)

I see syncthing; I comment this.

[–] [email protected] 1 points 8 months ago
[–] [email protected] 2 points 9 months ago (1 children)

Try xdg-ninja to learn how to move them (and everything else) away from your home directory.

[–] [email protected] 1 points 8 months ago
[–] [email protected] 1 points 9 months ago* (last edited 9 months ago) (1 children)
  1. 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:

(and more generally)

[–] [email protected] 1 points 8 months ago