Yes, it is possible to install software to directories other than /usr.
One example (system-wide) is /usr/local. (Which might still not help you directly, since your /usr is read-only.) The /usr/local directory matches /usr in its layout (it has a /bin, /lib etc.) In most cases, it is used to distinguish packages shipped as part of your base OS (which will go into /usr) from those installed from source by the systemd administrator (which will go into /usr/local.)
There is also /opt which is meant to install packages into separate per-package directories. So, for instance, you could install Perl 6 there under /opt/perl6 and that would only contain Perl and nothing else. You would keep separate directories for the separate packages, which usually makes it easy to "uninstall" a package by just removing its directory. You usually need to set $PATH appropriately to access the programs installed there, or create symlinks in some other bin directory that's already in $PATH to access those. Management of /opt is usually meant for the administrator, and considering you need to update $PATH for every package you install, it might not be the best option...
For installing software under your $HOME directory, one possible approach is to create a .local subdirectory at the top of it and match the /usr or /usr/local hierarchy.
So maybe try this:
mkdir ~/.local
And then use it as --prefix when you're installing a new package. For instance, if the package uses an autoconf-style configure script, you can build and install it using:
./configure --prefix="$HOME/.local"
make
make install
You need to add ~/.local to your $PATH so you can access programs there. So do that in your ~/.bashrc:
PATH=$HOME/.local:$PATH
export PATH
Open a new shell (new terminal, or log out and log in again) for the change to take effect. Or just run that same command on your existing shell. You should be able to execute the programs from ~/.local/bin direcly now.
$HOME, but the way that this is done depends on the software.