设置一个APT存储库与reprepro和nginx在Debian Wheezy
本教程将介绍如何使用工具reprepro和Debian Wheezy系统来设置一个apt库。 存储库将由nginx服务器提供。
1初步说明
在本教程中,我想为我在教程中使用的nginx包设置一个小型apt存储库。 使用ngx_pagespeed与nginx在Debian Jessie / testing上 。 因此我的存储库将是Debian测试,不稳定,所以你必须在适当的时候调整本教程。
2生成签名包的密钥
我们必须创建一个签名包的密钥。 该密钥可以通过我们安装的gnupg
生成,如下所示:
apt-get install gnupg
在服务器上生成密钥时,您可能会看到这个常见的错误:
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)
为了避免这种情况,我们安装rng-tools
:
apt-get install rng-tools
打开/ etc / default / rng-tools
...
vi /etc/default/rng-tools
...并确保你有以下行:
[...] HRNGDEVICE=/dev/urandom [...]
然后启动rng-tools ...
/etc/init.d/rng-tools start
...并生成您的密钥:
gpg --gen-key
3配置您的存储库
安装reprepro:
apt-get install reprepro
我们使用目录/ var / packages
作为我们的存储库的根目录。 创建目录/ var / packages / debian / conf
:
mkdir -p /var/packages/debian/conf
我们来了解我们在第1章中创建的关键:
gpg --list-keys
root@server1:~# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 2048R/434433F2 2014-02-05
uid Falko Timme (Falko Timme) <ft@falkotimme.com>
sub 2048R/C7C1365D 2014-02-05
root@server1:~#
我们的公钥是C7C1365D
。 我们现在必须使用这个。
创建文件/ var / packages / debian / conf / distribute
如下:
vi /var/packages/debian/conf/distributions
我们的apt存储库的地址将是apt.example.com
,所以我们在Origin
和Label
行中使用它。 在SignWith
行中,我们添加了我们的公钥( C7C1365D
):
Origin: apt.example.com Label: apt.example.com Codename: testing Architectures: amd64 Components: main Description: Example APT Repository SignWith: C7C1365D DebOverride: override.testing DscOverride: override.testing
创建(空)文件/var/packages/debian/conf/override.testing
:
touch /var/packages/debian/conf/override.testing
然后创建文件/ var / packages / debian / conf / options
:
vi /var/packages/debian/conf/options
verbose ask-passphrase basedir /var/packages/debian
要使用我们的公钥签署我们的deb包,我们需要包dpkg-sig
:
apt-get install dpkg-sig
我要导入到apt存储库的我的nginx deb包位于/ usr / src / pagespeed
目录中。 让我们按照以下方式签署这些软件包(同样,请确保使用正确的公钥):
dpkg-sig -k C7C1365D --sign builder /usr/src/pagespeed/*.deb
现在我们将deb包导入到apt存储库中:
cd /var/packages/debian
reprepro includedeb testing /usr/src/pagespeed/*.deb
4配置nginx
我们需要一个web服务器来为我们的apt存储库提供服务。 在这个例子中,我使用了一个nginx网络服务器。
apt-get install nginx
为apt.example.com配置vhost:
vi /etc/nginx/sites-available/apt.example.com.vhost
server { listen 80; server_name apt.example.com; access_log /var/log/nginx/packages-error.log; error_log /var/log/nginx/packages-error.log; location / { root /var/packages; index index.html; autoindex on; } location ~ /(.*)/conf { deny all; } location ~ /(.*)/db { deny all; } }
启用vhost并重新加载nginx:
cd /etc/nginx/sites-enabled
ln -s ../sites-available/apt.example.com.vhost .
/etc/init.d/nginx reload
我们为存储库创建一个GPG密钥:
gpg --armor --output /var/packages/apt.example.com.gpg.key --export C7C1365D
5使用存储库
要使用存储库,请在/etc/apt/sources.list中放置以下行:
vi /etc/apt/sources.list
[...] deb http://apt.example.com/debian/ testing main [...]
如果您希望此存储库始终优先于其他存储库,则应该在/etc/apt/sources.list的开始处使用此行,并将以下条目添加到/ etc / apt / preferences
(请查看我们的A Short引导入门教程):
vi /etc/apt/preferences
Package: * Pin: origin apt.example.com Pin-Priority: 1001
在我们可以使用存储库之前,我们必须导入它的密钥:
wget -O - -q http://apt.example.com/apt.example.com.gpg.key | apt-key add -
然后更新您的包数据库:
apt-get update
现在,您可以开始使用存储库并从中安装软件包,例如:
apt-get install nginx
6链接
- Debian: http : //www.debian.org/