Celestia: AppImage, первые попытки - небольшой учебник

Созданный на 2 авг. 2019  ·  28Комментарии  ·  Источник: CelestiaProject/Celestia

AppImages снова в OBS.

например.

$ 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

создать переносимый, зависящий от версии основной каталог $ HOME в той же папке, что и файл AppImage

$ mkdir celestia-1.7.home

запустить Celestia / получить помощь (имя файла может измениться после обновлений)

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

создать переносимый, зависящий от версии основной каталог $ HOME в той же папке, что и файл AppImage

$ mkdir celestia-1.6.home

запустить Celestia / получить помощь (имя файла может измениться после обновлений)

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

Необязательно: обновления через AppImageUpdate

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

при желании создайте переносной каталог $ HOME в той же папке, что и файл AppImage

$ mkdir AppImageUpdate-x86_64.AppImage.home

Необязательно: Импортируйте открытый ключ gpg (gpg2 должен быть установлен)

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

global (без переносного $ HOME для AppImageUpdate)

$ gpg2 --import obs-munix9.pub

только для AppImageUpdate (переносимый $ HOME, см. выше)

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


старые вещи

Система сборки:

  • openSUSE Leap 42.3 x86_64

Системы тестирования:

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

Версия: celestia-qt, git master (с дополнительными хаками / патчами и включенными специями)

Тестовая среда AppImage теперь перенесена с OBS на github / travis-ci.
https://github.com/munix9/Celestia (ветка appimage_build)

Теперь обновления должны быть доступны через https://github.com/AppImage/AppImageUpdate.

Как

создать рабочий каталог (произвольно, может быть перемещен или переименован позже)

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

загрузите файл AppImage с https://github.com/munix9/Celestia/releases (непрерывная сборка)

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

и сделать его исполняемым

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

создать переносную домашнюю папку для использования в качестве $ HOME

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

Подсказка: теперь есть альтернатива переносному каталогу $ HOME. Если доступный для записи каталог с именем celestia-qt.home существует в той же папке, что и AppImage, этот каталог определяется как переносимый $ HOME.
Это должно упростить обработку разных имен AppImage после обновлений.


рискнуть сделать первый старт

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

Устранение неполадок, общие


«Ошибка сохранения закладок» «Файловая система только для чтения» при выходе - решено (# 335)

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

Устранение неполадок, Ubuntu 18.04.2


(celestia-qt: ...): Gtk-WARNING **: ...: Невозможно найти движок темы в module_path: "murrine", - решено, больше не должно повторяться

сначала установите gtk2 -otors-murrine

$ sudo apt-get install gtk2-engines-murrine

решение, добавив GTK_PATH64 env var при запуске AppImage

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

или создав символическую ссылку

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

Использование отдельной папки celestia-data

путь Селестии

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

способ AppImage

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

и теперь celestia можно запустить с альтернативным путем к данным

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

Обновления

Процедура обновления все еще находится на рассмотрении. До уточнения AppImage можно обновлять с помощью AppImageUpdate.
Подсказки:

На этом пока все.

packaging

Самый полезный комментарий

Хотели бы вы иметь средство обновления внутри приложения? Есть плагин Qt, который может это сделать. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Это звучит интересно. Я посмотрю повнимательнее.

Все 28 Комментарий

Похоже на то, что нужен собственный сценарий AppRun?

Похоже на то, что нужен собственный сценарий AppRun?

Простите, я не понимаю. Не могли бы вы немного объяснить?

После слияния # 335 это:

создать переносную домашнюю папку для использования в качестве $ HOME

$ ./celestia-qt-latest-x86_64.AppImage --appimage-портативный-дом

создать переносную папку конфигурации для использования как $ XDG_CONFIG_HOME

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

и это:

«Ошибка при сохранении закладок» «Файловая система только для чтения» при выходе

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

больше не требуется (скрещиваю пальцы :))

Простите, я не понимаю. Не могли бы вы немного объяснить?

Из того, что вы написали, похоже, что пользователь должен экспортировать определенные переменные среды, чтобы эта работа работала. Я хотел указать на AppRun , файл внутри AppImage, который вы можете использовать для написания собственного скрипта, который будет экспортировать необходимые переменные среды.

Дайте мне знать, если вы застряли и вам нужна конкретная помощь.

После слияния # 335 это:

