Celestia: AppImage, primeiras tentativas - um pequeno tutorial

Criado em 2 ago. 2019  ·  28Comentários  ·  Fonte: CelestiaProject/Celestia

AppImages está de volta ao OBS.

por exemplo.

$ 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

crie um diretório $ HOME portátil e dependente da versão principal na mesma pasta do arquivo AppImage

$ mkdir celestia-1.7.home

iniciar Celestia / obter ajuda (o nome do arquivo pode mudar após as atualizações)

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

crie um diretório $ HOME portátil e dependente da versão principal na mesma pasta do arquivo AppImage

$ mkdir celestia-1.6.home

iniciar Celestia / obter ajuda (o nome do arquivo pode mudar após as atualizações)

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

Opcional: atualizações via AppImageUpdate

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

opcionalmente, crie um diretório $ HOME portátil na mesma pasta do arquivo AppImage

$ mkdir AppImageUpdate-x86_64.AppImage.home

Opcional: importe a chave pública gpg (gpg2 deve ser instalado)

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

global (sem um $ HOME portátil para AppImageUpdate)

$ gpg2 --import obs-munix9.pub

apenas para AppImageUpdate (portátil $ HOME, veja acima)

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


coisas antigas

Sistema de compilação:

  • openSUSE Leap 42.3 x86_64

Sistemas de teste:

  • [x] Ubuntu 18.04.2 amd64 (VM)
  • [x] Xubuntu 18,04
  • [x] openSUSE Tumbleweed

Versão: celestia-qt, git master (com hacks / patches adicionais e especiarias habilitadas)

O ambiente de teste AppImage agora mudou de OBS para github / travis-ci
https://github.com/munix9/Celestia (branch appimage_build)

Agora, as atualizações devem ser possíveis por meio de https://github.com/AppImage/AppImageUpdate

Como

criar um diretório de trabalho (é arbitrário, pode ser movido ou renomeado posteriormente)

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

baixe o arquivo AppImage em https://github.com/munix9/Celestia/releases (construção contínua)

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

e torná-lo executável

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

crie uma pasta pessoal portátil para usar como $ HOME

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

Dica: agora existe uma alternativa para um diretório $ HOME portátil. Se um diretório gravável denominado celestia-qt.home existir na mesma pasta que AppImage, esse diretório será definido como $ HOME portátil.
Isso deve tornar mais fácil lidar com os diferentes nomes de AppImage após as atualizações.


arriscar um primeiro começo

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

Solução de problemas, geral


"Erro ao salvar favoritos" "Sistema de arquivos somente leitura" ao sair - resolvido (# 335)

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

Solução de problemas, Ubuntu 18.04.2


(celestia-qt: ...): Gtk-WARNING **: ...: Não foi possível localizar o mecanismo do tema em module_path: "murrine", - resolvido, não deve ocorrer novamente

primeiro instale gtk2-engines-murrine

$ sudo apt-get install gtk2-engines-murrine

solução adicionando a var GTK_PATH64 env quando o AppImage é iniciado

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

ou criando um link simbólico

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

Usando uma pasta individual celestia-data

o jeito Celestia

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

a maneira AppImage

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

e agora o celestia pode ser iniciado com o caminho de dados alternativo

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

Atualizações

O procedimento para realizar atualizações ainda está em revisão. Até o esclarecimento, o AppImage pode ser atualizado com AppImageUpdate.
Dicas:

Por enquanto é isso.

packaging

Comentários muito úteis

Você estaria interessado em ter um atualizador dentro do aplicativo? Existe um plugin Qt que pode fazer isso. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Isso parece interessante. Vou dar uma olhada mais de perto.

Todos 28 comentários

Parece um caso para um script AppRun personalizado?

Parece um caso para um script AppRun personalizado?

Me desculpe, eu não entendo. Você poderia explicar um pouco?

Com o nº 335 mesclado, este:

crie uma pasta pessoal portátil para usar como $ HOME

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

crie uma pasta de configuração portátil para usar como $ XDG_CONFIG_HOME

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

e isto:

"Erro ao salvar favoritos" "Sistema de arquivos somente leitura" ao sair

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

não é mais necessário (cruzar os dedos :))

Me desculpe, eu não entendo. Você poderia explicar um pouco?

Pelo que você escreveu, parece que o usuário precisa exportar certas variáveis ​​de ambiente para fazer isso funcionar. O que eu queria apontar é AppRun , um arquivo dentro do AppImage que você pode usar para escrever seu próprio script, que exportaria as variáveis ​​de ambiente necessárias.

Deixe-me saber se você estiver travado e precisar de ajuda concreta.

