Keeping up to date with a program language installation isn't always easy. In particular, juggling the latest and greatest,legacy versions needed to maintain compatibility, keeping several versions of a langauge installed, or needing admin acess can be a real pain. The package manager included with your operating system, such as dpkg
/apt
or yum
might help somewhat, but they usually cannnot handle multiple versions, typically want you to be an admin, and often do not have the most recent version available in their repos.
So what's an enterprising dev to do?
One answer is to install a dedicted tool for installing a managing a program language. These tools operate a bit like a language-specific package manager, with tools for installing, managing and swapping versions of a language. They operate by adjusting your path, often via a 'shim' pointing to a local install. They typically leave your system-installed versions alone. All in all, these tools are a huge boon to developers.
For Nodejs, you want to use the excellent Node Version Manager (or nvm).
For Ruby, in my opinion, there's none better than rbenv. You could also check out rvm if you'd like an alternative.
Python has had a split personality for quite a while now, with Python 2 and Python 3 living side by side for years. This has meant that many OS installs have both versions installed. But that might not be enough for you, so maybe you should check out pyenv, the rbenv-inspired tools for installing and managing multiple Pythons.
If so, leave me a comment, and I'll look at adding the tool that help you keep installing youyr language of choice sane here, too.