No, not "by hand". By automation provided by distribution.
And you know what it takes for this automation to be able to build a DEB out of the source tree? A "compile" command that (a) does not touch network, ever, and (b) does not expect dependencies to be downloaded into the source tree nor $HOME/.whatever, but allows them to reside somewhere in /usr/lib.
It's that simple, yet most of the language-specific package managers completely fail at this or at least make this building mode awkward.
BTW, the same stands for RPMs, and virtually any binary packaging system.