设置APT存储库与reprepro和nginx在Debian Wheezy

设置一个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 ,所以我们在OriginLabel行中使用它。 在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链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