создать переносную домашнюю папку для использования в качестве $ HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-портативный-дом
создать переносную папку конфигурации для использования как $ XDG_CONFIG_HOME
$ ./celestia-qt-latest-x86_64.AppImage --appimage-Portable-config

и это:

«Ошибка при сохранении закладок» «Файловая система только для чтения» при выходе
$ mkdir -m 700 ~ / celestia-app / celestia-qt-latest-x86_64.AppImage.home / .config

больше не требуется (скрещиваю пальцы :))

Пожалуйста, обрати внимание:

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

не имеют ничего общего с проблемами или ошибками, напротив, они предлагают возможность хранить конфигурации и т.п. не в $ HOME /, $ HOME / .config, $ HOME / .local, а в вышеупомянутых переносимых каталогах.

Извините, тогда я ошибся. На самом деле это так же просто, как эти 3 шага:

Учебник по запуску 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

Вот он работает на Xubuntu 18.04:

celestia

__ Замечательно! __: +1:

Простите, я не понимаю. Не могли бы вы немного объяснить?

Из того, что вы написали, похоже, что пользователь должен экспортировать определенные переменные среды, чтобы эта работа работала. Я хотел указать на AppRun , файл внутри AppImage, который вы можете использовать для написания собственного скрипта, который будет экспортировать необходимые переменные среды.

Дайте мне знать, если вы застряли и вам нужна конкретная помощь.

Несомненно, было бы преимуществом очистить https://build.opensuse.org/project/show/OBS : AppImage, установить новые версии и исправить существующие неразрешимые / неудачные / сломанные сборки.
Но есть другие ответственные, я, наверное, сделаю запись об ошибке.
Я также заметил, что AppImageUpdate некорректно работает с AppImages, сгенерированными OBS, но мне нужно взглянуть на это повнимательнее.

Дело в libmurrine.so раздражает, да, но нам следует дождаться дальнейших тестов пользователей на как можно большем количестве платформ.

не имеют ничего общего с проблемами или ошибками, напротив, они предлагают возможность хранить конфигурации и т.п. не в $ HOME /, $ HOME / .config, $ HOME / .local, а в вышеупомянутых переносимых каталогах.

Кажется, вы правы, потому что, как я вижу, если вы явно не создаете эти dirs appimage, используйте по умолчанию $ HOME и т. Д.

Но честно говоря --appimage-portable-config требуется только тем, у кого не по умолчанию $XDG_CONFIG_HOME . И у appimage нет средств для переопределения $XDG_DATA_HOME .

Я пробовал использовать два разных инструмента для обновления, и ни один из них не смог правильно его обновить:

https://github.com/AppImage/AppImageUpdate

aiu-fails

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

aiur

Это сообщение на самом деле очень полезно @ antony-jr. Мы можем увидеть:

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]

Таким образом, похоже, что в https://download.opensuse.org есть ошибка, из-за которой он перенаправляется на http, а не на https. Раньше это работало; поэтому я подозреваю, что это недавно появившаяся ошибка.

Копия @AdrianSchroeter

appimage не может переопределить $ XDG_DATA_HOME

Как вы думаете, нам стоит его добавить?

Я пробовал использовать два разных инструмента для обновления, и ни один из них не смог правильно его обновить:

https://github.com/AppImage/AppImageUpdate

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

да, я думал что-то в этом роде, спасибо за тестирование.

Для celestia AppImageUpdate было бы очень выгодно, поэтому вам не нужно загружать весь пакет с каждой сборкой.

Для celestia AppImageUpdate было бы очень выгодно, поэтому вам не нужно загружать весь пакет с каждой сборкой.

Действительно! : +1:

appimage не может переопределить $ XDG_DATA_HOME

Как вы думаете, нам стоит его добавить?

Для меня это звучит логично.

Хотели бы вы иметь средство обновления внутри приложения? Есть плагин Qt, который может это сделать. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Хотели бы вы иметь средство обновления внутри приложения? Есть плагин Qt, который может это сделать. https://github.com/TheFutureShell/updatedeployqt cc @ antony-jr

Это звучит интересно. Я посмотрю повнимательнее.

@ munix9 дайте мне знать, если вы хотите интегрировать https://antony-jr.github.io/AppImageUpdaterBridge, который можно использовать как библиотеку или как плагин Qt для самостоятельного обновления. Он полностью написан на Qt и учитывает цикл событий.

PS : updatedeployqt все еще находится на стадии альфа-тестирования, и каждую неделю ему делают операцию на открытом сердце, поэтому я не очень уверен, чтобы рекомендовать его вам.

