Celestia: AppImage, premiers essais - un petit tutoriel

Créé le 2 août 2019  ·  28Commentaires  ·  Source: CelestiaProject/Celestia

Les AppImages sont de retour sur OBS.

par exemple.

$ 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

créer un répertoire $HOME portable et principal dépendant de la version dans le même dossier que le fichier AppImage

$ mkdir celestia-1.7.home

démarrer Celestia / obtenir de l'aide (le nom du fichier peut changer après les mises à jour)

$ ./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

créer un répertoire $HOME portable et principal dépendant de la version dans le même dossier que le fichier AppImage

$ mkdir celestia-1.6.home

démarrer Celestia / obtenir de l'aide (le nom du fichier peut changer après les mises à jour)

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

Facultatif : mises à jour via AppImageUpdate

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

créez éventuellement un répertoire $HOME portable dans le même dossier que le fichier AppImage

$ mkdir AppImageUpdate-x86_64.AppImage.home

Facultatif : Importez la clé publique gpg (gpg2 doit être installé)

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

global (sans $HOME portable pour AppImageUpdate)

$ gpg2 --import obs-munix9.pub

pour AppImageUpdate uniquement (portable $HOME, voir ci-dessus)

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


vieilles affaires

Système de construction :

  • openSUSE Leap 42.3 x86_64

Systèmes de test :

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

Version : celestia-qt, git master (avec des hacks/patchs supplémentaires et spice activés)

L'environnement de test AppImage est maintenant passé d'OBS à github/travis-ci
https://github.com/munix9/Celestia (branche appimage_build)

Les mises à jour devraient maintenant être possibles via https://github.com/AppImage/AppImageUpdate

Comment

créer un répertoire de travail (est arbitraire, peut être déplacé ou renommé plus tard)

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

téléchargez le fichier AppImage à partir de https://github.com/munix9/Celestia/releases (construction continue)

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

et le rendre exécutable

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

créer un dossier de départ portable à utiliser comme $HOME

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

Astuce : Il existe maintenant une alternative pour un répertoire $HOME portable. Si un répertoire accessible en écriture nommé celestia-qt.home existe dans le même dossier que l'AppImage, ce répertoire est défini comme portable $HOME.
Cela devrait faciliter la gestion des différents noms d'AppImage après les mises à jour.


tenter un premier départ

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

Dépannage, général


