Сборка в среде Linux/Unix

Система сборки Gwyddion на Unix основана на GNU autotools (autoconf, automake, libtool), так же, как и большинство современного свободного программного обеспечения и программ с открытым исходным кодом под Unix. Если вы когда-либо собирали программы из исходников, вы, вероятно, уже встречались с autotools и знаете, что делать дальше. Этот раздел, тем не менее, будет описывать процесс сборки достаточно детально, чтобы быть понятным и тем, кто ещё этого не делал. ФайлINSTALL в каталоге верхнего уровня архива с исходным кодом содержит общие инструкции по установке с помощью GNU autotools.

Краткие инструкции

Если вам уже знакома последовательность действий:

tar -jxvf gwyddion-2.49.tar.xz
cd gwyddion-2.49
./configure
make
make install

Распаковка исходного кода

Распакуйте архив с исходным кодом командой

tar -Jxvf gwyddion-2.49.tar.xz

заменяя 2.49 текущим номером версии. При этом будет создан каталог gwyddion-2.49 (снова с текущим номером версии вместо 2.49), перейдите с помощью cd в этот каталог. Все остальные действия по сборке будут проходить там.

Если в операционной системе отсутствует xz, можно загрузить gwyddion-2.49.tar.gz (сжатый с помощью gzip) вместо предыдущего архива и распаковать его с помощью

tar -zxvf gwyddion-2.49.tar.gz

Однако, современные Unix и подобные им системы поддерживают и gzip, и xz, и заметно меньший gwyddion-2.49.tar.xz обычно будет более удачным вариантом.

Настройка

Запустите

./configure

чтобы сконфигурировать сборку Gwyddion.

Скрипт оболочки configure пытается угадать правильные значения для различных переменных, меняющихся от системы к системе и используемых в процессе компиляции. Он использует эти переменные чтобы создать Makefile в каждом каталоге пакета, набор заголовочных файлов с расширением .h, которые содержат зависящие от системы определения и некоторые другие вспомогательные файлы. В конце своей работы он создаёт другой скрипт оболочки config.status, который можно затем использовать для повторения текущей конфигурации, и файл config.log, который содержит подробности процесса детектирования и который полезно включать в сообщения об ошибках компиляции. В конце команда configure также выводит суммарную сводку о включенных и выключенных дополнительных опциях, включая причины почему опция была выключена.

Если configure пишет об отсутствии требуемых пакетов, установите эти пакеты и перезапустите её. То же самое справедливо и для случая, если configure заканчивается успешно, но вы обнаружили, что забыли установить опциональный компонент, с которым хотели собрать Gwyddion. Возможно, что пакет не был найден или был неправильно определён даже если вы его установили, а именно если он был установлен в нестандартный каталог. В этом случае необходимо настроить определённые переменные окружения чтобы дать configure возможность найти эти пакеты:

PKG_CONFIG_PATH

Большинство пакетов идут вместе с так называемыми файлами pkg-config (.pc), которые описывают как программы должны собираться и линковаться с ними. configure использует информацию из этих файлов, следовательно, PKG_CONFIG_PATH должна быть установлена таким образом, чтобы там были перечислены все нестандартные какталоги с нужными файлами pkg-config. Чтобы добавить, например, установленную библиотеку GTK+ в /opt/gnome и установленную библиотеку FFTW3 в $HOME/opt/fftw3, нужно выполнить:

PKG_CONFIG_PATH=/opt/gnome/lib/pkgconfig:$HOME/opt/fftw3/lib/pkgconfig
export PKG_CONFIG_PATH

PATH, LD_LIBRARY_PATH, DYLD_LIBRARY_PATH

Может потребоваться настроить эти переменные чтобы включить нестандартные каталоги с исполняемыми файлами и библиотеками соответствующих пакетов. Переменные LD_LIBRARY_PATH и DYLD_LIBRARY_PATH обе задают путь поиска для разделяемых библиотек, но первая используется в системах на основе Linux и BSD, в то время, как вторая на OS X.

