Linux中國

在Ubuntu下如何創建遠程".deb"包倉庫

步驟 1: 安裝Reprepro並生成key

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

$ sudo apt-get install reprepro gnupg

現在你需要使用gnupg生成一個gpg key,這裡使用下面的命令。

$ gpg --gen-key

它會詢問你一些問題,比如你想要哪種key、key的有效期、如果你不知道如何回答,只需點擊回車 來選擇默認選項(建議)

當然,它會詢問你用戶名和密碼,在腦海中記住這些,因為我們會在之後需要它。

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: (你的名字)
Label: (庫的名字)
Suite: (stable 或 unstable)
Codename: (發布的代碼名,比如  trusty)
Version: (發布的版本,比如 14.04)
Architectures: (軟體包所支持的架構, 比如 i386 或 amd64)
Components: (包含的部件,比如 main restricted universe multiverse)
Description: (描述)
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 &apos;/var/www/apt/dists/Trusty/Release.gpg.new&apos;
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created &apos;/var/www/apt/dists/Trusty/InRelease.new&apos;

步驟 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 &apos;universe&apos;
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 &apos;./dists/Trusty/Release.gpg.new&apos;
FF5097B479C8220C ravisaive (tecmint) <tecmint.com@gmail.com> needs a passphrase
Please enter passphrase:
Successfully created &apos;./dists/Trusty/InRelease.new&apos;

你的包已經加入了倉庫,如果要移除它的話採用如下命令:

# 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 命令。(LCTT譯註:當然你也可以上傳到其它的支持Http/Rsync的伺服器上,以提供遠程軟體庫的服務。)

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

注意:用你在sourceforge.net上的用戶名代替username,用你的項目的UNIX名稱代替myfoo,用你想要存儲的文件夾代替testrepository。

現在你的倉庫(包括設置和key等等)上傳到了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 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國