Celestia: AppImage, erste Versuche - ein kleines Tutorial

Erstellt am 2. Aug. 2019  ·  28Kommentare  ·  Quelle: CelestiaProject/Celestia

AppImages sind wieder auf OBS.

z.B.

$ mkdir ~/AppImage
$ cd ~/AppImage

1.7.0-git

$ wget -O celestia-1.7.0-git-x86_64.AppImage https://download.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-latest-x86_64.AppImage
$ chmod 755 *.AppImage

Erstellen Sie ein portables, versionsabhängiges Hauptverzeichnis $HOME im selben Ordner wie die AppImage-Datei

$ mkdir celestia-1.7.home

Celestia starten / Hilfe holen (Dateiname kann sich nach Updates ändern)

$ ./celestia-1.7.0-git-x86_64.AppImage
$ ./celestia-1.7.0-git-x86_64.AppImage -h

1.6.2

$ wget -O celestia-1.6.2-x86_64.AppImage https://download.opensuse.org/repositories/home:/munix9/AppImage/celestia-latest-x86_64.AppImage
$ chmod 755 *.AppImage

Erstellen Sie ein portables, versionsabhängiges Hauptverzeichnis $HOME im selben Ordner wie die AppImage-Datei

$ mkdir celestia-1.6.home

Celestia starten / Hilfe holen (Dateiname kann sich nach Updates ändern)

$ ./celestia-1.6.2-x86_64.AppImage
$ ./celestia-1.6.2-x86_64.AppImage -h

Optional: Updates über AppImageUpdate

$ wget https://github.com/AppImage/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage
$ chmod 755 *.AppImage

optional ein portables $HOME-Verzeichnis im selben Ordner wie die AppImage-Datei erstellen

$ mkdir AppImageUpdate-x86_64.AppImage.home

Optional: Öffentlichen gpg-Schlüssel importieren (gpg2 muss installiert sein)

$ wget -O obs-munix9.pub https://build.opensuse.org/projects/home:munix9/public_key

global (ohne ein portables $HOME für AppImageUpdate)

$ gpg2 --import obs-munix9.pub

nur für AppImageUpdate (tragbares $HOME, siehe oben)

$ HOME=~/AppImage/AppImageUpdate-x86_64.AppImage.home gpg2 --import obs-munix9.pub


altes Zeug

Bausystem:

  • openSUSE Leap 42.3 x86_64

Testsysteme:

  • [x] Ubuntu 18.04.2 amd64 (VM)
  • [x] Xubuntu 18.04
  • [x] openSUSE Tumbleweed

Version: celestia-qt, git master (mit zusätzlichen Hacks/Patches und aktiviertem Spice)

Die AppImage-Testumgebung ist jetzt von OBS auf github/travis-ci . umgezogen
https://github.com/munix9/Celestia (Zweig appimage_build)

Updates sollten nun über https://github.com/AppImage/AppImageUpdate möglich sein

Wie man

ein Arbeitsverzeichnis erstellen (ist beliebig, kann später verschoben oder umbenannt werden)

$ mkdir ~/celestia-app
$ cd ~/celestia-app

Laden Sie die AppImage-Datei von https://github.com/munix9/Celestia/releases herunter (kontinuierlicher Build)

$ wget https://github.com/munix9/Celestia/releases/download/continuous/celestia-qt-continuous-x86_64.AppImage

und ausführbar machen

$ chmod 755 celestia-qt-continuous-x86_64.AppImage

Erstellen Sie einen tragbaren Home-Ordner, um ihn als $HOME . zu verwenden

$ ./celestia-qt-continuous-x86_64.AppImage --appimage-portable-home

Hinweis: Es gibt jetzt eine Alternative für ein portables $HOME-Verzeichnis. Wenn ein beschreibbares Verzeichnis namens celestia-qt.home im selben Ordner wie das AppImage existiert, wird dieses Verzeichnis als portables $HOME definiert.
Dies sollte die Handhabung der unterschiedlichen AppImage-Namen nach Updates erleichtern.


einen ersten Start wagen

$ ./celestia-qt-continuous-x86_64.AppImage

Fehlerbehebung, allgemein


