Warum sind viele Apps nicht in Paketrepositorys verfügbar?
Dafür kann es viele Gründe geben:
- Niemand hat sich die Mühe gemacht, die App zu verpacken.
- Niemand darf die App paketieren (so wie Oracle darauf besteht, der einzige zu sein, der Java verteilt).
- Das Paket wird unter einer Lizenz veröffentlicht, die den Distributionswerten widerspricht.
- ...
Es gibt keinen einzigen Grund. Wenn Sie Ihre Lieblings-App im Paketmanager Ihrer Distribution sehen möchten, sollten Sie jeden Fall separat behandeln. Versuchen Sie, mit den Entwicklern in Kontakt zu treten (z. B. über einen IRC-Kanal oder eine Mailingliste) und fragen Sie, wie Sie beim Packen helfen könnten.
Wie installiere ich einen Tarball?
Ein Tarball (.tar.gz-Paket) kann alles enthalten. Bis Sie es tatsächlich öffnen, haben Sie keine Möglichkeit, anzunehmen, wie es installiert wird. Auch hier sollte jedes Paket anders angegangen werden.
Dokumentation suchen! Jedes (halb-) anständige Paket enthält Anweisungen zur Installation der Anwendung. Ihr erster Reflex sollte immer sein, nach einer Textdatei namens README, INSTALL oder so ähnlich zu suchen. Ein Blick auf die Website des Herausgebers kann auch hilfreich sein.
Da jedes Paket anders ist, gibt es keinen universellen Weg, jeden Tarball der Welt zu verarbeiten. Das ist, als würde man nach einem Rezept fragen, das mit allen Zutaten der Welt funktioniert. Passiert nicht.
Eine gute Kenntnis Ihres Systems, Ihrer Distribution und Ihrer Desktop-Umgebung wird Ihnen dabei helfen. Wenn Sie also beruhigt sind, werden die Dinge immer vorhersehbarer aussehen, wenn Sie Zeit in der Linux-Welt verbringen.
Ein Sonderfall:Autotools
Wenn Projekte größer werden, müssen sie einfache Möglichkeiten bieten, um vom Quellcode zur Binärdatei zur vollständigen Installation auf dem System zu wechseln. Aus diesem Grund werden sie mit einem eingebetteten Build-System ausgeliefert, einer Sammlung von Skripten, um das Notwendige zu tun.
In der Welt von Linux/Open Source/Free Software hat ein Build-System eine breitere Akzeptanz gefunden:GNU Autotools. Wenn Sie jemals mit einem Open-Source-Paket zu tun haben, besteht eine gute Chance, dass Sie Autotools verwenden.
So installieren Sie im einfachsten Fall eine mit Autotools gepackte App:
./configure
:Ein Skript, das die Ihrem System entsprechenden Makefiles generiert (es prüft auch häufig die Verfügbarkeit von Abhängigkeiten).make
:Kompilieren des Quellcodes gemäß den zuvor generierten Makefiles.make install
:Kopiert die Binärdateien an die entsprechenden Speicherorte, erstellt symbolische Links und alle anderen vom Entwickler definierten Schritte.
Notizen
configure
Skripte haben normalerweise viele Optionen, z. B. welchen Compiler verwendet werden soll oder wie das Zielverzeichnis definiert wird. Wenn Sie Flexibilität brauchen, lohnt sich ein Blick auf./configure --help
.- Auch wenn Sie sicher sind, dass es Autotools ist und Sie es wirklich gut kennen, immer Beginnen Sie mit dem Lesen von Dokumenten (README, INSTALL, ...)
Antwort auf die Aktualisierung in der Frage
Was Sie fragen, hat keine eindeutige Antwort. Jeder hier mag eine Meinung dazu haben, was eine „gute Praxis“ ausmacht, aber am Ende des Tages können nur Sie herausfinden, was für Sie funktioniert . Wenn es eine einfache Antwort gäbe, würden Sie die Frage nicht stellen. Ihre Distribution hätte es für Sie beantwortet.
Davon abgesehen hier ein paar persönliche Anmerkungen.
-
Auf meinem System reserviere ich
/usr/local/bin
für die Pakete, die von meinem Paketmanager installiert wurden. Alles, was ich von Hand kompiliere/installiere, kommt in/opt
. Dies ist ein Detail, aber es hilft, große Kopfschmerzen zu vermeiden, wenn Sie mit mehreren Versionen desselben Programms arbeiten. -
xxx.desktop
, und GUI-Probleme im Allgemeinen, sind spezifisch für die von Ihnen verwendete Desktop-Umgebung. Wenn es für Ihr System funktioniert, großartig. Aber es kann nicht auf alle unter Unix verfügbaren Umgebungen verallgemeinert werden. -
/usr/local/bin
hat den Vorteil, bereits in Ihrem PATH zu sein. Wenn Sie ein anderes Verzeichnis verwenden möchten (z. B./opt
wie ich vorschlage), stellen Sie sicher, dass Sie es in Ihren PATH aufnehmen. Wenn Sie nicht wissen, wie es geht, öffnen Sie ein Terminal und führen Sie Folgendes in einem Terminal aus (nicht die schönste Art, es zu tun, aber ohne etwas über Ihr System zu wissen, kann ich nichts anderes vorschlagen):echo 'export PATH=$PATH:/opt' >> ~/.bashrc
Ich denke, Sie müssen mit sich selbst klären, womit Sie es mit "registrieren" möchten .
Um es zu erklären -- und ich versuche nicht, schlau zu sein -- "Linux" ist natürlich der Kernel, und der Kernel weiß nichts von der Userspace-Software auf Ihrem System außer init und hat kein Interesse daran. Worüber reden wir hier also?
Sie erwähnen eine Reihe verschiedener Distributionen. Manchmal erstelle ich Software aus dem Quellcode, obwohl sie im Repository verfügbar ist, weil ich einige Konfigurationsoptionen festlegen möchte, die nicht in der Binärdatei der Distribution festgelegt sind. Das einzige Problem, das ich dabei habe, ist, dass ich, wenn das Paket eine Voraussetzung für etwas anderes ist, dies tatsächlich beim Paketsystem registrieren muss um zu vermeiden, dass das Distributionspaket versehentlich über dem von mir erstellten installiert wird. Auf Fedora/rpm-basierten Systemen erfolgt dies mit rpm -i --justdb <package>
. Ich mache das nicht auf debian/apt-basierten Systemen; Stattdessen erzwinge ich einfach Installationen nach Bedarf, was vielleicht faul ist - es scheint einen schöneren Weg zu geben, ein Dummy-Paket zu erstellen, das vorgibt, alle Voraussetzungen zu erfüllen. Das ähnelt dem Vorschlag von m0nhawk, tatsächlich ein Paket aus der .tar.gz-Quelle zu erstellen – außer dass es etwas einfacher ist (ich bin ehrlich und sage, dass ich den Vorschlag von m0nhawk überhaupt nicht mag). P>
Es scheint, dass Sie neben dem mit dem Verpackungssystem noch einige andere Probleme haben. Es ist mir nicht klar, was das ist, obwohl Sie die Desktop-Umgebung (z. B. Gnome) erwähnen. Diese sind heterogen, daher gibt es einfach keine einzige Antwort auf die Frage „Wie mache ich das unter Linux“ – es ist nicht einmal eine Frage „Wie mache ich das unter Ubuntu“ oder „Wie mache ich das unter Linux“. gentoo" -- es ist eine Frage von "wie mache ich das für den Gnome-Desktop" oder "wie mache ich das auf dem XFCE-Desktop" usw. Meiner Meinung nach ist das einzige Problem dort die Frage der Startprogramme, die Sie erwähnen, die ich würde gerne glauben, dass jede DE eine einfache Möglichkeit bietet, dies zu tun (aber es wird nicht genau gleich sein, weil sie unterschiedlich sind). Es gibt möglicherweise auch das Problem, dass etwas einen Standard für den Umgang mit Dateien bereitstellt - ich denke, diese Frage lautet "Wie registriere ich einen Befehl in meinem Dateibrowser" (und Dateibrowser unter Linux sind ebenfalls eine heterogene Sammlung). P>
Dann gibt es Dienste, die vom Init-System verwaltet werden (zB systemd oder upstart). Diese Frage ist also eigentlich eine Reihe verwandter Fragen, die sich möglicherweise auf Folgendes beziehen:
- das Verpackungssystem, zB apt oder yum
- das Init-System, zB systemd oder upstart
- die Desktop-Umgebung, zB kde oder unity
- der Dateibrowser, zB Nautilus oder Konqueror
- ?????
Ein Grund dafür, dass es keine einfache einheitliche Lösung geben kann (obwohl der XDG-Standard vielleicht stellen einige Teile davon zur Verfügung) ist, dass "Linux" kein einfaches, einheitliches Betriebssystem ist, und ich kann mir vorstellen, dass die überwiegende Mehrheit seiner Benutzer es so bevorzugt. Ich benutze oft überhaupt kein DE und ich benutze nie den Dateibrowser, mit dem sie geliefert werden, etc.
Auch hier versuche ich wirklich zu helfen und nicht nur zu dozieren:Wenn es Probleme gibt, die Sie hier lösen möchten, müssen Sie genauer überlegen, was diese Probleme sind und welche Software tatsächlich damit zu tun hat (jenseits von "linux "), wenn Sie sie lösen möchten.
Ich denke, der Hauptgrund für Ihr Gesamtproblem ist, dass ein Linux-System für sich genommen keine "Registrierung" als solche enthält. Eine ausführbare Datei ist alles, was Sie wirklich brauchen, damit etwas läuft. Wenn Sie nicht den vollständigen Pfad zur ausführbaren Datei angeben möchten, suchen die meisten Shells in den Verzeichnissen, die in der $PATH-Variablen Ihrer Umgebung aufgeführt sind. Mit verlinkten Bibliotheken und so weiter kann es etwas komplexer werden, aber normalerweise müssen Sie nicht so weit eintauchen.
Verschiedene Linux-Distributionen haben sich auf verschiedene Dateisystem-Layouts und Paketverwaltungssysteme standardisiert, darin liegt das Problem. Die Redhats verwenden rpm, Debian/Ubuntu verwenden deb-Pakete. Auch Arch ging seinen eigenen Weg. Aus der Perspektive von Softwareprojekten sind dies wahrscheinlich die einzigen Punkte, die Sie zu erstellen beginnen, es sei denn, Sie möchten in eine Distribution aufgenommen werden, Ihre Benutzerbasis befindet sich vollständig in einer Distribution oder einem kommerziellen Produkt, das auf eine einfache Installation für alle abzielt verschiedene Pakete.
Tatsächlich eine Quell-tar.gz, die mit gcc
erstellt wird ist wahrscheinlich die beste Definition eines gemeinsamen "Linux-Pakets". Ein Linux-Kernel mit einigen GNU-Hilfsprogrammen und GCC, ungefähr der gemeinsame Nenner zwischen all den verschiedenen Varianten von Linux-basierten Betriebssystemen, die Sie bekommen können.
Ich würde nicht so weit gehen zu sagen, dass "so wenige" Dinge als Pakete verfügbar sind, weil etwas Bestimmtes, nach dem Sie suchen, dies nicht ist. (Oder vielleicht hat sich der Distributor entschieden, sich nicht mit all diesem Paket-Rummel zu beschäftigen? Wie Chrome und sein eigener Update-Prozess). Es gibt so viele Pakete für so viele verschiedene Paketsysteme für so viele Architekturen für so viel freie Software, dass es nicht lustig ist.
Wenn Sie etwas gebaut haben, das nicht als Paket für Ihre Linux-Distribution bereitgestellt wird oder die Option unterstützt, als Paket zu bauen, ist der beste Weg, es als echtes Paket zu "registrieren", ein Paket dafür zu bauen und zu definieren, wo alle Die Dateien sollten basierend auf dem von Ihnen gewählten Paketsystem gehen und auf diese Weise installiert werden. Seien Sie eine Seele und bringen Sie Ihre Verpackungsarbeit in das Projekt ein, damit andere davon profitieren können.
Es gibt verschiedene Anleitungen im Internet zum Erstellen von Paketen. Debian ist einer von ihnen.
Wenn Sie nur ein kompiliertes Paket ausführen möchten, fügen Sie vielleicht den Binärpfad zu Ihrem $PATH
hinzu ?
Wenn Sie etwas anderes tun, was ist es?