Установка из исходных кодов

Установка из исходных кодов требуется, если вам нужны новейшие функции, если предыдущая версия устарела, если вы хотите участвовать в улучшении Siril или не хотите использовать все зависимости.

Получение исходных кодов

Исходный код хранится в репозитории git, который в первый раз вы можете загрузить с помощью этой команды:

git clone --recurse-submodules https://gitlab.com/free-astro/siril.git

И обновить его в последующем, используя следующие команды в корневом каталоге siril:

git pull
git submodule update --recursive

Зависимости

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

  • gtk+3 (библиотека графического интерфейса пользователя), по крайней мере, версия 3.20.

  • adwaita-icon-theme (иконки) поддержка внешнего вида приложений gtk.

  • cfitsio (поддержка изображений FITS).

  • fftw (Библиотека дискретных преобразований Фурье).

  • gsl (The GNU Scientific Library), версии 1 или 2 начиная с релиза 0.9.1 или ревизии SVN 1040.

  • OpenCV и компилятор C++ для некоторых операций с изображениями.

Примечание

Даже если Siril может запускаться в консоли начиная с версии 0.9.9, он по-прежнему компонуется с графическими библиотеками, поэтому вам всё равно понадобится GTK+ для компиляции и запуска программы.

Необязательные зависимости:

  • openmp поддержка мультипотоковости. Хотя эта зависимость опциональна, её использование настоятельно рекомендуется, поскольку это существенно улучшает производительность приложения. По умолчанию эта опция включена. Это означает, что если openmp не установлена на вашей машине, необходимо добавить -Dopenmp=false в настройках meson.

  • libraw, libtiff, libjpeg, libpng, libheif поддержка импорта и экспорта изображений в форматах RAW, TIFF, JPEG, PNG and HEIF. Эти библиотеки определяются во время компиляции.

  • FFMS2 для нативной поддержки видео как последовательностей изображений. Это также позволяет извлекать кадры из многих видов видео для других целей, помимо астрономии. В версиях < 2.20 есть досадная ошибка, поэтому рекомендуется установить последнюю версию.

  • ffmpeg (или libav), предоставляющая libavformat, libavutil (>= 55.20), libavcodec, libswscale и libswresample для экспорта последовательностей mp4.

  • gnuplot для создания графиков фотометрии (во время компиляции не требуется).

  • wcslib для управления мировой системой координат, аннотаций и фотометрической калибровки цвета.

  • libconfig (поддержка структурированных конфигурационных файлов), используется для чтения файла конфигурации с версий до 1.0. Сейчас используется только для получения старых настроек.

  • libjson-glib для проверки обновлений (бесполезно, если вы создаете нерелизную версию).

  • Exiv2 для управления метаданными изображения.

  • libcurl ИЛИ glib-networking с его HTTP-серверной частью для удалённых операций, таких как проверка обновлений, запросы на астрометрию и фотометрию.

Зависимости для компиляции

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

git, autoconf, automake, libtool, intltool, pkg-tools, make, cmake, gcc, g++

Компиляторы gcc и g++ из этого списка могут быть заменены на clang и clang++ (мы используем их для разработки), и, возможно, другими.

Пакеты autotools (autoconf, automake, возможно, некоторые другие) могут быть заменены на meson.

Типовой процесс сборки

Siril может быть скомпилирован с помощью autotools или meson.

Meson

Рекомендуемый способ это использовать meson и ninja:

meson setup _build --buildtype release

cd _build
ninja
ninja install

Для отключения некоторых зависимостей или функций, используйте опции meson -Dfeature=false или -Ddisable-feature=yes, соответственно.

Список всех доступных опций конфигурации приведён ниже.

Опция

Тип

Значение

Choices

Описание

relocatable-bundle

combo

platform-default

[ 'yes', 'no', 'platform-default' ]

сборка с использованием ресурсов, которые считаются связанными под тем же префиксом

openmp

логический

true

Н/Д

сборка с поддержкой OpenMP

json_glib

логический

true

Н/Д

сборка с поддержкой json glib

exiv2

