What's so difficult about this?
In a word: *nix.
Your experience is Windows which runs essentially on a single processor type where to a reasonable extent the same binary will run on most machines. *nix applications live in a vastly different world where the processor and many aspects of the operating system mean that applications typically need to be built for the target system. It isn't generally as simple as "ship the executable" in the *nix world. Pure Perl applications have a reasonable chance of working across systems, but as soon as a module using compiled code is added to the mix things tend get complicated.