Com o nº 335 mesclado, este:

crie uma pasta pessoal portátil para usar como $ HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-home
crie uma pasta de configuração portátil para usar como $ XDG_CONFIG_HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-portable-config

e isto:

"Erro ao salvar favoritos" "Sistema de arquivos somente leitura" ao sair
$ mkdir -m 700 ~ / celestia-app / celestia-qt-latest-x86_64.AppImage.home / .config

não é mais necessário (cruzar os dedos :))

Observe:

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

não têm nada a ver com problemas ou erros, pelo contrário, oferecem a possibilidade de armazenar configurações e similares não em $ HOME /, $ HOME / .config, $ HOME / .local, mas nos diretórios portáteis mencionados acima.

Desculpe, então eu estava entendendo mal. Na verdade, é tão simples quanto essas 3 etapas:

Tutorial de como executar o 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

Aqui, ele está sendo executado no Xubuntu 18.04:

celestia

__Impressionante! __: +1:

Me desculpe, eu não entendo. Você poderia explicar um pouco?

Pelo que você escreveu, parece que o usuário precisa exportar certas variáveis ​​de ambiente para fazer isso funcionar. O que eu queria apontar é AppRun , um arquivo dentro do AppImage que você pode usar para escrever seu próprio script, que exportaria as variáveis ​​de ambiente necessárias.

Deixe-me saber se você estiver travado e precisar de ajuda concreta.

Certamente seria uma vantagem limpar https://build.opensuse.org/project/show/OBS : AppImage, instalar novas versões e consertar as compilações existentes não resolvidas / com falha / quebradas.
Mas há outros responsáveis, provavelmente farei uma entrada de bug.
Também notei que AppImageUpdate não funciona corretamente com o AppImages gerado pelo OBS - mas preciso dar uma olhada nisso.

A coisa com libmurrine.so é irritante, sim, mas devemos esperar por mais testes dos usuários em tantas plataformas quanto possível.

não têm nada a ver com problemas ou erros, pelo contrário, oferecem a possibilidade de armazenar configurações e similares não em $ HOME /, $ HOME / .config, $ HOME / .local, mas nos diretórios portáteis mencionados acima.

Parece que você está correto, porque, como vejo, se você não criar explicitamente esses dirs appimage, use o padrão $ HOME etc.

Mas, falando francamente, --appimage-portable-config exigido apenas para aqueles que não possuem $XDG_CONFIG_HOME não padrão. E appimage não tem meios para redefinir $XDG_DATA_HOME .

Tentei com duas ferramentas de atualização diferentes e nenhuma delas foi capaz de atualizá-lo corretamente:

https://github.com/AppImage/AppImageUpdate

aiu-fails

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

aiur

Esta mensagem é realmente muito útil @ antony-jr. Nós podemos ver:

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]

Portanto, parece que há um bug em https://download.opensuse.org que o faz redirecionar para http em vez de https. Isso costumava funcionar; portanto, suspeito que seja um bug que foi introduzido recentemente.

cc @AdrianSchroeter

appimage não tem meios para redefinir $ XDG_DATA_HOME

Você acha que devemos adicioná-lo?

Tentei com duas ferramentas de atualização diferentes e nenhuma delas foi capaz de atualizá-lo corretamente:

https://github.com/AppImage/AppImageUpdate

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

sim, eu estava pensando algo assim, obrigado pelo teste.

Para celestia, AppImageUpdate seria muito vantajoso, então você não precisa baixar o pacote completo com cada build.

Para celestia, AppImageUpdate seria muito vantajoso, então você não precisa baixar o pacote completo com cada build.

De fato! : +1:

appimage não tem meios para redefinir $ XDG_DATA_HOME

Você acha que devemos adicioná-lo?

Isso parece lógico para mim.

Você estaria interessado em ter um atualizador dentro do aplicativo? Existe um plugin Qt que pode fazer isso. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Você estaria interessado em ter um atualizador dentro do aplicativo? Existe um plugin Qt que pode fazer isso. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Isso parece interessante. Vou dar uma olhada mais de perto.

@ munix9 deixe-me saber se você deseja integrar o atualizador em seu aplicativo. Você também pode usar https://antony-jr.github.io/AppImageUpdaterBridge que pode ser usado como uma biblioteca ou como um plugin Qt para fazer a atualização automática. É inteiramente escrito em Qt e respeita o loop de eventos.

PS : updatedeployqt ainda está em alpha e passa por uma cirurgia de coração aberto todas as semanas, então não estou muito confiante para recomendá-lo a você.

