地球流体電脳倶楽部で作成しているソフトウェア群のうち, debian パッケー ジ化されているものの apt ソースリストの公開方法について記す.
なお, 下記の手順は作業を簡単にするため, かなり自動化してある. 手動で apt による管理を行なうための技術情報に関しては 技術文書 を参照せよ.
基本的にこのディレクトリに以下に debian パッケージの実体は置かず, 他の プロジェクトのディレクトリ以下の debian パッケージ置き場のディレクトリ へのシンボリックリンクを作成する.
実際にこのディレクトリ以下で管理しているのは apt に必要となる Packages.gz, Sources.gz のみである. これらのファイルは (<URL:stable> や <URL:testing> 以下に作成される).
/etc/apt/sources.list に記述する公開アドレスは
または
とする.
debian パッケージを公開するための事前準備の手引きである. 既に事前準備が済んでおり, 新たに別のプロジェクトで公開している debian パッケージ群を apt リストに追加したい場合は 追加する場合の手順 を参照せよ
<URL:Makefile.apt> の各変数を書き変える.
$ vi Makefile.apt
STABLE = sarge
TESTING =
SUBDIRS = spml netcdf ispack fftw gt4f90io g95
CHMOD = 664 # Set mode (optional)
CHGRP = cc-env # Set group (optional)
STABLE, TESTING に指定されるディレクトリ以下に Packages.gz, Sources.gz が作成される.
SUBDIRS にリストされるディレクトリ以下の debian パッケージが探査 される. 関連ディレクトリの様子を以下に示す.
凡例
./debian
|
|-- $(STABLE)/ <-- このディレクトリ以下は自動生成
| |-- Packages.gz (下記の「Packages.gz, Sources.gz の作成」
| `-- Sources.gz 参照)
|
|-- $(TESTING)/ <-- このディレクトリ以下は自動生成
| |-- Packages.gz (下記の「Packages.gz, Sources.gz の作成」
| `-- Sources.gz 参照)
|
|-- $(SUBDIRS) その1/ <-- このディレクトリ以下は手動で準備
| |-- $(STABLE)/
| | `-- **********.deb <-- $(STABLE)/Packages.gz,
| | $(STABLE)/Sources.gz へと反映
| |
| `-- $(TESTING)/
| `-- **********.deb <-- $(TESTING)/Packages.gz,
| $(TESTING)/Sources.gz へと反映
|
`-- $(SUBDIRS) その2/ <-- このディレクトリ以下は手動で準備
|-- $(STABLE)/
| `-- **********.deb <-- $(STABLE)/Packages.gz,
| $(STABLE)/Sources.gz へと反映
|
`-- $(TESTING)/
`-- **********.deb <-- $(TESTING)/Packages.gz,
$(TESTING)/Sources.gz へと反映
具体例 (STABLE=sarge, TESTING=etch, SUBDIRS=g95 gt4f90io)
./debian
|
|-- sarge/
| |-- Packages.gz
| `-- Sources.gz
|
|-- etch/
| |-- Packages.gz
| `-- Sources.gz
|
|-- g95/
| |-- sarge/
| | |-- g95_20060412.dsc
| | |-- g95_20060412.tar.gz
| | |-- g95_20060412_i386.changes
| | |-- g95_20060412_i386.deb
| | |-- g95_20060419.dsc
| | |-- g95_20060419.tar.gz
| | |-- g95_20060419_i386.changes
| | `-- g95_20060419_i386.deb
| |
| `-- etch/
| |-- g95_20060421.dsc
| |-- g95_20060421.tar.gz
| |-- g95_20060421_i386.changes
| `-- g95_20060421_i386.deb
|
`-- gt4f90io/
|-- sarge/
| |-- gt4f90io-ifc8.1_20050207-1.dsc
| |-- gt4f90io-ifc8.1_20050207-1.tar.gz
| |-- gt4f90io-ifc8.1_20050207-1_i386.changes
| |-- gt4f90io-ifc8.1_20050207-1_i386.deb
| |-- gt4f90io-ffc5_20060123-1.dsc
| |-- gt4f90io-ffc5_20060123-1.tar.gz
| |-- gt4f90io-ffc5_20060123-1_i386.changes
| `-- gt4f90io-ffc5_20060123-1_i386.deb
|
`-- etch/
|-- gt4f90io-ifc9_20060123-1.tar.gz
|-- gt4f90io-ifc9_20060123-1.dsc
|-- gt4f90io-ifc9_20060123-1_i386.deb
`-- gt4f90io-ifc9_20060123-1_i386.changes
上記のディレクトリ構造を参照し, 公開したい debian パッケージの格納され たディレクトリのシンボリックリンクを作成する. 以下はその例である. (シンボリックリンクを作成する際は, 絶対パスではなく, 相対パス をリンク先にすること. 絶対パスに対するシンボリックリンクは ftp アクセス の際に見えない).
$ cd /GFD_Dennou_Club/ftp/arch/cc-env/debian-dennou $ ln -s ../../gtool4/debian/gt4f90io ./gt4f90io $ ln -s ../g95/debian/ ./g95 $ :
シンボリックリンク先のディレクトリ構造に応じてリンクのはり方が 異なってくるので注意.
debian の安定版バージョンに対応するコードネームのディレクトリ (上記の Makefile.apt で STABLE 変数に指定された名前) に stable のシンボリックリンクをはる.
$ cd /GFD_Dennou_Club/ftp/arch/cc-env/debian-dennou $ sg cc-env $ umask 002 $ ln -s sarge stable
TESTING に値が指定される場合にはそのシンボリックリンクも作成する.
$ ln -s etch testing
ftp アクセスのことを考え, 相対パスでシンボリックリンクを作成すること. ftp は実ディレクトリからの相対パスでなくてはならないので注意.
$ cd /GFD_Dennou_Club/ftp/arch-large1/cc-env/Linux $ sg cc-env $ umask 002 $ ln -s ../../../arch/cc-env/debian-dennou/ $ ln -s ../../../arch/cc-env/debian-dennou.SIGEN
<URL:./> ディレクトリで, 以下のコマンドを入力する.
$ cd /GFD_Dennou_Club/ftp/arch/cc-env/debian-dennou $ sg cc-env $ umask 002 $ make scan
すると, $(STABLE), $(TESTING) に指定されたディレクトリが 生成され, そのディレクトリ以下に Packages.gz および Sources.gz が 作成されているはずである.
上記のように Package.gz, Source.gz が準備できたら, 手元の PC の /etc/apt/sources.list に以下の記述を追加する.
deb http://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stable deb-src http://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stable
以下のコマンドでソフトウェアのインストールが出来たら OK.
# apt-get update # apt-get install g95 (例えば)
以下の記述でもうまくいくことを確認する.
deb ftp://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stable deb-src ftp://www.gfd-dennou.org/library/cc-env/Linux/debian-dennou stable
cc-env ユーザに成り代わり, crontab の設定を行って apt のリストを 自動更新するよう設定する.
$ sudo -u cc-env -s
$ crontab -e
# Update of Packages.gz, Sources.gz
30 4 * * * umask 002; cd /GFD_Dennou_Club/ftp/arch/cc-env/debian-dennou ; make scan > /dev/null 2>&1
以下は, 既に事前準備が済んでおり, 新たに別途 debian パッケージ群 を apt リストに追加したい場合の手順を示す.
追加で公開したい debian パッケージの格納されたディレクトリ のシンボリックリンクを作成する. 以下は, /GFD_Dennou_Club/ftp/arch/gtool4/debian/gt4f90io ディレクトリ 以下の debian パッケージを公開する場合の例である. (シンボリックリンクを作成する際は, 絶対パスではなく, 相対パス をリンク先にすること. 絶対パスに対するシンボリックリンクは ftp アクセス の際に見えない).
$ cd /GFD_Dennou_Club/ftp/arch/cc-env/debian-dennou $ ln -s ../../gtool4/debian/gt4f90io ./ $ ln -s ../../gtool4/debian/gt4f90io.SIGEN ./
この際, ディレクトリ構造がMakefile.apt の準備で 述べられているようになっているよう注意すること.
次に, <URL:Makefile.apt> の SUBDIRS に新たに探査するディレクトリ名を 追加する. 改行する場合, 末尾にバックスラッシュをつける必要があるので注意.
$ vi Makefile.apt
SUBDIRS = spml netcdf
dcl/dcl-5.3 dcl/dcl-5.3.1 dcl/dcl-c dcl/dcl-f90 \
ruby/gave ruby/gphys ruby/gphys-remote \
gt4f90io # <- 新規に書き足す
Cron による Packages.gz, Sources.gz 更新の自動化 の 設定が為されていれば, Packages.gz, Sources.gz が自動更新される はずだが, すぐに更新したい場合は Packages.gz, Sources.gz の作成 を参照せよ.