"Fehler beim Speichern von Lesezeichen" "Schreibgeschütztes Dateisystem" beim Beenden - behoben (#335)

$ mkdir -m 700 ~/celestia-app/celestia-qt-continuous-x86_64.AppImage.home/.config

Fehlerbehebung, Ubuntu 18.04.2


(celestia-qt:...): Gtk-WARNING **: ...: Theme-Engine in module_path nicht gefunden: "murrine", - behoben, sollte nicht wieder vorkommen

Installieren Sie zuerst gtk2-engines-murrine

$ sudo apt-get install gtk2-engines-murrine

Lösung, indem Sie die GTK_PATH64 env var voranstellen, wenn das AppImage gestartet wird

$ GTK_PATH64=$GTK_PATH64:/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/ ./celestia-qt-continuous-x86_64.AppImage

oder indem Sie einen symbolischen Link erstellen

$ mkdir -p ~/celestia-app/celestia-qt-continuous-x86_64.AppImage.home/.gtk-2.0/engines
$ ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/engines/libmurrine.so ~/celestia-app/celestia-qt-continuous-x86_64.AppImage.home/.gtk-2.0/engines/

Einen individuellen Celestia-Datenordner verwenden

der Celestia-Weg

$ ./celestia-qt-continuous-x86_64.AppImage --celestia-extract-data
done: celestia data extracted to '/home/test/celestia-app/celestia-qt-continuous-x86_64.AppImage.data'
start celestia e.g. with
CELESTIA_DATA_DIR=/home/test/celestia-app/celestia-qt-continuous-x86_64.AppImage.data/ /home/test/celestia-app/celestia-qt-continuous-x86_64.AppImage

der AppImage-Weg

$ ./celestia-qt-continuous-x86_64.AppImage --appimage-extract
$ mv squashfs-root/usr/share/celestia/ my-data
$ rm -r squashfs-root

und nun kann celestia mit dem alternativen Datenpfad gestartet werden

$ CELESTIA_DATA_DIR=~/celestia-app/my-data/ ./celestia-qt-continuous-x86_64.AppImage

Aktualisierung

Das Verfahren zur Durchführung von Updates wird noch geprüft. Bis zur Klärung kann das AppImage mit AppImageUpdate aktualisiert werden.
Hinweise:

Das war es fürs Erste.

packaging

Hilfreichster Kommentar

Wären Sie daran interessiert, einen Updater in der Anwendung zu haben? Es gibt ein Qt-Plugin, das dies kann. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Das hört sich interessant an. Ich werde genauer hinschauen.

Alle 28 Kommentare

Klingt nach einem Fall für ein benutzerdefiniertes AppRun-Skript?

Klingt nach einem Fall für ein benutzerdefiniertes AppRun-Skript?

Es tut mir leid, ich verstehe nicht. Könntest du ein bisschen erklären?

Mit #335 zusammengeführt, dies:

Erstellen Sie einen tragbaren Home-Ordner, um ihn als $HOME . zu verwenden

$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-home

Erstellen Sie einen portablen Konfigurationsordner zur Verwendung als $XDG_CONFIG_HOME

$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-config

und das:

"Fehler beim Speichern von Lesezeichen" "Schreibgeschütztes Dateisystem" beim Beenden

$ mkdir -m 700 ~/celestia-app/celestia-qt-latest-x86_64.AppImage.home/.config

wird nicht mehr benötigt (Daumen drücken :) )

Es tut mir leid, ich verstehe nicht. Könntest du ein bisschen erklären?

Nach dem, was Sie geschrieben haben, muss der Benutzer bestimmte Umgebungsvariablen exportieren, damit dies funktioniert. Worauf ich hinweisen wollte, ist AppRun , eine Datei im AppImage, mit der Sie Ihr eigenes Skript schreiben können, das die erforderlichen Umgebungsvariablen exportiert.

Lassen Sie mich wissen, wenn Sie nicht weiterkommen und konkrete Hilfe benötigen.

Mit #335 zusammengeführt, dies:

Erstellen Sie einen tragbaren Home-Ordner, um ihn als $HOME . zu verwenden
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-home
Erstellen Sie einen portablen Konfigurationsordner zur Verwendung als $XDG_CONFIG_HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-config

und das:

"Fehler beim Speichern von Lesezeichen" "Schreibgeschütztes Dateisystem" beim Beenden
$ mkdir -m 700 ~/celestia-app/celestia-qt-latest-x86_64.AppImage.home/.config

wird nicht mehr benötigt (Daumen drücken :) )

Bitte beachten Sie:

$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-home
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-config

haben nichts mit Problemen oder Fehlern zu tun, im Gegenteil, sie bieten die Möglichkeit, Konfigurationen und dergleichen nicht unter $HOME/, $HOME/.config, $HOME/.local, sondern unter den oben genannten portablen Verzeichnissen zu speichern.