@ munix9 Если вы хотите увидеть, как работает обновление, посмотрите, как qtox использует его -> https://github.com/qTox/qTox-nightly-releases/releases

После загрузки добавьте данные мусора, чтобы запустить обновление,

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

зайти в настройки -> о -> доступно обновление (кнопка появится через некоторое время)

К вашему сведению: я использовал https://github.com/antony-jr/updatedeployqt, чтобы проверить параметр обновления (тег «1», тег «непрерывный», похоже, в настоящий момент не работает).
Я думаю, что это быстрый и простой способ опробовать встроенную функцию обновления - код не нужно менять - за исключением назначения имени QObject для меню справки.
AppImageUpdaterBridge кажется интересной альтернативой - посмотрим, что нас ждет в будущем.

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

за исключением назначения имени QObject для меню справки.

Вы также можете попробовать сопоставить подстроки всех объектов QMenu или объектов QAction в программе.

РЕДАКТИРОВАТЬ : Я не добавлял никакой документации, так как у меня действительно нет времени (но я очень взволнован), а инструмент все еще находится в альфа-версии, поэтому серьезные изменения еще впереди.

@ munix9 Программа обновления отлично работает на моей стороне. : +1:

за исключением назначения имени QObject для меню справки.

Вы также можете попробовать сопоставить подстроки всех объектов QMenu или объектов QAction в программе.

РЕДАКТИРОВАТЬ : Я не добавлял никакой документации, так как у меня действительно нет времени (но я очень взволнован), а инструмент все еще находится в альфа-версии, поэтому серьезные изменения еще впереди.

@ munix9 Программа обновления отлично работает на моей стороне. +1

Вещь, которую можно было бы решить лучше:
Если доступно обновление, то новый файл получает имя, например

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

Это делает существующие каталоги

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

устарели, потому что они не переименовываются автоматически.

Есть ли решение для этого?

Вещь, которую можно было бы решить лучше:
Если доступно обновление, то новый файл получает имя, например

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

@ munix9 На самом деле программа обновления переименовывает ее, только если файл с целевым именем файла существует, в официальной программе обновления старый файл перемещается с расширением .zs_old но я решил не трогать старую версию и позволить пользователям справиться. Однако мы можем добавить возможность удалить старый файл при возникновении этого конфликта или переименовать его, как это делает официальная программа обновления.

Также, если мы продолжим перемещать старую версию с расширением .zs_old , другая такая версия будет потеряна навсегда. В случае, если AppImage использует одно и то же имя для каждого выпуска, как в вашем случае.

Прежде всего, следует использовать только ОДИН из следующего:

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

Обычно переносимые приложения должны сохранять свою конфигурацию для каждой версии, чтобы пользователь мог запускать несколько версий одного и того же приложения одновременно, не мешая друг другу. Если вы хотите, чтобы разные версии приложения использовали один и тот же набор конфигураций, вы можете в рамках настраиваемого AppRun сделать что-то вроде (непроверенный псевдокод):

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

Затем он будет использовать celestia.home если он есть, независимо от имени файла AppImage.

Имеет ли это смысл?

Да, AppImage.home должно быть достаточно.
Я уже рассмотрел и протестировал адаптацию в AppRun.
Возможно, с запасным вариантом, если version-AppImage.home не существует для текущей версии, используйте общий AppImage.home если он доступен - аналогично тому, что вы предлагаете.
В этом есть смысл.
Посмотрим, есть ли какие-нибудь откровенные отзывы от пользователей.

Привет,
можно аддоны поставить? и если да, то в каком каталоге?
Спасибо

@ Amich-26 Celestia 1.7 читает ~/.celestia.cfg если он существует.
В файл можно добавить ExtrasDirectories с каталогами с надстройками:

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

Обратите внимание, что в списке должны быть указаны все каталоги, а не только один дополнительный.

На самом деле @ munix9 добавляет патч для celestia.cfg , поэтому вы можете использовать ~/.celestia для установки дополнений.

Также возможно извлечь встроенные данные в AppImage:
./celestia-1.7.0-git-x86_64.AppImage --celestia-extract-data

Затем дополнения можно поместить в созданную папку, а затем запустить их с помощью CELESTIA_DATA_DIR=<dir> ./celestia-1.7.0-git-x86_64.AppImage .

См. Также ./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.

благодарю вас ! Оно работает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги