In pracitcal use I would clearly recommend to just back up the data, recreate the partitions and restore. This will be much faster.
growfs(8) has had the ability to resize a mounted file system since FreeBSD 10.0.
From the Handbook we learn that the partitions can only be resized into contiguous free space. This is why a commenter (@uzsolt) asked for the output of
gpart show -l.
So you can do all the things you want easily except relocate the partition. I know of no tool which does this automatically for you. And this would be the problem if your space is not contiguous. You will then need to create a new partition and move the data there. To be able to do that you need to have enough free space and if space is a problem this becomes painful.
If your system is in a VM then you can probably easily attach more space. If this is a physical system then I would attach a USB disk and do a backup/restore rather than a full reinstall. Or maybe it was what you were implying.
Dumping and restoring a slice (s1d) is not too scary:
dump -0Laf - /dev/ada0s1d | restore -rf -
You can see all the steps to go trough in the article Resize Existing FreeBSD Root Partition or Slice Safely Without Re-Installing or Rebooting
And a final little note: You have a couple of other options to solve your current problem with the minor upgrade. You could link to another location for
var/cache/pkg - or even better - set
PKG_CACHEDIR in pkg.conf(5)