CPPFLAGS, LDFLAGS

Может потребоваться настроить эти переменные чтобы включить нестандартные каталоги с заголовочными файлами и библиотеками пакетов, с которыми не шло файлов pkg-config, например, для libTIFF в /usr/local можно установить:

CPPFLAGS=-I/usr/local/include
export CPPFLAGS
LDFLAGS=-L/usr/local/lib
export LDFLAGS

Опция --prefix команды configure задаёт базовый каталог установки. Компоненты программы будут установлены в его подкаталоги bin, lib, share, и т.д. (которые будут созданы если они не существуют). Более детальное управление возможно с помощью опций, задающих отдельные подкаталоги, таких как --bindir, --libdir. Префикс по умолчанию – /usr/local/bin, чтобы установить Gwyddion в домашний каталог пользователя можно использовать, например команду

./configure --prefix=$HOME/opt/gwyddion

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

Настройки процесса конфигурирования

Необязательные возможности можно включить/выключить с помощью опций вроде --with-foo/--without-foo или --enable-foo/--disable-foo. Например, компиляция с zlib может быть отключена командой:

./configure --without-zlib

По умолчанию все опциональные возможности включены, если найдены все требуемые для их реализации библиотеки. Краткая информация о включенных и отключенных опциональных возможностях печатается в выводе команды configure недалеко от его конца.

Полный список опций и важных переменных configure можно получить с помощью команды:

./configure --help

Список будет длинным и большая часть опций контроллирует включение/выключение отдельных опциональных возможностей или передачу необходимых флагов компиляции и связывания для различных библиотек. Например, задавая FFTW3_CFLAGS и FFTW3_LIBSможно задать (или переопределить) как будет осуществляться компиляция и связывание с FFTW3. Однако, такое ручное задание является резервным вариантом для гораздо более удобного метода, основанного на использовании pkg-config в том случае если он почему-то не работает.

Некоторые интересные общие опции описаны в следующих параграфах.

Настройки пользователей

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

Это можно задать с помощью опции --enable-home-installation команды configure. Следует отметить, что использование этой опции приводит к установке файлов в каталоги вне заданного префикса.

Настройки создателей пакетов

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

Обновление файлов FreeDesktop может быть отключено с помощью --disable-desktop-file-update. Установка схем GConf2 может быть отключена с помощью --disable-schemas-install. Обычно это не надо делать в явной форме т.к. установки в временный каталог используют непустую переменную DESTDIR (см. раздел установка). Если переменная DESTDIR не пустая, система сборки пропустит автоматически действия после установки. Тем не менее, обычной причиной отключения этих действий является то. что Gwyddion устанавливается на временное место вместо финального каталога (что обычно происходит при сборке пакетов в Linux). В этом случае вспомогательные действия отключаются автоматически при непустой переменной DESTDIR (см. раздел установка) и, следовательно, нет нужды отключать их в configure.

Передавая параметр --enable-library-bloat скрипту configure заставляет связываться модулям со всеми библиотеками. Это автоматически включается на MS Windows, где это является обязательным требованием. В основанных на Unix системах, связывание модулей со всеми библиотеками, которые уже загружены основной программой только напрасно замедляет работу (как во время сборки, так и во время исполнения). Таким образом, модули не связываются непосредственно с основными библиотеками вроде GLib. если ваша система или правила сборки требуют связывания модулей со всеми библиотеками (например, в системах, основанных на AltLinux), использование этой опции включает данное поведение.

Передачей опции --disable-module-bundling команде configure можно запретить объединение всех модулей одного типа (файловых, обработки данных, ...) в одну разделяемую библиотеку, что обычно делается для сохранения места на диске и ускорения загрузки. Хотя подобное объединение не меняет функциональность, оно заметно меняет набор устанавливаемых файлов. Если вы, по той или иной причине, полагаетесь на наличие на диске файла gwyfile.so, самое время остановиться и перестать так делать. Тем не менее, можно использовать данную опцию чтобы принудительно получить традиционный вариант установки, где каждый модуль находился в отдельном файле.