"Erreur d'enregistrement des signets" "Système de fichiers en lecture seule" à la sortie - résolu (#335)

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

Dépannage, Ubuntu 18.04.2


(celestia-qt:...): Gtk-WARNING **: ...: Impossible de localiser le moteur de thème dans module_path: "murrine", - résolu, ne devrait plus se reproduire

première installation gtk2-engines-murrine

$ sudo apt-get install gtk2-engines-murrine

solution en ajoutant la variable d'environnement GTK_PATH64 au démarrage de l'AppImage

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

ou en créant un lien symbolique

$ 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/

Utilisation d'un dossier celestia-data individuel

la voie Célestia

$ ./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

la manière AppImage

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

et maintenant celestia peut être démarré avec le chemin de données alternatif

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

Mises à jour

La procédure pour effectuer les mises à jour est toujours en cours de révision. Jusqu'à clarification, l'AppImage peut être mis à jour avec AppImageUpdate.
Conseils:

C'est tout pour le moment.

packaging

Commentaire le plus utile

Seriez-vous intéressé par un programme de mise à jour dans l'application ? Il existe un plugin Qt qui peut le faire. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Cela semble intéressant. Je vais regarder de plus près.

Tous les 28 commentaires

Cela ressemble à un cas pour un script AppRun personnalisé ?

Cela ressemble à un cas pour un script AppRun personnalisé ?

Je suis désolé, je ne comprends pas. Pouvez-vous expliquer un peu?

Avec #335 fusionné, ceci :

créer un dossier de départ portable à utiliser comme $HOME

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

créer un dossier de configuration portable à utiliser comme $XDG_CONFIG_HOME

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

et ça:

"Erreur lors de l'enregistrement des signets" "Système de fichiers en lecture seule" à la sortie

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

n'est plus nécessaire (je croise les doigts :) )

Je suis désolé, je ne comprends pas. Pouvez-vous expliquer un peu?

D'après ce que vous avez écrit, il semble que l'utilisateur doive exporter certaines variables d'environnement pour que cela fonctionne. Ce que je voulais signaler, c'est AppRun , un fichier à l'intérieur de l'AppImage que vous pouvez utiliser pour écrire votre propre script, qui exporterait les variables d'environnement nécessaires.

Faites-moi savoir si vous êtes coincé et avez besoin d'une aide concrète.

Avec #335 fusionné, ceci :

créer un dossier de départ portable à utiliser comme $HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-home
créer un dossier de configuration portable à utiliser comme $XDG_CONFIG_HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-config

et ça:

"Erreur lors de l'enregistrement des signets" "Système de fichiers en lecture seule" à la sortie
$ mkdir -m 700 ~/celestia-app/celestia-qt-latest-x86_64.AppImage.home/.config

n'est plus nécessaire (je croise les doigts :) )

Veuillez noter:

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

n'ont rien à voir avec des problèmes ou des erreurs, au contraire, ils offrent la possibilité de stocker des configurations et autres non pas sous $HOME/, $HOME/.config, $HOME/.local, mais sous les répertoires portables mentionnés ci-dessus.

Désolé, alors j'ai mal compris. En fait, c'est vraiment aussi simple que ces 3 étapes :

Tutoriel comment exécuter l'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

Ici, il fonctionne sur Xubuntu 18.04 :

celestia

__Super !__ :+1:

Je suis désolé, je ne comprends pas. Pouvez-vous expliquer un peu?

D'après ce que vous avez écrit, il semble que l'utilisateur doive exporter certaines variables d'environnement pour que cela fonctionne. Ce que je voulais signaler, c'est AppRun , un fichier à l'intérieur de l'AppImage que vous pouvez utiliser pour écrire votre propre script, qui exporterait les variables d'environnement nécessaires.

Faites-moi savoir si vous êtes coincé et avez besoin d'une aide concrète.

Ce serait certainement un avantage de nettoyer https://build.opensuse.org/project/show/OBS :AppImage, d'installer de nouvelles versions et de corriger les builds insolubles/failed/broken existants.
Mais il y en a d'autres en charge, je vais probablement faire une entrée de bogue.
J'ai également remarqué qu'AppImageUpdate ne fonctionne pas correctement avec les AppImages générées par OBS - mais je dois y regarder de plus près.

Le truc avec libmurrine.so est ennuyeux, oui, mais nous devons attendre d'autres tests des utilisateurs sur autant de plateformes que possible.

n'ont rien à voir avec des problèmes ou des erreurs, au contraire, ils offrent la possibilité de stocker des configurations et autres non pas sous $HOME/, $HOME/.config, $HOME/.local, mais sous les répertoires portables mentionnés ci-dessus.

Il semble que vous ayez raison, car, comme je le vois, si vous ne créez pas explicitement ces répertoires, l'image d'application utilise par défaut $HOME, etc.

Mais franchement, --appimage-portable-config n'est requis que pour ceux qui n'ont pas par défaut $XDG_CONFIG_HOME . Et appimage n'a pas les moyens de redéfinir $XDG_DATA_HOME .

J'ai essayé avec deux outils de mise à jour différents et aucun n'a pu le mettre à jour correctement :

https://github.com/AppImage/AppImageUpdate

aiu-fails

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

aiur

Ce message est en fait très utile @antony-jr. Nous pouvons voir:

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]

Il semble donc qu'il y ait un bogue dans https://download.opensuse.org qui le fait rediriger vers http plutôt que vers https. Cela fonctionnait; donc je soupçonne qu'il s'agit d'un bug qui a été récemment introduit.

cc @AdrianSchroeter

appimage n'a pas les moyens de redéfinir $XDG_DATA_HOME

Pensez-vous que nous devrions l'ajouter?

J'ai essayé avec deux outils de mise à jour différents et aucun n'a pu le mettre à jour correctement :

https://github.com/AppImage/AppImageUpdate

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

oui, je pensais à quelque chose comme ça, merci pour le test.

Pour celestia, AppImageUpdate serait très avantageux, vous n'avez donc pas besoin de télécharger l'intégralité du package avec chaque version.

Pour celestia, AppImageUpdate serait très avantageux, vous n'avez donc pas besoin de télécharger l'intégralité du package avec chaque version.

En effet! :+1:

appimage n'a pas les moyens de redéfinir $XDG_DATA_HOME

Pensez-vous que nous devrions l'ajouter?

Cela me semble logique.

Seriez-vous intéressé par un programme de mise à jour dans l'application ? Il existe un plugin Qt qui peut le faire. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Seriez-vous intéressé par un programme de mise à jour dans l'application ? Il existe un plugin Qt qui peut le faire. https://github.com/TheFutureShell/updatedeployqt cc @antony-jr

Cela semble intéressant. Je vais regarder de plus près.

@munix9 faites-moi savoir si vous souhaitez intégrer le programme de mise à jour dans votre application. Vous pouvez également utiliser https://antony-jr.github.io/AppImageUpdaterBridge qui peut être utilisé comme bibliothèque ou comme plugin Qt pour effectuer la mise à jour automatique. Il est entièrement écrit en Qt et respecte la boucle événementielle.

PS : updatedeployqt est toujours en alpha et il subit une opération à cœur ouvert chaque semaine donc je ne suis pas très confiant pour vous le recommander.

