Skip to main content
1 of 3
Thomas Erker
  • 2.9k
  • 1
  • 15
  • 20

For anything that is more complex than a statically linked hello world, the answer is probably no.
Without testing it on distribution X, assume the answer is no for X.

If you want to ship your software in binary form, restrict yourself to

  • a few popular distributions for the field of use of your software (desktop, server, embedded, ...)

  • the latest version of each

Otherwise you end up with houndreds of distribution of all sizes, versions and ages (ten year old distribution are still in use and supported).

Test for those. Just a few pointer on what can (and will) go wrong otherwise:

  • The package of a tool/library you need is named differently across distributions and even versions of the same distribution

  • The libraries you need are too new or too old (wrong version). Don't assume just because your program can link, it links with the right library.

  • The same library (file on disk) is differently named on different distributions, making linking impossible

  • 32bit on 64bit: some non-essential 32bit library is moved into an extra package apart from the 32on64 environment, so you have an extra dependency just for this case.

  • Shell: don't assume your version of Bash. Don't assume even Bash.

  • Tools: don't assume some non POSIX command line tool exists anywhere.

  • Tools: don't assume the tool recognizes an option just because the GNU version of your distro does.

  • Java: are you really sure your program runs on IBM's JRE as shipped with SLES without testing it?

Bonus:

  • Instruction sets: binary compiled on your machine does not run on older hardware.
Thomas Erker
  • 2.9k
  • 1
  • 15
  • 20