https://www.gnu.org/software/stow/
GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place. For example,
/usr/local/bin
could contain symlinks to files within/usr/local/stow/emacs/bin
,/usr/local/stow/perl/bin
etc., and likewise recursively for any other subdirectories such as.../share
,.../man
, and so on.This is particularly useful for keeping track of system-wide and per-user installations of software built from source, but can also facilitate a more controlled approach to management of configuration files in the user’s home directory, especially when coupled with version control systems.
GNU Stow was very useful in a time when package managers were much more difficult, and seems to have pivoted to dotfile management.
From GNU Stow manual - GNU Project - Free Software Foundation, the introduction:
While this is useful for keeping track of system-wide and per-user installations of software built from source, in more recent times software packages are often managed by more sophisticated package management software such as
rpm
,dpkg
, and Nix / GNU Guix, or language-native package managers such as Ruby’sgem
, Python’spip
, Javascript’snpm
, and so on.However Stow is still used not only for software package management, but also for other purposes, such as facilitating a more controlled approach to management of configuration files in the user’s home directory2, especially when coupled with version control systems3.
It is very nifty and I use it to sync dotfiles/configuration between computers.