Beschissene Antwort zuerst: Es kommt darauf an
Wenn Sie Binärdateien veröffentlichen, übernehmen die Antwort auf sein „Nein“ , es sei denn Sie verteilen alle die Libs , dass es jemals mit ihm geht (von Grund auf, was ärgerlich ist , wenn Sie ein wirklich riesiges System bieten , das auf eigenen ohnehin steht ) oder verknüpfen statisch das Äquivalent.
... aber Zauberer und Geld, und Geld Zauberer ...
IBM hat einige "allgemeine Unixish" -Installer, die mich schockiert haben, weil sie überall dort gearbeitet haben, wo ich sie ausprobiert habe: verschiedene Linuces aus verschiedenen Kernel-Generationen, OpenSolaris (oder wie es jetzt heißt), Solaris und BSD. Aber sie sind riesig. Und die Dinge, die sie zur Verfügung stellen, sind ebenso riesig. Auf diese Weise werden keine kleinen Rennwagenprogramme veröffentlicht, sondern nur die großen, unternehmerischen Dinge, die Sie von IBM erwarten würden.
Soweit es nur um Linux geht, aber in den meisten Linux-Ländern gut funktioniert, scheint dies in binärer Form möglich zu sein, wie die Vielzahl von Binärinstallationsprogrammen vom Typ "für Linux (allgemein)" zeigt, die Sie von einigen Anbietern erhalten. Auf diese Weise werden mehrere Chat-, Browser-, Spiel-, Meta-Installer usw. veröffentlicht, aber immer von großen Anbietern, die sich die Zeit nehmen können, um dies richtig zu machen. Es ist schon erstaunlich, dass sie "für Linux" sagen können und im Allgemeinen zuversichtlich sind, dass es funktionieren wird, aber dies scheint der Fall zu sein.
Aber...
Ich verteile meine Software als Quelle mit einem Build-Dienstprogramm. Ich mache das in C, Erlang, Python, Guile usw. Das gibt mir viel mehr Flexibilität, ob es läuft oder nicht, und es ist viel einfacher, ein Buildscript zu schreiben, das sicherstellt, dass die richtigen Dinge zum Zeitpunkt des Builds vorhanden sind, als in Stellen Sie sicher, dass zur Laufzeit alles vorhanden ist. Sobald dies vorhanden ist, ist es trivial, einen Auto-Updater für Ihr Programm zu schreiben, wenn Sie den Quellcode verteilen: Der Quellcode ist normalerweise viel kleiner als eine Binärdatei, die alle Abhängigkeiten und anderen Wahnsinnsfaktoren enthält. Mit dieser Methode hatte ich keine großen Probleme mit der zuverlässigen Bereitstellung unter Unices (und manchmal unter Windows, aber das ist ein bisschen mühsamer).
Genug Kinderspiel, bewaffne dich!
Wenn Sie es ernst meinen, wie srsly srs, sich nahtlos in die Linux-Welt einzufügen, verteilen Sie C-Quellen oder wenden sich an eine vollständig verwaltete Umgebung, um eine hackig schöne Sprache zu erhalten, die bereits vorgefertigt ist. Wenn Sie beispielsweise Python-Code schreiben, können Sie die Versionen überprüfen und wissen, mit welcher CPython-Version Sie arbeiten. In der Regel können Sie davon ausgehen, dass eine kompatible Version unter einem bestimmten Linux vorhanden ist (und dies ist viel einfacher zu überprüfen als eine breite Palette von C-Bibliotheken) / Versionen, die Sie möglicherweise verwenden). Erlang, Guile, Python, Perl, CL usw. sind alle sehr Einfache Ziele für diese Art der Bereitstellung, und viele von ihnen verfügen über ein zentrales Repository wie CPAN oder pip (oder was auch immer), in dem Benutzer einen Befehl ausführen können, um signierte Quellen selbst abzurufen, wenn sie dies wünschen, und wissen, dass die Dinge im Allgemeinen wie beabsichtigt funktionieren .
[Nachtrag: 1. Sogar Haskell kann dies generell über Cabal abwickeln - obwohl ich vorsichtig wäre, wenn ich das in einer Produktionsumgebung tun würde. 2. Mit Erlang gibt es völlig andere Bereitstellungsstrategien für Releases, die sicherstellen, dass Ihr Code eine vollständige Umgebung enthält. 3. Python geht mit virtuellen Umgebungen noch einen Schritt weiter. Nicht alle Laufzeiten helfen dir so viel.]
Das letzte bisschen über verwaltete Umgebungen unter Linux ist unglaublich . Und als Bonus können Sie viel allgemeinere Abhängigkeiten definieren, diese ohne zusätzlichen Aufwand automatisch auflösen lassen, kein Paket pro Distribution schreiben und sich nicht mehr darum kümmern, ob ein System 32 oder 64 ist bisschen (im Allgemeinen sowieso).