@ munix9 Si vous voulez voir comment fonctionne la mise à jour, voyez comment qtox l'utilise -> https://github.com/qTox/qTox-nightly-releases/releases

Après l'avoir téléchargé, ajoutez des données parasites pour déclencher une mise à jour,

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

allez dans les paramètres -> à propos -> mise à jour disponible (le bouton apparaîtra après un certain temps)

Pour info : j'ai utilisé https://github.com/antony-jr/updatedeployqt pour tester l'option de mise à jour (la balise "1", la balise "continue" ne semble pas fonctionner pour le moment).
Je pense que c'est un moyen rapide et facile d'essayer une fonctionnalité de mise à jour intégrée - le code n'a pas besoin d'être modifié - sauf pour attribuer un nom QObject au menu d'aide.
AppImageUpdaterBridge semble être une alternative intéressante - voyons ce que l'avenir nous réserve.

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

à l'exception de l'attribution d'un nom QObject pour le menu d'aide.

Vous pouvez également essayer de faire correspondre la sous-chaîne de tous les objets QMenu ou QAction dans le programme.

EDIT : Je n'ai pas ajouté de documentation car je n'ai vraiment pas le temps (mais je suis très excité) et l'outil est encore en alpha donc des changements majeurs sont encore à venir.

@ munix9 Le programme de mise à jour fonctionne très bien de mon côté. :+1:

à l'exception de l'attribution d'un nom QObject pour le menu d'aide.

Vous pouvez également essayer de faire correspondre la sous-chaîne de tous les objets QMenu ou QAction dans le programme.

EDIT : Je n'ai pas ajouté de documentation car je n'ai vraiment pas le temps (mais je suis très excité) et l'outil est encore en alpha donc des changements majeurs sont encore à venir.

@ munix9 Le programme de mise à jour fonctionne très bien de mon côté. +1

Une chose qui pourrait être mieux résolue :
Si une mise à jour est disponible, le nouveau fichier reçoit le nom par exemple

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

Cela rend les répertoires existants

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

obsolètes car ils ne sont pas automatiquement renommés.

Y a-t-il une solution pour cela?

Une chose qui pourrait être mieux résolue :
Si une mise à jour est disponible, le nouveau fichier reçoit le nom par exemple

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

@munix9 En fait, le programme de mise à jour ne le renomme que s'il existe un fichier avec le nom de fichier cible, dans le programme de mise à jour officiel, l'ancien fichier est déplacé avec l'extension .zs_old mais j'ai décidé de ne pas toucher à l'ancienne version et de laisser les utilisateurs le gérer. Nous pouvons cependant ajouter une option pour supprimer l'ancien fichier lorsque ce conflit se produit, ou nous pouvons le renommer comme le fait le programme de mise à jour officiel.

De plus, si nous continuons à déplacer l'ancienne version avec l'extension .zs_old , les autres versions de ce type seront perdues à jamais. Au cas où l'AppImage utilise le même nom pour chaque version, comme dans votre cas.

Tout d'abord, un seul des éléments suivants doit être utilisé :

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

Normalement, les applications portables sont censées conserver leur configuration par version, de sorte qu'un utilisateur puisse exécuter plusieurs versions de la même application en parallèle sans qu'elles n'interfèrent les unes avec les autres. Si vous souhaitez que différentes versions de l'application partagent le même ensemble de configuration, vous pouvez, dans le cadre d'un AppRun , faire quelque chose comme (pseudo-code non testé) :

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

Ensuite, il utilisera celestia.home s'il est là, indépendamment du nom de fichier de l'AppImage.

Est-ce que ça a du sens?

Oui, AppImage.home devrait suffire.
J'avais déjà envisagé et testé une adaptation dans l'AppRun.
Peut-être avec une solution de repli, si un version-AppImage.home n'existe pas pour la version actuelle, utilisez le général AppImage.home s'il est disponible - similaire à ce que vous suggérez.
Cela pourrait avoir du sens.
Voyons s'il y a des retours révélateurs des utilisateurs.

Bonjour,
peut-on mettre les addons ? et si oui, dans quel répertoire ?
Merci

@Amich-26 Celestia 1.7 lit ~/.celestia.cfg s'il existe.
Dans le fichier, vous pouvez ajouter ExtrasDirectories avec des répertoires avec des addons :

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

Veuillez noter que tous les répertoires doivent être répertoriés, pas seulement un autre.

En fait @munix9 ajoute un patch pour celestia.cfg , vous pouvez donc utiliser ~/.celestia pour mettre des addons.

Il est également possible d'extraire les données embarquées dans l'AppImage :
./celestia-1.7.0-git-x86_64.AppImage --celestia-extract-data

Les modules complémentaires peuvent ensuite être placés dans le dossier créé puis démarrés à l'aide de CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage .

Voir aussi ./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.

Merci ! Ça marche.

Cette page vous a été utile?
0 / 5 - 0 notes