2010/08/13

Launchapd PPA & GPG

PPA(Personal Package Archive)

在說 PPA 之前,先來談一下 Launchpad(https://launchpad.net/)。

維基百科告訴我們:
Launchpad 是 Ubuntu 母公司 Canonical 所架設的網站,
是一個提供維護、支援或連絡「Ubuntu 開發者」的平台。

Launchpad 是一個軟體合作平台,註冊帳號之後,你可以在上面開啟或參與軟體專案。
Inkscape、MySQL 等都有使用 Launchpad 做 code hosting。
Ubuntu 預設的標準套件庫也是連到 Launchpad。
Launchpad 幾乎是所有 Ubuntu package 的維護中心。

Every individual and team in Launchpad can have one or more PPAs, each with its own URL.

前面說過,只要有註冊 Launchpad 的帳號,
個人或組織可以在上面展開一個或多個軟體專案。
一個 Launchpad 帳號即有一個 PPA(Personal Package Archive)。
我暫時翻為:個人套件庫
例如:Chrome for ubuntu(https://launchpad.net/~chromium-daily/)
其中小波浪(~)後面跟著的 chromium-daily 就是 Launchpad 帳號了。

Using a Personal Package Archive (PPA), you can distribute software and updates directly to Ubuntu users. Create your source package, upload it and Launchpad will build binaries and then host them in your own apt repository.

你在 PPA 底下開發的軟體,是可以直接發佈或更新給 Ubuntu 的使用者的。
只要該使用者取得你 PPA 的位址,並且將該 PPA 位址加入他的來源清單。
他之後就可以使用 apt-get 指令從你的 PPA 安裝或更新軟體。

Ubuntu 9.10 版之後,新增一個 PPA 來源很簡單。
只要連到欲加入 PPA 的 Launchpad 網頁(PPA's overview page),
找到類似底下型式的 PPA 位址:
ppa:某個 Launchpad 帳號/名稱
(例如:ppa:chromium-daily/stable)
在終端機底下執行:
sudo add-apt-repository ppa:某個 Launchpad 帳號/名稱
(例如:sudo add-apt-repository ppa:chromium-daily/stable)
最後,再執行一下:
sudo apt-get update

---

而舊版 Ubuntu 的 PPA 來源新增,一樣需要到該 PPA 的 Launchpad 網頁,
找到類似底下型式的位址:
deb http://ppa.launchpad.net/某個 Launchpad 帳號/名稱/ubuntu 你的 Ubuntu 版本代號 main
deb-src http://ppa.launchpad.net/某個 Launchpad 帳號/名稱/ubuntu 你的 Ubuntu 版本代號 main
(例如:deb http://ppa.launchpad.net/chromium-daily/stable/ubuntu lucid main)
(例如:deb-src http://ppa.launchpad.net/chromium-daily/stable/ubuntu lucid main )
複製這兩行來源位址,新增到以下的檔案的最末行:
/etc/apt/sources.list

將 sources.list 存檔,關閉。
回到該 PPA 的 Launchpad 網頁(PPA's overview page),
找到類似底下字串的簽名金鑰(Signing key),例如它可能是:
1024R/4E5E17B5
*注意:這只是例子,你要新增的 PPA 的金鑰跟上面那行字串可能是不同的。

複製後面的 4E5E17B5,到終端機底下執行:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4E5E17B5
*注意:記得把 4E5E17B5 換成你真正要新增的 PPA 的金鑰。
最後,再執行一下:
sudo apt-get update

---

如果是使用桌面版的 Ubuntu,套件來源以及 PPA 的管理可以到:
System -> Administration -> Software Source
*注:我是裝英文版 Ubuntu,我想中文應該是翻成:系統 -> 管理 -> 軟體來源

---

GPG(GNU Privacy Guard)

GPG(或稱 GnuPG)是使用公開金鑰(Public Key)的加密系統。
其中 OpenPGP、PGP、GPG/GnuPG 是三個不一樣的東西。

OpenPGP 是一套加密技術的標準規範,並不是一套程式。
PGP 是 Pretty Good Privacy 的縮寫,是根據 OpenPGP 規範實作的一套程式。
GPG/GnuPG 是 GNU Privacy Guard 的縮寫,是根據 OpenPGP 規範實作的一套程式。

Ubuntu 預設安裝的是 GPG/GnuPG,可以執行以下指令查看說明:
gpg --help

你可以 GPG 來產生自己的金鑰,可以加密電子郵件、製作電子簽名等等。
Launchpad 也是使用 GPG 作加密驗證。

GPG 的公鑰與私鑰是成對的。

---

透過 Proxy 來取得 gpg key:gpg --keyserver-options http-proxy --keyserver keyserver.ubuntu.com --recv-key E5267A6C

keyserver 出狀況時,只好手動來了
wiki.debian.org/SecureApt
1] get the public key file
2] apt-key add the_public_key_file

---

Reference:
http://wiki.ubuntu-tw.org/index.php?title=Launchpad
https://help.launchpad.net/Packaging/PPA
https://help.ubuntu.com/community/GnuPrivacyGuardHowto
http://wiki.debian.org.hk/w/Add_software_repositories_in_Ubuntu

Further Reading:
http://zh-tw.whygitisbetterthanx.com/