5 Stimmen

Welches ist der bevorzugte Weg, um eine reine Binäranwendung für mehrere Linux-Distributionen zu veröffentlichen?

Ich habe eine Closed-Source-Linux-Anwendung, die ich vertreiben möchte. Diese Anwendung verwendet wxWidgets/GTK, so dass es eine riesige Liste von gemeinsam genutzten Bibliotheken (60+) gibt, von denen diese Anwendung abhängt.

Welcher Weg wird bevorzugt, um die Anwendung zu veröffentlichen und eine möglichst große Anzahl von Distros zu unterstützen?

  • Ist es möglich, die Anwendung für jede unterstützte Distribution zu erstellen und sie separat zu veröffentlichen? Dies hat den Nachteil, dass die Erstellung kompliziert ist (ein chroot und eine Erstellung pro Distribution) und nur auf unterstützten Distributionen funktioniert.

  • Ist es, alle gemeinsam genutzten Bibliotheken im Installationsprogramm hinzuzufügen und sie mit der Umgebungsvariablen LD_LIBRARY_PATH zu verwenden (wie VMware)? Dies hat den Nachteil, dass die Größe des Installationsprogramms zunimmt.

  • Geht es darum, eine vollständig statische Anwendung zu erstellen? Das ist sicherlich nicht möglich, da es einige Lizenzen brechen würde.

  • Ist es eine Mischung davon oder eine andere Option? Wie veröffentlichen die meisten kommerziellen Anbieter ihre eigenen grafischen (vorzugsweise GTK-basierten) Anwendungen?

4voto

alex tingle Punkte 6532

Sie sollten einen Blick auf die Linux Standard Basis . Es wurde speziell entwickelt, um Menschen in Ihrer Position zu helfen. Es definiert eine Umgebung, auf die sich Anwendungsentwickler von Drittanbietern verlassen können - es gibt also eine bestimmte Version von libc und anderen Bibliotheken, und bestimmte Programme und Verzeichnisse befinden sich an bekannten Orten. Alle wichtigen Linux-Distributionen unterstützen LSB.

Trotzdem sollten Sie das Ergebnis speziell für die jeweilige Hauptdistribution paketieren, damit Ihre Kunden Ihre Anwendung mit den ihnen vertrauten Paketverwaltungswerkzeugen verwalten können.

3voto

Esben Mose Hansen Punkte 560

Im Grunde gibt es zwei Möglichkeiten. Sie können beide wählen, wenn Sie möchten.

Die erste Möglichkeit ist die übliche Art und Weise, wie Spiele und dergleichen es tun. Erstellen Sie ein Unterverzeichnis lib/, verwenden Sie LD_LIBARY_PATH und enthalten so gut wie alle gemeinsam genutzten Bibliotheken, die Sie benötigen. Das garantiert dem Benutzer eine schmerzfreie Erfahrung, macht aber das Installationsprogramm größer und wahrscheinlich auch den Speicherbedarf größer. Ich würde nicht einmal versuchen, bereits vorhandene Bibliotheken wiederzuverwenden, da sie bei Aktualisierungen des Systems in der Regel verschwinden würden.

Die zweite Möglichkeit ist die Bereitstellung von Vertriebspaketen. Diese sind in der Regel nicht so schwer zu erstellen und lassen sich gut in die Distributionen integrieren, außerdem wirken sie auf Ihre Kunden viel freundlicher. Die 2 Nachteile sind: Sie müssen dies für jede Distribution tun (Debian, Ubuntu, SuSE, redhat ist wahrscheinlich ein guter Anfang), und Sie müssen diese Pakete pflegen: Mit der Zeit werden einige Bibliotheken nicht mehr in einer bestimmten Version verfügbar sein, und somit wird der Benutzer Probleme mit Abhängigkeiten bekommen.

2voto

Aaron Digulla Punkte 308693

Überprüfen Sie in Ihrem Installationsprogramm, welche Bibliotheken installiert sind, und laden Sie dann die Binärdateien für die nicht installierten herunter.

Als zusätzlichen Komfort für Ihre Benutzer, wenn keine Internetverbindung besteht, lassen Sie das Installationsprogramm einen Schlüssel generieren, den Sie auf Ihrer Website eingeben können, um ein ZIP-Archiv zu erhalten, das Sie dann an das Installationsprogramm weiterleiten können.

Prüfen Sie, welche Bibliotheken auf der Zieldistribution verfügbar sind, und fordern Sie den Benutzer auf, sie mit dem Standard-Admin-Tool zu installieren, um den größtmöglichen Komfort zu gewährleisten. Auf diese Weise verschmutzen Sie den Computer nicht mit verschiedenen Versionen der gleichen Bibliothek.

Davon abgesehen: Es könnte klüger sein, Ihren wertvollen Code in eine Link-Bibliothek zu packen und diese dann als binären Blob in einem Quellpaket bereitzustellen. Auf diese Weise ist Ihr Code genauso geschützt wie in einer reinen Binärdatei und die Benutzer können den Glue-Code auf ihrem bevorzugten System kompilieren, ohne dass Sie sich darum kümmern müssen.

Ich meine: Wie viel ist der Teil Ihres Codes wert, der die Benutzeroberfläche einrichtet? Wie viel werden Sie verlieren, wenn jemand diesen Teil stiehlt?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X