Entschuldigung, dann habe ich mich falsch verstanden. Tatsächlich ist es wirklich so einfach wie diese 3 Schritte:

Tutorial zum Ausführen des AppImage

wget -c https://download.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-qt-latest-x86_64.AppImage # Download
chmod +x celestia-qt-latest-x86_64.AppImage # Make executable
./celestia-qt-latest-x86_64.AppImage # Run

Hier läuft es auf Xubuntu 18.04:

celestia

__Super!__ :+1:

Es tut mir leid, ich verstehe nicht. Könntest du ein bisschen erklären?

Nach dem, was Sie geschrieben haben, muss der Benutzer bestimmte Umgebungsvariablen exportieren, damit dies funktioniert. Worauf ich hinweisen wollte, ist AppRun , eine Datei im AppImage, mit der Sie Ihr eigenes Skript schreiben können, das die erforderlichen Umgebungsvariablen exportiert.

Lassen Sie mich wissen, wenn Sie nicht weiterkommen und konkrete Hilfe benötigen.

Es wäre sicherlich von Vorteil, https://build.opensuse.org/project/show/OBS :AppImage zu bereinigen, neue Versionen zu installieren und die vorhandenen nicht auflösbaren/failed/broken Builds zu reparieren.
Aber es gibt andere, die dafür verantwortlich sind, ich werde wahrscheinlich einen Fehlereintrag machen.
Mir ist auch aufgefallen, dass AppImageUpdate mit den von OBS generierten AppImages nicht richtig funktioniert - aber das muss ich mir genauer ansehen.

Die Sache mit libmurrine.so ist zwar ärgerlich, aber wir sollten auf möglichst vielen Plattformen weitere Tests der Nutzer abwarten.

haben nichts mit Problemen oder Fehlern zu tun, im Gegenteil, sie bieten die Möglichkeit, Konfigurationen und dergleichen nicht unter $HOME/, $HOME/.config, $HOME/.local, sondern unter den oben genannten portablen Verzeichnissen zu speichern.

Scheint, dass Sie Recht haben, denn wie ich sehe, verwenden Sie, wenn Sie diese Verzeichnisse appimage nicht explizit erstellen, die Standardeinstellung $HOME usw.

Aber ehrlich gesagt ist --appimage-portable-config nur für diejenigen erforderlich, die nicht standardmäßig $XDG_CONFIG_HOME . Und appimage kann $XDG_DATA_HOME nicht neu definieren.

Ich habe es mit zwei verschiedenen Updater-Tools versucht und keines konnte es richtig aktualisieren:

https://github.com/AppImage/AppImageUpdate

aiu-fails

https://github.com/antony-jr/AppImageUpdater

aiur

Diese Nachricht ist eigentlich sehr hilfreich @antony-jr. Wir sehen:

me<strong i="15">@host</strong>:~$ strings Downloads/celestia-qt-0-Build160.1.glibc2.14-x86_64.AppImage | strings | grep zsync
zsync|https://download.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-qt-latest-x86_64.AppImage.zsync
(...)

me<strong i="16">@host</strong>:~$ wget https://download.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-qt-latest-x86_64.AppImage.zsync

--2019-08-04 20:57:11--  https://download.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-qt-latest-x86_64.AppImage.zsync
(...)
HTTP request sent, awaiting response... 302 Found
Location: http://downloadcontent.opensuse.org/repositories/home:/munix9:/unstable/AppImage/celestia-qt-0-Build160.1.glibc2.14-x86_64.AppImage.zsync [following]

Es scheint also einen Fehler in https://download.opensuse.org zu geben , der dazu führt, dass auf http statt auf https umgeleitet wird. Das hat früher funktioniert; Daher vermute ich, dass es sich um einen kürzlich eingeführten Fehler handelt.

cc @AdrianSchroeter

appimage kann $XDG_DATA_HOME nicht neu definieren

Meinst du, wir sollten es hinzufügen?

Ich habe es mit zwei verschiedenen Updater-Tools versucht und keines konnte es richtig aktualisieren:

https://github.com/AppImage/AppImageUpdate

https://github.com/CelestiaProject/Celestia/issues/333#issuecomment -518027817

Ja, so ähnlich habe ich mir gedacht, danke fürs Testen.