@ munix9 Se você quiser ver como a atualização funciona, veja como qtox a usa -> https://github.com/qTox/qTox-nightly-releases/releases

Depois de baixá-lo, adicione alguns dados de lixo para acionar uma atualização,

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

vá para configurações -> sobre -> atualização disponível (o botão aparecerá depois de algum tempo)

Para sua informação: usei https://github.com/antony-jr/updatedeployqt para testar a opção de atualização (a tag "1", a tag "contínua" parece não funcionar no momento).
Acho que é uma maneira rápida e fácil de experimentar uma funcionalidade de atualização integrada - o código não precisa ser alterado - exceto para atribuir um nome de QObject para o menu de ajuda.
AppImageUpdaterBridge parece ser uma alternativa interessante - vamos ver o que o futuro reserva.

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

exceto para atribuir um nome de QObject para o menu de ajuda.

Você também pode tentar combinar a substring de todos os objetos QMenu ou objetos QAction no programa.

EDIT : Eu não adicionei nenhuma documentação porque eu realmente não tenho tempo (mas estou muito animado) e a ferramenta ainda está em alfa, então grandes mudanças ainda estão por vir.

@ munix9 O atualizador funciona muito bem do meu lado. : +1:

exceto para atribuir um nome de QObject para o menu de ajuda.

Você também pode tentar combinar a substring de todos os objetos QMenu ou objetos QAction no programa.

EDIT : Eu não adicionei nenhuma documentação porque eu realmente não tenho tempo (mas estou muito animado) e a ferramenta ainda está em alfa, então grandes mudanças ainda estão por vir.

@ munix9 O atualizador funciona muito bem do meu lado. +1

Algo que pode ser melhor resolvido:
Se uma atualização estiver disponível, o novo arquivo recebe o nome, por exemplo

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

Isso torna os diretórios existentes

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

obsoleto porque eles não são renomeados automaticamente.

Existe uma solução para isso?

Algo que pode ser melhor resolvido:
Se uma atualização estiver disponível, o novo arquivo recebe o nome, por exemplo

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

@ munix9 Na verdade, o atualizador o renomeia apenas se existir um arquivo com o nome de destino; no atualizador oficial, o arquivo antigo é movido com a extensão .zs_old mas decidi não mexer na versão antiga e deixar os usuários lidar com isso. Podemos, no entanto, adicionar uma opção para excluir o arquivo antigo quando esse conflito ocorrer ou podemos renomeá-lo da mesma forma que o atualizador oficial.

Além disso, se continuarmos movendo a versão antiga com a extensão .zs_old , a outra versão será perdida para sempre. Caso o AppImage use o mesmo nome para todas as versões como no seu caso.

Em primeiro lugar, apenas UM dos seguintes deve ser usado:

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

Normalmente, os aplicativos portáteis devem manter sua configuração por versão, para que um usuário possa executar várias versões do mesmo aplicativo ao lado, sem que interfiram entre si. Se quiser que diferentes versões do aplicativo compartilhem o mesmo conjunto de configuração, você pode, como parte de um AppRun , fazer algo como (pseudocódigo não testado):

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

Então ele usará celestia.home se estiver lá, independente do nome do arquivo do AppImage.

Isso faz sentido?

Sim, AppImage.home deve ser suficiente.
Já havia considerado e testado uma adaptação no AppRun.
Talvez com um fallback, se version-AppImage.home não existir para a versão atual, use o AppImage.home se disponível - semelhante ao que você sugere.
Isso pode fazer sentido.
Vamos ver se há algum feedback revelador dos usuários.

Olá,
podemos colocar os addons? e em caso afirmativo, em qual diretório?
Obrigado

@ Amich-26 Celestia 1.7 lê ~/.celestia.cfg se existir.
No arquivo, você pode adicionar ExtrasDirectories com diretórios com complementos:

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

Observe que todos os diretórios devem ser listados, não apenas um adicional.

Na verdade, @ munix9 adiciona um patch para celestia.cfg , então você pode usar ~/.celestia para colocar addons.

Também é possível extrair os dados incorporados no AppImage:
./celestia-1.7.0-git-x86_64.AppImage --celestia-extract-data

Os complementos podem ser colocados na pasta criada e, em seguida, iniciados com CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage .

Veja também ./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.

obrigada ! Funciona.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

shujaatak picture shujaatak  ·  9Comentários

CelestiaProject picture CelestiaProject  ·  8Comentários

drzraf picture drzraf  ·  20Comentários

Panterstruck picture Panterstruck  ·  9Comentários

furquan-lp picture furquan-lp  ·  8Comentários