このページはOSGeo4Wパッケージの作成に使用された手法を説明するものです。 [[TOC]] = 概要 = OSGeo4Wパッケージは、それぞれbzip2圧縮された.tarファイルであり、OSGeo4Wルートディレクトリで復元するよう意図されています。依存性とパッケージ説明を記述するようデザインされたsetup.hintファイルと一緒になっています。 == パッケージディレクトリのレイアウト == インストールされたOSGeo4Wディレクトリツリーは[wiki:OSGeo4W_jp/DirectoryLayout ディレクトリレイアウト]に記述されています。 通常、OSGeo4Wパッケージは http://cygwin.com/setup.html で説明されているCygwinのパッケージのように構築されています。 OSGeo4W用のパッケージは現在次の場所にアップロードされています: upload.osgeo.org:/osgeo/download/osgeo4w/release/ このツリーは次でレビューが可能です: http://download.osgeo.org/osgeo4w/release [[Image(ticket:132:package-name.png, nolink,title="Osaka City University", right)]]各パッケージディレクトリは1つのsetup.hintファイルを所有しています。例えば、gdal-1.5.0-1.tar.bz2の場合、.tar.bz2ファイルはそのパッケージの1つまたはそれ以上のバージョンを所有しています。これらは通常、"1.5.0" がパッケージされていたGDALのバージョンで "-1" がパッケージを試みるバージョンを指す場所なのでgdal-1.5.0-1.tar.bz2のような名前になります。 ディレクトリはまた、gdal-1.5.0-1-src.tar.bz2のように名付けられた、対応するソーススナップショットを含むことが可能です。ベースネームはパッケージが見つかったディレクトリと完全に一致していなければなりません。ですから "gdal" ディレクトリはgdal--.tar.bz2パッケージファイルを持っていることになります。 1つのプロジェクトが複数のパッケージとしてまとめられている場合があります。このようなケースでは、パッケージは通常プライマリディレクトリのサブディレクトリとして作成されています。例えば、GDALのOracle 10gドライバはrelease/gdal/gdal-oracle10gディレクトリに保管されgdal-oracle10g-1.5.0-1.tar.bz2としてパッケージされています。 '''注意:''' osgeo4wのmsys(%OSGEO4W_ROOT%\apps\msys\bin)から`tar`と`bzip2`を使用してください。setup.exeは作成されるアーカイブを処理できないため、7zipは使用しないでください。Linux tar/bzip2によって報告されている問題はありません。(チケット #101 を参照) == ウェブアプリケーションパッケージのガイドライン == 重要なガイドライン: * /osgeo4w/apps/ ディレクトリはアプリケーションを保管します。 なるべく意味のある名前(小文字で)を用いて /osgeo4w/apps/ ディレクトリのサブディレクトリにアプリケーションをインストールしてください。 * Apacheエイリアス "/ms_tmp/" は、/osgeo4w/tmp/ms_tmp/ ディレクトリを指す一時的なweb-accessibleファイルにアクセスします。 * Apacheエイリアス "/cgi-bin/" は /osgeo4w/bin/ フォルダーを指しています。例 mapserv.exeは /binフォルダにあります。 * /osgeo4w/httpd.d/ ディレクトリはApacheエイリアスファイルを所有しています。このディレクトリは開始すると自動的にアパッチによってスキャンされます。 以下は、'foobar' という名前のアプリケーションのエイリアスの例です: {{{ Alias /foobar/ @osgeo4w@/apps/foobar/htdocs/ AllowOverride None Options Indexes FollowSymLinks Multiviews Order allow,deny Allow from all }}} ファイルの名前は非常に重要です。Apacheは次のパターンに一致するファイルのみロードします: {{{ httpd_*.conf }}} 通常、* をアプリケーションの名前に置き換えます。上記の例では、アプリケーションは /OSGEO4W/httpd.d/ ディレクトリにおいてhttpd_foobar.confを使用しています。これはアプリケーションにアクセスするためユーザーの http://localhost/foobar/ への接続を可能にします。 * アプリケーションへのリンクがOSGeo4Wインデックスページ(ローカルホスト)に表示されるよう、全てのウェブアプリケーションは小さい.pkgファイルを /osgeo4w/apache/htdocs/ フォルダに含みます。  この 'Index Package File' は自動的にOSGeo4Wインデックスページに含まれる小さいHTMLスニペットを提供します。このHTMLスニペットはアプリケーションの短い説明と、 Apacheエイリアスファイルを通じて提供しているエイリアスにアクセスするリンクを提供します。インデックスパッケージファイルは厳密な命名規則に従っています: {{{ packagename.pkg.html }}} .pkg.htmlで終わるファイルのみがインデックスページに含まれます。ここに.pkgファイルの例があります ('foobar.pkg.html と名付けられています): {{{

