TranslateProject/translated/tech/20140625 Create A '.deb Pacakge Repository' at Sourceforge.net Using 'Reprepro' Tool in Ubuntu.md

8.9 KiB
Raw Blame History

在Ubuntu下使用“Reprepro”工具在Sourceforge.net中创建".deb"包仓库

Reprepro是一款小巧的命令行工具来方便地创建并管理**.deb仓库。今天我们会战士如何人使用reprepro简单地创建一个Debian包仓库并使用rsync**上传到Sourceforge.net。

Create Deb Package Repository

步骤 1: 安装Reprepro并生成key

首先安装所有需要的包使用下面的apt-get命令。

$ sudo apt-get install reprepro gnupg

现在你需要使用hnupg生成一个gpg key这里使用下面的命令。

$ gpg --gen-key

它会询问你一些问题比如你想要哪种key、key的有效期、如果你不知道如何回答只需点击Enter 来选择默认选项(建议)

当然,它会询问你用户名和密码,在脑海中记住这些,因为我们会在之后需要它。

gpg (GnuPG) 1.4.14; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) Y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: ravisaive
Email address: tecmint.com@gmail.com
Comment: tecmint
You selected this USER-ID:
    "Ravi Saive (tecmint) <tecmint.com@gmail.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

+++++
gpg: key 2EB446DD marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/2EB446DD 2014-06-24
      Key fingerprint = D222 B1C9 342E 5911 02B1  9147 3BD6 7918 2EB4 46DD
uid                  Ravi Saive (tecmint) <tecmint.com@gmail.com>
sub   2048R/7EF2F750 2014-06-24

现在你的key已经生成了要检查一下用root权限运行这条命令。

$ sudo gpg --list-keys

示例输出

/home/ravisaive/.gnupg/pubring.gpg
----------------------------------
pub   2048R/2EB446DD 2014-06-24
uid                  ravisaive (tecmint) <tecmint.com@gmail.com>
sub   2048R/7EF2F750 2014-06-24

步骤 2: 创建一个包仓库并导出key

我们现在要开始创建仓库,首先你需要创建一些文件夹,我们的仓库会在**/var/www/apt**目录,让我们先创建这些目录。

$ sudo su
# cd /var/www
# mkdir apt
# mkdir -p ./apt/incoming 
# mkdir -p ./apt/conf
# mkdir -p ./apt/key

你现在需要将key导出到仓库文件夹运行

# gpg --armor --export username yourmail@mail.com >> /var/www/apt/key/deb.gpg.key

注意用你之前步骤中输入的用户名代替username用你的email代替yourmail@mail.com。

我们需要在**/var/www/apt/conf**创建一个文件“distributions”。

# touch /var/www/apt/conf/distributions

加入下面这几行到distributions这个文件中并保存。

Origin: (yourname)
Label: (name of repository)
Suite: (stable or unstable)
Codename: (the codename for the distribution you are using, like trusty)
Version: (the version for the distribution you are using, like 14.04)
Architectures: (the repository packages  architecture, like i386 or amd64)
Components: (main restricted universe multiverse)
Description: (Some information about the repository)
SignWith: yes

接下来我们会创建仓库树,运行这些命令:

# reprepro --ask-passphrase -Vb /var/www/apt export

示例输出

Created directory "/var/www/apt/db"
Exporting Trusty...
Created directory "/var/www/apt/dists"
Created directory "/var/www/apt/dists/Trusty"
Created directory "/var/www/apt/dists/Trusty/universe"
Created directory "/var/www/apt/dists/Trusty/universe/binary-i386"
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/InRelease.new'

步骤 3: 在新创建的仓库中加入包

现在准备你的**.deb**包来加入到仓库中。进入 /var/www/apt目录,你每次要加包的时候都不得不这么做。

# cd /var/www/apt
# reprepro --ask-passphrase -Vb . includedeb Trusty /home/ravisaive/packages.deb

注意:用你在distributions文件中输入的仓库代号来代替trusty ,并且用包的路径替换**/home/username/package.deb**,你会被要求输入密码。

示例输出####

/home/ravisaive/packages.deb : component guessed as 'universe'
Created directory "./pool"
Created directory "./pool/universe"
Created directory "./pool/universe/o"
Created directory "./pool/universe/o/ojuba-personal-lock"
Exporting indices...
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/InRelease.new'

你的包已经加入了仓库,要移除它:

# reprepro --ask-passphrase -Vb /var/www/apt remove trusty  package.deb

当然你需要用你的包名与仓库代号来修改命令。

步骤 4: 上传仓库到Sourceforge.net

要上传仓库到Sourceforge.net,你当然需要一个活跃账号与一个活跃项目,让我假设你想要上传仓库到http://sourceforge.net/projects/myfoo/testrepository这里的myfoo是项目名UNIX名称不是URL不是标题testrepository是你想要上传文件到这上面的目录这里我们会使用rsync 命令

# rsync -avP -e ssh /var/www/apt/ username@frs.sourceforge.net:/home/frs/project/myfoo/testrepository/

注意用你在sourceforge.net上的用户名代替username用你的项目的UNIX类型名称代替myfoo用你想要存储的文件夹代替testrepository。

现在你的仓库上传到了http://sourceforge.net/projects/myfoo/testrepository要把它加入到已安装的系统首先你需要导入仓库key它会在**/var/www/apt/key/deb.gpg.key**但是这是一个本地路径并且你仓库的用户不能添加到他们的系统中这就是为什么我们要导入来自sourceforge.net的key的原因。

$ sudo su
# wget -O - http://sourceforge.net/projects/myfoo/testrepository/apt/key/deb.gpg.key | apt-key add -

你现在可以非常轻松地把仓库加入到系统中了,打开**/etc/apt/sources.list**,并加入下面这行:

deb http://sourceforge.net/projects/myfoo/testrepository/apt/key/deb.gpg.key trusty main

Note用你的项目的UNIX类型名称代替myfoo用你的仓库代码代替trusty用你上传存储的文件夹代替testrepository用你在distributionsj加入的仓库组件代替main。

接下来,运行下面的命令来更新仓库列表。

$ sudo apt-get update

祝贺你! 你的软件仓库已经激活了!你现在可以非常简单地在你需要的时候安装包了。


via: http://www.tecmint.com/create-deb-pacakge-repository-in-ubuntu/

译者:geekpi 校对:校对者ID

本文由 LCTT 原创翻译,Linux中国 荣誉推出