Crappy answer first: Cela dépend
Si vous publiez des binaires, supposez que la réponse est «non», sauf si vous distribuez toutes les libs qu'il jamais implique avec elle ( à partir du sol, ce qui est gênant , sauf si vous fournissez un système vraiment énorme qui se dresse sur son propre de toute façon ) ou lient statiquement l'équivalent.
... mais les sorciers et l'argent, et les sorciers de l'argent ...
IBM a quelques installateurs "Unixish généraux" qui m'ont choqué en travaillant partout où je les ai essayés: plusieurs Linuces de plusieurs générations de noyau, OpenSolaris (ou peu importe comment on l'appelle maintenant), Solaris et BSD. Mais ils sont énormes. Et les choses qu'ils fournissent sont tout aussi énormes. Aucun petit programme de voitures de course ne sera publié de cette façon, juste les gros trucs de type entreprise que vous attendez d'IBM.
En ce qui concerne simplement rester sur Linux, mais fonctionnant bien dans la plupart des domaines Linux, cela semble possible sous forme binaire, comme en témoigne la variété des installateurs binaires de type "pour Linux (général)" que vous verrez chez certains fournisseurs. Plusieurs chats, navigateurs, jeux, méta-installateurs, etc. sont publiés de cette façon, mais toujours par d'énormes vendeurs qui peuvent passer le temps de bien faire les choses. C'est assez étonnant qu'ils puissent dire «pour Linux» et être généralement confiants que cela fonctionnera, mais cela semble être le cas.
Mais...
Je distribue mon logiciel comme source avec un utilitaire de build. Je le fais en C, Erlang, Python, Guile, etc. Cela me donne beaucoup plus de flexibilité pour savoir s'il fonctionnera ou non, et il est beaucoup plus facile d'écrire un buildscript qui s'assure que les bonnes choses existent au moment de la construction que assurez-vous que tout est en place au moment de l'exécution. Une fois que cela existe, il est trivial d'écrire un programme de mise à jour automatique pour votre programme si vous distribuez la source: la source est généralement beaucoup plus petite qu'un binaire qui inclut tous les deps et autres folie. En utilisant cette méthode, je n'ai pas eu beaucoup de mal à déployer de manière fiable sur Unices (et parfois Windows, mais c'est un peu plus une corvée).
Assez d'enfant, armez-vous!
Lorsque vous commencez sérieusement, comme srsly srs, à vous adapter sans problème au monde Linux, vous distribuez des sources C ou vous vous tournez vers un environnement entièrement géré pour un langage délicieusement piraté qui est déjà prédéfini. Si vous écrivez du code Python, par exemple, vous pouvez vérifier les versions et savoir avec quelle version CPython la vôtre fonctionne, et vous attendre généralement à ce qu'une version compatible existe sur un Linux donné (et c'est beaucoup plus facile à vérifier qu'un large balayage de C libs / versions que vous utilisez peut-être). Erlang, Guile, Python, Perl, CL, etc. sont tous très des cibles faciles pour ce type de déploiement, et beaucoup d'entre eux ont un référentiel central comme CPAN ou pip (ou autre) où les utilisateurs peuvent exécuter une commande pour extraire eux-mêmes la source signée quand ils le souhaitent, et savent que les choses fonctionneront généralement comme vous le souhaitiez .
[Addendum: 1. Même Haskell peut généralement retirer cela via Cabal - bien que je serais prudent à le faire dans un environnement de production. 2. Il existe des stratégies de déploiement de «version» totalement différentes avec Erlang qui garantissent que votre code emporte avec lui un environnement complet. 3. Python va plus loin avec les environnements virtuels; tous les temps d'exécution ne vous aident pas autant.]
Ce dernier morceau sur les environnements gérés sous Linux est vraiment génial . Et, en prime, il vous permet de définir des dépendances beaucoup plus générales, de les résoudre automatiquement sans effort supplémentaire de votre part, ne nécessite pas d'écrire un package par distribution et vous pouvez arrêter de vous soucier si un système est 32 ou 64 peu (généralement, de toute façon).