2.7.15. 小型公共软件包档案库
提示 | |
---|---|
手动建立软件仓库是极其复杂的。有数个软件仓库管理工具可供用户选用。网上有一个 详尽的列表 可供参阅。 |
下面是一个建立小型公共软件包档案库的示例,兼容了 secure APT 系统(参见 第 2.5.2 节 “顶层“Release”文件及真实性”)。让我们进行一些假定。
账号名:“
foo
”主机名:“
www.example.com
”所需软件包:
apt-utils
、gnupg
和其它软件包URL: “
http://www.example.com/~foo/
“ ( → “/home/foo/public_html/index.html
“)软件包架构:“
amd64
”
在该服务器上使用如下方式为 Foo 创建一个 APT 源钥匙对。
$ ssh foo@www.example.com
$ gpg --gen-key
...
$ gpg -K
...
sec 1024D/3A3CB5A6 2008-08-14
uid Foo (ARCHIVE KEY) <foo@www.example.com>
ssb 2048g/6856F4A7 2008-08-14
$ gpg --export -a 3A3CB5A6 >foo.public.key
公布 “foo.public.key
“文件,即公钥 ID 为 “3A3CB5A6
“的源公钥文件,该文件可用于 Foo 源的发布
使用如下方式创建一个名为”Origin: Foo”的源目录树。
$ umask 022
$ mkdir -p ~/public_html/debian/pool/main
$ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64
$ mkdir -p ~/public_html/debian/dists/unstable/main/source
$ cd ~/public_html/debian
$ cat > dists/unstable/main/binary-amd64/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: amd64
EOF
$ cat > dists/unstable/main/source/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: source
EOF
$ cat >aptftp.conf <<EOF
APT::FTPArchive::Release {
Origin "Foo";
Label "Foo";
Suite "unstable";
Codename "sid";
Architectures "amd64";
Components "main";
Description "Public archive for Foo";
};
EOF
$ cat >aptgenerate.conf <<EOF
Dir::ArchiveDir ".";
Dir::CacheDir ".";
TreeDefault::Directory "pool/";
TreeDefault::SrcDirectory "pool/";
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Sources::Compress "gzip bzip2";
Default::Contents::Compress "gzip bzip2";
BinDirectory "dists/unstable/main/binary-amd64" {
Packages "dists/unstable/main/binary-amd64/Packages";
Contents "dists/unstable/Contents-amd64";
SrcPackages "dists/unstable/main/source/Sources";
};
Tree "dists/unstable" {
Sections "main";
Architectures "amd64 source";
};
EOF
通过 dupload
,你可以自动重复更新你服务器系统上的 APT 档案库内容。
当 “~/.dupload.conf
” 包含如下内容时,在客户端执行 “dupload -t foo changes_file
” 将所有的软件包文件放入 “~foo/public_html/debian/pool/main/
”。
$cfg{'foo'} = {
fqdn => "www.example.com",
method => "scpb",
incoming => "/home/foo/public_html/debian/pool/main",
# The dinstall on ftp-master sends emails itself
dinstall_runs => 1,
};
$cfg{'foo'}{postupload}{'changes'} = "
echo 'cd public_html/debian ;
apt-ftparchive generate -c=aptftp.conf aptgenerate.conf;
apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ;
rm -f dists/unstable/Release.gpg ;
gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'|
ssh foo@www.example.com 2>/dev/null ;
echo 'Package archive created!'";
dupload(1)触发postupload钩子脚本,该脚本为每次上传创建软件包文件.
你可以通过下面的方法将这个小型公共档案库添加到你客户端系统的 apt 源中。
$ sudo bash
# echo "deb http://www.example.com/~foo/debian/ unstable main" \
>> /etc/apt/sources.list
# apt-key add foo.public.key
提示 | |
---|---|
如果档案库位于本地文件系统中,你可以使用 “ |