Are those directories on separate partitions? If so, you can't really "move" empty space to another partition; you can resize partitions using programs like parted
, but that can be somewhat dangerous, since data may get lost.
One easier solution (or hack) I can think of right now is to find some part of /usr or /var that is especially full, and move it to another directory mounted on the root / partition, and then use a symbolic link to it. For example, if /usr/local is pretty big, you could do this (as root):
cp -R /usr/local/* /usrlocal
(if everything copied okay, then...)
rm -rf /usr/local
ln -s /usrlocal /usr/local
Then "/usr/local" will actually be a symbolic link to "/usrlocal", which is located on the root partition, and the /usr partition will have more free space.