Für celestia wäre AppImageUpdate sehr vorteilhaft, damit man nicht bei jedem Build das ganze Paket herunterladen muss.

Für celestia wäre AppImageUpdate sehr vorteilhaft, damit man nicht bei jedem Build das ganze Paket herunterladen muss.

In der Tat! :+1:

appimage kann $XDG_DATA_HOME nicht neu definieren

Meinst du, wir sollten es hinzufügen?

Das klingt für mich logisch.

Wären Sie daran interessiert, einen Updater in der Anwendung zu haben? Es gibt ein Qt-Plugin, das dies kann. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Wären Sie daran interessiert, einen Updater in der Anwendung zu haben? Es gibt ein Qt-Plugin, das dies kann. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Das hört sich interessant an. Ich werde genauer hinschauen.

@munix9 lassen Sie es mich wissen, wenn Sie den Updater in Ihre Anwendung integrieren möchten. Sie können auch https://antony-jr.github.io/AppImageUpdaterBridge verwenden, das als Bibliothek oder als Qt-Plugin verwendet werden kann, um die Selbstaktualisierung durchzuführen. Es ist vollständig in Qt geschrieben und respektiert die Ereignisschleife.

PS : updatedeployqt befindet sich noch in der Alpha-Phase und wird jede Woche am offenen Herzen operiert, daher bin ich nicht sehr zuversichtlich, es Ihnen zu empfehlen.

@munix9 Wenn Sie sehen möchten, wie das Update funktioniert, sehen Sie, wie qtox es verwendet -> https://github.com/qTox/qTox-nightly-releases/releases

Fügen Sie nach dem Herunterladen einige Mülldaten hinzu, um ein Update auszulösen.

 $ echo "changes" >> qTox-*-x86_64.AppImage
 $ ./qTox-*-x86_64.AppImage

gehe zu Einstellungen -> Info -> Update verfügbar (Schaltfläche erscheint nach einiger Zeit)

Zu Ihrer Information: Ich habe https://github.com/antony-jr/updatedeployqt verwendet , um die Update-Option zu testen (das "1"-Tag, das "continuous"-Tag scheint im Moment nicht zu funktionieren).
Ich denke, es ist eine schnelle und einfache Möglichkeit, eine integrierte Update-Funktionalität auszuprobieren - der Code muss nicht geändert werden - außer der Zuweisung eines QObject-Namens für das Hilfemenü.
AppImageUpdaterBridge scheint eine interessante Alternative zu sein - mal sehen, was die Zukunft bringt.

https://github.com/munix9/Celestia/releases/tag/continuous
https://github.com/munix9/Celestia/blob/appimage_build/dist/appimage/fix-appimage_dir.patch#L43

mit Ausnahme der Zuweisung eines QObject-Namens für das Hilfemenü.

Sie können auch versuchen, die Teilzeichenfolge aller QMenu-Objekte oder QAction-Objekte im Programm abzugleichen.

BEARBEITEN : Ich habe keine Dokumentation hinzugefügt, da ich wirklich keine Zeit habe (aber ich bin sehr aufgeregt) und das Tool noch in der Alpha-Phase ist, so dass noch große Änderungen anstehen.

@munix9 Der Updater funktioniert auf meiner Seite hervorragend. :+1:

mit Ausnahme der Zuweisung eines QObject-Namens für das Hilfemenü.

Sie können auch versuchen, die Teilzeichenfolge aller QMenu-Objekte oder QAction-Objekte im Programm abzugleichen.

BEARBEITEN : Ich habe keine Dokumentation hinzugefügt, da ich wirklich keine Zeit habe (aber ich bin sehr aufgeregt) und das Tool noch in der Alpha-Phase ist, so dass noch große Änderungen anstehen.

@munix9 Der Updater funktioniert auf meiner Seite hervorragend. +1

Eine Sache, die vielleicht besser gelöst werden könnte:
Wenn ein Update verfügbar ist, erhält die neue Datei den Namen zB

celestia-qt-continuous-x86_64-revised-on-2019-08-29T10-57-48.AppImage

Dadurch werden die vorhandenen Verzeichnisse

celestia-qt-continuous-x86_64.AppImage.config
celestia-qt-continuous-x86_64.AppImage.home

veraltet, da sie nicht automatisch umbenannt werden.

Gibt es dafür eine Lösung?

Eine Sache, die vielleicht besser gelöst werden könnte:
Wenn ein Update verfügbar ist, erhält die neue Datei den Namen zB

