Was ist der bevorzugte Weg, um eine binary-only-Anwendung für mehr Linux-Distributionen zu veröffentlichen?

StackOverflow https://stackoverflow.com/questions/1502543

Frage

Ich habe eine Closed-Source-Linux-Anwendung, die ich verteilen möchten. Diese Anwendung wird mit wxWidgets / GTK so gibt es eine riesige Liste von Shared Libraries (60+), dass diese Anwendung abhängt.

Was ist der bevorzugte Weg, um die Anwendung und unterstützt die maximale Anzahl von distros?

veröffentlichen
  • Ist es die Anwendung für jede unterstützte Verteilung zu bauen und sie separat veröffentlichen? Dies hat den Nachteil, kompliziert ist zu bauen (ein chroot und einen Build pro Distro) und wird nur auf unterstützte Distribution arbeiten.

  • Ist es alle gemeinsam genutzten Bibliotheken im Installer hinzufügen und sie mit dem LD_LIBRARY_PATH env Variable verwenden (wie VMware)? Dies hat den Nachteil, die Größe des Installateurs zu erhöhen.

  • Ist es eine völlig statische Anwendung zu bauen? Dies ist sicherlich nicht möglich, da es einige Lizenzen brechen.

  • Ist es eine Mischung aus dieser oder einer anderen Option? Wie die meisten kommerziellen Anbieter veröffentlichen ihre eigenen grafischen (vorzugsweise GTK-basierte) Anwendung?

War es hilfreich?

Lösung

Sie sollten einen Blick auf die Linux Standard Base . Es ist speziell auf den Menschen in Ihrer Position zu helfen. Es definiert eine Umgebung, die 3rd-Party-Anwendungsentwickler sich verlassen können - so gibt es Version von libc und anderen Bibliotheken festgelegt und bestimmte Programme und Verzeichnisse leben in bekannten Orten. Alle von der Hauptvertriebsunterstützung Linux LSB.

Wie gesagt, sollten Sie wahrscheinlich immer noch das Ergebnis Paket speziell für jede Hauptverteilung -. Nur so, dass Ihre Kunden Ihre App mit ihren bekannten Paket-Management-Tool verwalten

Andere Tipps

Grundsätzlich gibt es zwei Möglichkeiten. Sie können beide wählen, wenn Sie es wünschen.

Der erste Weg ist die gemeinsame Weg, um Spiele und so tut es. Machen Sie eine lib / Unterverzeichnis, Verwendung LD_LIBARY_PATH und umfassen fast jede gemeinsam genutzte Bibliothek Sie benötigen. Das sorgt für eine schmerzfreie Erfahrung aus dem Benutzer, aber macht das Installationsprogramm größer und wahrscheinlich den Speicherbedarf größer als gut. Ich würde versuchen, nicht einmal vorher existierende Bibliotheken wiederverwenden, da sie dazu neigen würden, verschwinden, wie Upgrades an dem System vorgenommen werden.

Der zweite Weg ist Verteilungspakete zur Verfügung zu stellen. Diese sind im Allgemeinen nicht so schwer zu machen, und dann integrieren gut mit den Verteilungen und werden weiterhin viel freundlicher zu Ihren Kunden zu sein scheinen. Die 2 Nachteile sind: Sie werden diese für jede Verteilung tun müssen (Debian, Ubuntu, SuSE, RedHat wahrscheinlich ein guter Anfang), und Sie werden sie pflegen müssen: wie die Zeit vergeht, werden einige Bibliotheken nicht mehr verfügbar in einer bestimmten Version, und somit wird der Benutzer Abhängigkeitsprobleme bekommen.

In Ihrem Installateur, prüfen Sie, welche Bibliotheken installiert sind und dann laden Sie die Binärdateien für diejenigen, die es nicht sind.

Für zusätzlichen Komfort der Benutzer, wenn keine Verbindung zum Internet her, damit das Installationsprogramm einen Schlüssel generiert, die Sie auf Ihrer Website eingeben können ein ZIP-Archiv zu erhalten, die Sie dann an den Installateur einspeisen können.

Für ein Höchstmaß an Komfort, prüfen Sie, welche Bibliotheken auf der Ziel-Distribution zur Verfügung stehen und den Benutzer auffordern, das Standard-Admin-Tool zu verwenden, um sie zu installieren. Auf diese Weise werden Sie nicht den Computer mit verschiedenen Versionen derselben Bibliothek verschmutzen.

Das heißt: Es könnte klüger Ihre wertvollen Code in eine Link-Bibliothek zu setzen und dann vorsehen, dass als binäre Blob in einem Quellcode-Paket. Auf diese Weise ist Ihr Code als geschützt, wie es in einem reinen binär sein würde und die Benutzer können den Glue-Code auf ihrem Lieblings-System zusammenstellen, ohne dass Sie über Dinge zu kümmern.

Ich meine: Wie viel wert, der Teil des Codes ist, die die UI einrichtet? Wie viel werden Sie verlieren, wenn jemand, dass stiehlt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top