Настройки для разработчиков

Если вы собираетесь накладывать патч или иным образом модифицировать исходный код Gwyddion запустите configure с опцией --enable-maintainer-mode чтобы включить различные правила обновления и пересборки, которые не используются при обычной компиляции. В зависимости от вида изменений могут понадобиться некоторые дополнительные инструменты, описанные в разделе Снимок Subversion, разработка.

По умолчанию справочное руководство по C API не пересобирается. Подготовленные файлы HTML распространяются с архивом, документация меняется редко и её генерация требует достаточно продолжительного времени. Для того, чтобы включить генерацию документации по API нужно передать опцию --enable-gtk-doc скрипту configure. Естественно, вам потребуется gtk-doc. Следует отметить, что configure предупредит вас, если вы включили режим мантейнера, но выключили gtk-doc (что может быть полезно для того, чтобы не пересобирать постоянно и бесцельно документацию). Если вы не собираетесь делать make dist, это предупреждение безвредно.

Компиляция

Запустите

make

и подождите, пока Gwyddion соберётся. Если команда configure завершилась без ошибок, компиляция тоже должна пройти успешно. Для того, чтобы уменьшить время ожидания, можно разрешить параллельную компиляцию запуская make командой

make -j6

где 6 необходимо заменить реальным количеством доступных процессорных ядер.

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

Установка

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

Выполните

make install

для установки Gwyddion в целевой каталог. Если вы устанавливаете Gwyddion в системный каталог, вам необходимо стать суперпользователем чтобы выполнить эту команду. Это единственная команда. которую обязательно нужно запускать от суперпользователя при установке. Например, используя sudo

sudo make install

Чтобы установить Gwyddion во временное место, например, для сборки пакета, установите переменную make DESTDIR на префикс, который будет добавлен ко всем целевым каталогам:

make install DESTDIR=/var/tmp/gwyddion-buildroot

Не переопределяйте переменные отдельных каталогов такие, как bindir, libdir.

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

  • GCONF_SCHEMA_CONFIG_SOURCE – местоположение схем GConf2
  • KDE4_MODULE_DIR – местоположение модулей KDE4

Также может потребоваться настройка переменной XDG_DATA_DIRS для полной интеграции с окружением рабочего стола.

Если вы установили Gwyddion в /usr/local и получили сообщение об ошибке libgwyapp.so.0 не может быть найдена, в вашей системе, по видимому, отсутствуют стандартные каталоги для библиотек в настройках динамического линкера. Такое было замечено на Ubuntu. Отредактируйте файл /etc/ld.so.conf и добавьте туда строку

/usr/local/lib

Запуск

Запуск Gwyddion обычно не требует дополнительных настроек.

Но некорректная реализация особенностей некоторых сред рабочего стола, может привести Gwyddion в нерабочее состояние и эту функциональность нужно отключить. Перехват главного меню программы в Unity делает большую часть меню Gwyddion недоступными. Это можно отключить сбросив переменную окружения UBUNTU_MENUPROXY при запуске Gwyddion:

UBUNTU_MENUPROXY= gwyddion

Отмена установки

Запустите

make uninstall

в каталоге, где ранее собирался Gwyddion для его удаления. Если вы уже утратили содержимое этого каталога, можно попробовать распаковать, настроить и собрать его точно так же, как ранее и после этого выполнить make uninstall, хотя результат зависит от вашей способности точно повторить процесс сборки.

Пакеты RPM

В основанных на RPM дистрибутивах GNU/Linux можно собрать RPM-пакеты напрямую из архивов с исходным кодом выполнив команду

rpmbuild -tb gwyddion-2.49.tar.xz

где 2.49 – текущая версия, как упоминалось ранее. Этот метод тестировался в основном на Fedora, openSuSE и Mandriva и spec-файл RPM содержит некоторые специальные директивы для этих систем. Особая поддержка других основанных на RPM систем может быть добавлена по запросу.