Обсудить в форуме Комментариев 0Редактировать в вики
Как создаются пакеты для OSGeo4W.
Это руководство объясняет основные этапы создания нового программного пакета для установщика OSGeo4W. По материалам OSGeo4W Wiki.
Содержание |
OSGeo4W — специальный установщик, ориентированный на распространение различного ПО для работы с пространственными данными для операционных систем семейства Windows (XP, Vista и др.). При помощи OSGeo4W можно установить GDAL/OGR, GRASS, MapServer, OpenEV, uDIG, QGIS а также множество других пакетов (ознакомиться с полным списком).
Установка ПО с OSGeo4W сводится к нескольким простым шагам:
После установки настольные приложения можно запустить выполнив «Пуск → Программы → OSGeo4W». Утилиты командной строки можно запускать из командной строки OSGeo4W Shell, а web-приложения будут доступны по адресу http://localhost/.
Ознакомиться с подробным описанием установки через OSGeo4W на примере QGIS можно в соответствующей статье.
Далее мы рассмотрим основные моменты, которые необходимо учитывать при создании нового пакета.
Каким бы большим ни был список пакетов OSGeo4W, всегда найдется что-то нужное и в то же время не представленное в этом списке. Так было с matplotlib и TinyOWS.
Итак, вы решили добавить новый пакет в OSGeo4W. Сначала необходимо получить разрешение от разработчиков. Как показывает практика, если предлагаемый к включению пакет не имеет особых зависимостей, является свободным ПО и вы готовы взять на себя поддержку, то возражений не возникает. После получения разрешения нужно сформировать пакет и загрузить его на сервер.
Каждый пакет OSGeo4W представляет собой архив tar сжатый bzip2, который при установке разворачивается в корневой каталог OSGeo4W. Все пакеты имеют свой файл setup.hint с описанием и списком зависимостей.
Структура дерева каталогов установленного OSGeo4W описанa на специальной странице, приводить ее здесь мы не будем. Перед подготовкой пакета необходимо изучить структуру каталогов и определиться в каких каталогах должны быть ваши файлы. Соответственно, все пути в архиве должны задаваться относительно корневого каталога OSGeo4W.
Пакеты загружаются на сервер (в общем случае, один пакет — один каталог):
upload.osgeo.org:/osgeo/download/osgeo4w/release/<package>
Просмотреть текущее дерево каталогов.
Каждый пакет имеет свой каталог в котором находится файл setup.hint, а также одна или несколько версий пакета в виде архивов .tar.bz2. Имя архива должно соответствовать опеределенным требованиям: в начале идет базовое название пакета, затем через дефис версия упакованного ПО, и, наконец, тоже через дефис версия самого пакета.
Нужно помнить, что базовое имя пакета и название каталога в дереве OSGeo4W должны совпадать, т.е. в каталоге tinyows должны быть файлы tinyows-<версия>-<ревизия>.tar.bz2.
Иногда один программный комплекс разбивается на несколько пакетов (например, GDAL). В этом случае отдельные компоненты располагаются во вложенных папках базового каталога. Например, драйвер Oracle 10g для GDAL будет лежать в каталоге release/gdal/gdal-oracle10g, а пакет будет называться gdal-oracle10g-1.5.0-1.tar.bz2.
ВАЖНО! Для создания архива необходимо использовать tar и bzip2 из состава самого OSGeo4W (%OSGEO4W_ROOT%\apps\msys\bin) или «родные» tar/bzip2 в Linux. Архивы, созданные 7-zip, установщиком не распознаются, а созданные при помощи bzip2 из gnuwin32 и/или cygwin работают с переменным успехом.
В каталоге пакета обязательно должен присутствовать файл setup.hint с коротким и длинным описанием пакета, а также со списком зависимостей. Так выглядит setup.hint для TinyOWS:
sdesc: "High performance WFS-T server" ldesc: "High performance Web Feature Service (WFS-T) server" category: Web requires: apache msvcrt iconv fcgi libxml2 regex
При создании структуры каталогов пакета придерживаемся следующих рекомендаций:
SetEnv TINYOWS_CONFIG_FILE "@osgeo4w@/apps/tinyows/config.xml" SetEnv TINYOWS_SCHEMA_DIR "@osgeo4w@/apps/tinyows/schema/"
ВАЖНО! Имя файла должно соответствовать шаблону
httpd_*.confСимвол «*» (звездочка) заменяется названием приложения, наш файл называется httpd_tinyows.conf
<h3>Foobar Application</h3> <p><a href="/foobar/">Foobar demo</a></p>
Имя файла должно соответствовать шаблону (обратите внимание на двойное расширение!)
packagename.pkg.html
Пакет может выполнять послеустановочные действия, чаще всего это необходимо для обновления конфигурационных файлов (актуализация путей относительно установочного каталога) и создания ярлыков. За выполнение послеустановочных действий отвечает .bat-файл, находящийся в каталоге /etc/postinstall пакета. Имя этого файла должно совпадать с именем пакета, например: /etc/postinstall/tinyows.bat. Командный файл будет запущен после распаковки архива с предустановленными переменными окружения OSGEO4W_STARTMENU, OSGEO4W_HOME и OSGEO4W_HOME_MSYS, а каталог OSGEO4W_HOME/bin будет включен в пременную PATH.
Для примера рассмотрим корректировку путей в конфигурационном файле TinyOWS. Изначально файл apps/tinyows/config.xml выглядит так
<tinyows online_resource="http://127.0.0.1/cgi-bin/tinyows.exe" schema_dir="D:/package/apps/tinyows/schema/"> <pg host="127.0.0.1" user="postgres" password="postgres" dbname="tinyows_demo" port="5432"/> <metadata name="TinyOWS Server" title="TinyOWS Server - Demo Service" /> <layer retrievable="1" writable="1" ns_prefix="tows" ns_uri="http://www.tinyows.org/" name="world" title="World Administrative Boundaries" /> <layer retrievable="1" writable="1" ns_prefix="tows" ns_uri="http://www.tinyows.org/" name="france" title="French Administrative Sub Boundaries (IGN - GeoFLA Departements)" /> </tinyows>
Видно, что путь в строке
schema_dir="D:/package/apps/tinyows/schema/"
задан жестко, и после установки будет указывать на несуществующий каталог. Чтобы после установки этот путь указывал на правильный каталог внутри папки OSGeo4W нужно:
schema_dir="@osgeo4w@/apps/tinyows/schema/"
textreplace -sf apps/tinyows/config.xml -df apps/tinyows/config.xml -map @osgeo4w@ %OSGEO4W_ROOT%
Формат команды замены следующий:
textreplace -sf исходный_файл -df файл_назначения -map найти_строку заменить
Аналогичным образом выполняется замена и в файле httpd.d/httpd_tinyows.conf
Примечание: с апреля 2008 года утилита textreplace умеет выполнять замену «на месте» и можно использовать новый синтаксис. Так, команда
textreplace -std -t apps/tinyows/config.xml
выполнить стандартную подстановку, заменив все вхождения @osgeo4w@ на реальный путь к корневому каталогу OSGeo4W.
При необходимости выполнять корректировку путей в коде на Python в начало файла postinstall.bat необходимо добавить следующую строку
set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\%
Это заставит textreplace использовать двойные слеши, т.е. вместо C:\OSGeo4W будет подставлено C:\\OSGeo4W.
Еще одним послеустановочным действием является создание ярлыков для запуска ПО. Как и в случае с заменой строк, для этих целей существует утилита xxmklink.exe (входит в состав пакета msvcrt). Это консольное приложение, запустив его без параметров вы получите список всех опций. Ниже приводится несколько примеров использования.
Создание папки и ярлыка в меню «Пуск»
mkdir "%OSGEO4W_STARTMENU%" mkdir "%OSGEO4W_STARTMENU%\Apache" xxmklink "%OSGEO4W_STARTMENU%\Apache\OSGEO4W-Apache-Install.lnk" %OSGEO4W_ROOT%\Apache\bin\httpd.exe " -k install -n \"Apache OSGEO4W Web Server\""
Ярлык со специальной иконкой
xxmklink "%OSGEO4W_STARTMENU%\ttt.lnk" cmd.exe "" . "my_desc" 1 "%OSGEO4W_ROOT%\OSGeo4W.ico"
Ярлык на «Рабочем столе»
xxmklink "%ALLUSERSPROFILE%\Desktop\OpenEV.lnk" "%OSGEO4W_ROOT%\bin\openev.bat" " " \ "OSGeo4W OpenEV" 1 "%OSGEO4W_ROOT%\apps\openev\icon.ico"
Кроме обновления конфигурационных файлов и создания ярлыков из этих командных файлов можно запускать любую команду DOS и любое установленное приложение с нужными параметрами.
Некоторым приложениям необходимо наличие определенных переменных окружения. Установка переменных окружения в командной строке OSGeo4W выполняется при помощи файла инициализации в /etc/ini. Это обычный .bat файл, в котором прописана установка необходимых переменных, например
SET GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
Эти файлы выполняются в случайном порядке скриптом %OSGEO4W_ROOT%\OSGeo4W.bat, который отвечает за создание среды для командной строки OSGeo4W. Переменная OSGEO4W_ROOT устанавливается автоматически.
Для запуска приложений с определенным набором переменных окружения используются .bat файлы. Так, чтобы запустить приложение foo.exe со стандартным набором переменных окружения, необходимо создать командный файл foo.bat.tmpl следующего содержания
@echo off SET OSGEO4W_ROOT=@osgeo4w@ call "%OSGEO4W_ROOT%\bin\o4w_env.bat" start "Foo window title" /B "%OSGEO4W_ROOT%\bin\foo.exe" %* @echo on
Это файл должен находиться в каталоге /bin пакета. А в файле postinstall.bat необходимо предусмотреть установку корректного пути для OSGEO4W_ROOT и переименование foo.bat.tmpl в foo.bat. За примерами можно обратиться к существующим пакетам, например, qgis.
После того, как структура каталогов пакета подготовлена и все файлы разложены на свои места, создаём архив
tar cjvf tinyows-1.0.0rc1-1.tar.bz2 apps/ bin/ etc/ httpd.d/
При помощи WinSCP или SSH подключаемся к серверу upload.osgeo.org (нужен OSGeo Id и соответсвующие права доступа), создаем каталог для нового пакета, копируем в него файл setup.hint и сам пакет.
Проверим, правильно ли мы сформировали пакет:
http://upload.osgeo.org/cgi-bin/osgeo4w-regen.sh
http://download.osgeo.org/osgeo4w/versions_test.html
osgeo4w-setup.exe -t http://download.osgeo.org/osgeo4w/setup_test.ini
http://upload.osgeo.org/cgi-bin/osgeo4w-promote.sh
Осталось добавить новый пакет в список пакетов и создать ссылку на страничку пакета, где должны быть:
Обсудить в форуме Комментариев 0Редактировать в вики
Последнее обновление: 2014-05-14 22:15
Дата создания: 06.05.2011
Автор(ы): Александр Бруй
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).