Foobar Application

Foobar demo

}}} == setup.hint == 各パッケージディレクトリは通常、パッケージの長短の記述そして依存する他のパッケージのリストを含むsetup.hintファイルを所有しています。 パッケージにいくつかのバージョンがある場合でも、パッケージにはsetup.hintファイルは通常1つのみです。通常のsetup.hintファイルは次のようになります:: {{{ sdesc: "The Libgeotiff library, commandline tools and supporting tables." ldesc: "The Libgeotiff library, commandline tools and supporting tables. Used for manipulating GeoTIFF files." category: Libs Commands requires: msvcrt libtiff }}} これはパッケージの長短の記述、インストーラーユーザーインターフェイスのためのカテゴリーのリスト、そして要求するパッケージを指しています。 == インストール後の動作 == パッケージは、/etc/postinstall ディレクトリにある.batファイルをパッケージの一部として含むことによってインストール後の動作をとることがあります。ファイル名は etc/postinstall/.bat. と名付けられます。このbatファイルは環境変数OSGEO4W_STARTMENU、OSGEO4W_HOMEとOSGEO4W_HOME_MSYS定義された、そしてすでにパスにあるOSGEO4W_HOME/binとともに実行されます。 インストール後の動作でよく行われることの1つが、OSGeo4Wツリーへのインストールされたパスを含むための設定ファイルの挿入/アップグレードです。これは普通postintallファイルと一緒に処理され、ここにその例が2つあります:: === !TextReplace 例 !#1 === * gmapパッケージの /httpd.d/httpd_gmap.conf ファイルにあるハードコードされたパス: {{{ Alias /gmap/ "C:/mypath/apps/gmap/htdocs/" AllowOverride None Options Indexes FollowSymLinks Multiviews Order allow,deny Allow from all }}} * まず始めに、ファイルにあるハードコードされたパスを好みのテキスト編集で''@osgeo4w@''変数に置き換えます。例えば、上記のファイルは次のようになります: {{{ Alias /gmap/ "@osgeo4w@/apps/gmap/htdocs/" AllowOverride None Options Indexes FollowSymLinks Multiviews Order allow,deny Allow from all }}} * 次に、その変数を実際のユーザーのインストールパスと置き換えるため、gmap.bat(gmapパッケージの /etc/postinstall/ にあります)という名前のpostinstallスクリプトを作成します: {{{ textreplace -sf httpd.d/httpd_gmap.conf -df httpd.d/httpd_gmap.conf -map @osgeo4w@ %OSGEO4W_ROOT% }}} === !TextReplace 例 !#2 === 2008年4月の時点でtextreplaceはファイルをアップデートするので、infile/outfileシンタックスは不要になります: {{{ textreplace -std -t bin/o4w_env.bat }}} はスタンダードマッピングチェンジを適用します; これ: {{{ #!html
@echo off
set OSGEO4W_ROOT=@osgeo4w@
PATH=%OSGEO4W_ROOT%\bin;%PATH%
for %%f in ("%OSGEO4W_ROOT%"\etc\ini\*.bat) do call "%%f"
@echo on
}}} をこれに: {{{ #!html
@echo off
set OSGEO4W_ROOT=X:\Path\to\OSGeo4W
PATH=%OSGEO4W_ROOT%\bin;%PATH%
for %%f in ("%OSGEO4W_ROOT%"\etc\ini\*.bat) do call "%%f"
@echo on
}}} === textreplace および python === textreplaceが二重のバックスラッシュを使用するように、postinstall batのはじめに以下を追加してください。(`C:\OSGeo4W` は `C:\\OSGeo4W` となります): {{{ set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\% }}} == ショートカットの作成 == パッケージが処理するもう1つのpostinstallタスクは、特定のコマンドを起動するショートカットの作成です。テキスト置換実行ファイルの場合のように、インストーラにあるユーティリティバイナリxxmklink.exe(msvcrt パッケージの一部)があります。xxmklinkを入力することによって、このユーティリティがサポートしている全てのオプションを見ることができます。インストール後のファイルにおいての使用例をここにいくつか挙げておきます: {{{ 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" }}} postinstallスクリプトはいかなるDOSコマンドまたは指定した引数をもつインストールされたバイナリを実行することが可能です。 = シェルの初期化 = 特定の環境変数を設定する必要のあるパッケージもあります。OSGeo4Wコマンドシェルにとって、これは etc/ini にある初期化ファイルを追加することによって達成されます。 以下は典型的な例です:: {{{ SET GDAL_DATA=%OSGEO4W_ROOT%\share\gdal }}} これらのスクリプトは、OSGeo4Wシェルの環境構築の際に%OSGEO4W_ROOT%\OSGeo4W.batによってランダムな順番で実行されます。OSGEO4W_ROOt環境変数は常に最初に設定されます。 = アプリケーションバッチファイルのテンプレート = 標準環境設定でのアプリケーション開始方法のサンプル。`foo.exe` をアプリケーション実行可能ファイルで置き換え、`foobar.bz2:bin/foo.bat.tmpl` として保存します。 [#Post-InstallActions Post-Install] は適切なOSGEO4W_ROOTを設定します。 {{{ @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 }}} == Setup.ini == Cygwin Setup.exeは、実行されるたびに[http://download.osgeo.org/osgeo4w/setup.ini setup.ini] ファイルを全パッケージのリストと一緒にダウンロードします。このファイルは、ウェブ上にある `osgeo4w-regen.sh` を呼び出すスクリプトの実行に伴い、パッケージのアップロードの度にサーバーに再作成されるべきです。これは、-t コマンドラインオプションをパスすることによってセットアッププログラムと一緒に使用可能なファイルのテストバージョンを作成します。一度テストが行われたら、一般のユーザーが利用できるようリンク `osgeo4w-promote.sh` を用いてこのファイルをsetup.iniにコピーします。 * テストセットアップの生成: `http://upload.osgeo.org/cgi-bin/osgeo4w-regen.sh` * パッケージバージョンナンバーの立証 ([wiki:OSGeo4W_jp/PackageListing パッケージリスト]のトップ) * -t を セットアッププログラムにパスすることによるテスト ([http://download.osgeo.org/osgeo4w/osgeo-setup_test-ini.bat osgeo-setup_test-ini.bat]) * テストセットアップ実行の促進: `http://upload.osgeo.org/cgi-bin/osgeo4w-promote.sh` == 記録 == あなたのパッケージに関する情報を含む [wiki:OSGeo4W_jp/PackageListing パッケージリスト] とリンクしていないwikiページを準備してください。ページは端末からサーバへのプロジェクトに戻るポインター、パッケージャーの名前(パッケージャーのコンタクト情報が記載されているページへのリンク)、そしてOSGeo4W内での置き場所についての特別な注意書きを含みます。 == 共通の問題 == === 問題のあるパッケージのバージョン === 現在のバージョンとしてリストされていないパッケージが見つかるかもしれません。インストーラーはapache-2.2.8-3を最新のバージョンとしていますが、apache-2.2.14が正しい最新のバージョンである、という例が次にあります: {{{ apache-2.2.8-1.tar.bz2 apache-2.2.8-2.tar.bz2 apache-2.2.8-3.tar.bz2 apache-2.2.14-1.tar.bz2 }}} これを解決するため、次のようにsetup.hintファイル(詳細は http://cygwin.com/setup.html#setup.hint を参照)で現在のバージョンと前のバージョンを明確にしてください: {{{ sdesc: "Apache Web Server" ldesc: "Apache Web Server" category: Web requires: msvcrt php curr: 2.2.14-1 prev: 2.2.8-3 }}} [wiki:OSGeo4W_jp 戻る]