логический

true

Н/Д

сборка с поддержкой exiv2

libraw

логический

true

Н/Д

сборка с поддержкой LibRaw

libtiff

логический

true

Н/Д

сборка с поддержкой TIFF

libjpeg

логический

true

Н/Д

сборка с поддержкой JPEG

libpng

логический

true

Н/Д

сборка с поддержкой PNG

libheif

логический

true

Н/Д

сборка с поддержкой HEIF

ffms2

логический

true

Н/Д

сборка с поддержкой FFMS2

ffmpeg

логический

true

Н/Д

сборка с поддержкой FFmpeg

enable-libcurl

combo

platform-default

[ 'yes', 'no', 'platform-default' ]

Использовать libcurl вместо GIO

libconfig

логический

false

Н/Д

build with libconfig support

criterion

логический

false

Н/Д

сборка с поддержкой criterion

wcslib

логический

true

Н/Д

build with WCSLIB support

Autotools

Компиляция с помощью autotools хорошо известна в мире Unix. После загрузки исходных кодов и установки всего необходимого, обычный способ компиляции следующий:

./autogen.sh
make
make install

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

Возможно, вы захотите передать компилятору определенные параметры, например, такие, если бы вы хотели оптимизацию и установку в /opt вместо /usr/local, используемого по умолчанию:

CFLAGS='-mtune=native -O3' ./autogen.sh --prefix=/opt

Для запуска Siril имя команды siril или siril-cli.

Установка в Debian и подобных системах

Возможно, вы захотите создать пакет .deb вместо использования неупакованной версии, в этом случае обратитесь к этой справке. В частности, для установки зависимостей вы можете использовать команду:

apt build-dep siril

В противном случае вот список пакетов для текущей версии:

  • Пакеты, необходимые для компиляции системы:

autoconf automake make gcc g++ libtool intltool pkg-config cmake
  • Пакеты с обязательными зависимостями:

libfftw3-dev libgsl-dev libcfitsio-dev libgtk-3-dev libopencv-dev
libexiv2-dev
  • Пакеты с необязательными зависимостями:

wcslib-dev libcurl4-gnutls-dev libpng-dev libjpeg-dev libtiff5-dev
libraw-dev gnome-icon-theme libavformat-dev libavutil-dev libavcodec-dev
libswscale-dev libswresample-dev libjson-glib-dev libheif-dev

для поддержки видео (AVI и прочие):

libffms2-dev

Установка в Arch Linux

В AUR доступны два пакета: siril и siril-git`. Скачайте ``PKGBUILD или репозиторий, установите зависимости, запустите makepkg для создания пакета и pacman -U для его установки.

Зависимости (обязательные и несколько необязательных):

pacman -S base-devel cmake git intltool gtk3 fftw cfitsio gsl opencv
exiv2 libraw wcslib

Неудачи сборки

Каждый коммит в git Siril автоматически собирается в стандартной среде сборки для Linux, Windows и MacOS с использованием инфраструктуры gitlab CI. Это значит, что мы с высокой долей вероятности уверены в том, что компиляция основной ветки и отмеченных выпусков будет успешной при условии корректно настроенной среды сборки и наличии всех необходимых зависимостей.

Если вам не удаётся скомпилировать программу, это, скорее всего, свидетельствует о проблеме с вашей средой для сборки или неверно установленных зависимостях. Во многих дистрибутивах требуется отдельная установка пакетов разработки, которые содержат необходимые загловочные файлы. Проверьте сообщение CI из того коммита git, который вы пытаетесь скомпилировать. В маловероятном случае если действительно будет показан сбой сборки, будьте уверены, команда работает над его устранением. В противном случае, если конвейер CI показывает зеленые галочки, вам нужно будет просмотреть и устранить любые проблемы с вашей собственной средой сборки.

Если вы все еще считаете, что обнаружили проблему сборки, не отмеченную конвейером CI — например, если вы осуществляете сборку на другой платформе, такой как BSD, которую разработчики не используют регулярно, — тогда не стесняйтесь говорить о проблеме на gitlab.

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