celestia-qt-continuous-x86_64-revised-on-2019-08-29T10-57-48.AppImage

@munix9 Eigentlich benennt der Updater es nur um, wenn eine Datei mit dem Zieldateinamen existiert, im offiziellen Updater wird die alte Datei mit der Erweiterung .zs_old verschoben, aber ich habe mich entschieden, die alte Version nicht anzufassen und die Benutzer zu lassen damit umgehen. Wir können jedoch eine Option zum Löschen der alten Datei hinzufügen, wenn dieser Konflikt auftritt, oder wir können sie wie beim offiziellen Updater umbenennen.

Auch wenn wir alte Versionen mit der Erweiterung .zs_old , gehen andere solche Versionen für immer verloren. Falls das AppImage für jede Version denselben Namen verwendet wie in Ihrem Fall.

Zunächst sollte nur EINER der folgenden Punkte verwendet werden:

celestia-qt-continuous-x86_64.AppImage.config
celestia-qt-continuous-x86_64.AppImage.home

Normalerweise sollen portable Anwendungen ihre Konfiguration pro Version beibehalten, so dass ein Benutzer mehrere Versionen derselben Anwendung gleichzeitig ausführen kann, ohne dass sie sich gegenseitig stören. Wenn Sie möchten, dass verschiedene Versionen der Anwendung denselben Konfigurationssatz verwenden, können Sie als Teil eines benutzerdefinierten AppRun Folgendes tun (ungetesteter Pseudocode):

VERSIONLESSHOME=$(dirname "$APPIMAGE")/celestia.home
if [ -d  "$VERSIONLESSHOME" ] ; then
  export HOME=$VERSIONLESSHOME
fi

Dann wird celestia.home wenn es vorhanden ist, unabhängig vom Dateinamen des AppImage.

Macht das Sinn?

Ja, AppImage.home sollte ausreichen.
Eine Anpassung im AppRun hatte ich mir schon überlegt und getestet.
Vielleicht mit einem Fallback, wenn ein version-AppImage.home für die aktuelle Version nicht existiert, dann verwenden Sie das allgemeine AppImage.home falls verfügbar - ähnlich wie Sie es vorschlagen.
Dies kann sinnvoll sein.
Mal sehen, ob es aufschlussreiches Feedback von den Benutzern gibt.

Hallo,
Können wir die Addons installieren? und wenn ja, in welchem ​​verzeichnis?
Dankeschön

@Amich-26 Celestia 1.7 liest ~/.celestia.cfg wenn es existiert.
In der Datei können Sie ExtrasDirectories mit Verzeichnissen mit Addons hinzufügen:

{
ExtrasDirectories  [ "extras-standard" "extras" "~/celestia"]
}

Bitte beachten Sie, dass alle Verzeichnisse aufgeführt werden müssen, nicht nur ein zusätzliches.

Tatsächlich fügt @munix9 einen Patch für celestia.cfg , sodass Sie ~/.celestia , um Addons zu installieren.

Es ist auch möglich, die eingebetteten Daten im AppImage zu extrahieren:
./celestia-1.7.0-git-x86_64.AppImage --celestia-extract-data

Addons können dann in dem erstellten Ordner abgelegt und dann mit CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage gestartet werden.

Siehe auch ./celestia-1.7.0-git-x86_64.AppImage -h

Celestia 1.7.0~git - Real-time visual space simulation

Usage: ./celestia-1.7.0-git-x86_64.AppImage [OPTION]...
       CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage [OPTION]...

Celestia options:
  --conf <file>
    Alternate configuration file.
  --dir <dir>
    Alternate installation directory.
    The same can also be achieved with
    CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage
  --extrasdir <dir>
    Additional 'extras' directory.
  --fullscreen
    Start full-screen (not implemented yet).
  -l, --log <file>
    Copy console output into a file.
  -s, --nosplash
    Disable splash screen (not implemented yet).
  -u, --url <url>
    Start with the given URL (not implemented yet).
  --help
    Show celestia help (not implemented yet).

AppImage options:
  --celestia-fisheye
    Start celestia with fisheye projection (celestia-fisheye.cfg)
  --celestia-create-general-home
    Create a general home directory depending on the main version
    /tmp/celestia-1.7.home
  --celestia-extract-data
    Extract the embedded data in the directory
    /tmp/celestia-1.7.0-git-x86_64.AppImage.data
  -h, --celestia-help
    Show this help and exit.

Danke schön ! Es klappt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen