Getting Set Up

在開始開發Ubuntu之前,有幾件事是你必須先做的。這個章節就是要幫助你把整個環境給建制起來,你就可以開始開發套件(packages),並且上傳你的套件到Ubuntu的主機平台上-『Launchpad』。 底下是大綱:

  • 安裝打包(packaging)相關的軟體,這包括了:
    • Ubuntu特殊的打包工具。
    • 加密軟體,可以保證軟體的一致性。
    • 額外的加密軟體,保證傳輸的安全。
  • 建立和設定你的Launchpad帳號。
  • 建立你的開發環境,這樣你就可以在你的主機上開發/建制(local builds)套件,可以和其他開發者交流,並且將你改的code上傳到Launchpad。
注意事項:

建議使用目前開發版本(Dev)的Ubuntu,這樣可以保證你的環境跟產生問題的環境一樣。但是如果你的環境不是開發版的,你也可以使用:

2.1. Install basic packaging software

要開發Ubuntu的套件你必須要安裝底下的工具:

$ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

注意事項: 自從Ubuntu 11.10(Oneiric Ocelot)以後,或者是你有啟動Backport,底下的這行指令將會安裝上面所有的工具:

$ sudo apt-get install packaging-dev

這些指令將會安裝:

  • gnupg -- GNU Privacy Guard 包含了建立上傳檔案到Launchpad的加密金鑰的工具。
  • pbuilder -- 在一個乾淨又獨立的環境裡去建立一個複製這個套件問題的環境。
  • ubuntu-dev-tools(裡面包含了devscripts,有直接的相依性) -- 這是一個眾多工具的結合,會讓開發更為簡單。
  • bzr-builddeb (包含了bzr) -- 使用Bazaar做分散版本管控,這是一個Ubuntu管理套件的新方式,這個將會讓許多的開發者和工作之間有更好的合作方式。 (準備移除)
  • apt-file -- 這個套件將會讓你更方便的去找到相對應的二進制套件。

2.1.1. Create your GPG key

GPG代表了GNU Privacy Guard,而它也實做了OpenPGP的標準,這部份可以讓你簽核(sign)和加密(encrypt)你的訊息和檔案。

使用底下指令產生GPG 金鑰:

$ gpg --gen-key
  • GPG會先問你你要產生那一種金鑰,可以直接選擇預設就好(RSA和DSA)。
  • 接下來會問你金鑰的長度,預設是2048,這邊也可以選擇預設就好,當然4096會更加的安全。
  • 在來會問你是否要設定這個金鑰的過期期限,如果你設定為0的話就不會過期。
  • 這步驟會問你的名字和email,晚一點也可以用軟體[Passwords and Keys]來增加額外的email。
  • 增加註解,但這是非必要的。
  • 設定密碼(這密碼可以包含空白字符)。

接下來GPG就會產生一組金鑰給你,但是這個會花一點時間。一旦結束了,你會看到如下的訊息:

pub   4096R/43CDE61D 2010-12-06
      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
uid                  Daniel Holbach <[email protected]>
sub   4096R/51FBE68C 2010-12-06

在這個案例裡,『43CDE61D』就是金鑰ID。

下一步,你必須要上傳金鑰的public部份到keyserver上,這樣整個世界就可以藉由你的金鑰識別你是誰了,上傳金鑰到kerserver,請輸入底下指令:

$ gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>
e.g 
$ gpg --send-keys --keyserver keyserver.ubuntu.com 43CDE61D 

這步驟雖然只會將你的金鑰傳到Ubuntu的Keyserver,但是裡面的網路會自動的同步,所以當同步已經完成了,全世界就可以驗證你的金鑰了。

2.1.2 Export your gpg key

如果你的gpg的key是在其它電腦(A),你想要將兩隻key都給import到另一台電腦的話(B),先用底下指令看一下(A)的key是不是你想要的:

$ gpg --list-keys

接下來有兩種方式:(1)只export指定的key,或是(2)export全部的key:

//只export一隻key
$ gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

//export全部的key
$ gpg --export-secret-keys > mygpg_allKeys.asc

//export public key
$ gpg --export > mygpg_PublicKeys.asc

然後將這個檔案給複製到另一台電腦(B)上後,使用底下指令將這個private key給import進去:

//import private key
$ gpg --import mygpg_allKeys.asc

//import public key
$ gpg --import mygpg_PublicKeys.asc

然後看一下有沒有import進去了:

$ gpg --list-keys

2.1.3. Create your SSH key

SSH代表的是Secure Shell,這是一個可以允許你在網路上用更安全的方式去交換資料。在我們的環境裡,我們會使用SSH的方式去上傳source套件到Launchpad上。

執行底下指令去產生SSH金鑰:

$ ssh-keygen -t rsa

在建制之前,系統會問你想要的檔案名稱,但是其實預設的檔名就已經用了,所以建議直接用預設的就好。以安全性而言,當然是建議你使用密碼摟。

2.1.4. Set up pbuilder

pbuilder可以讓你在你的電腦裡去建制套件,其特性為:

  • 這個建制過程將會在一個最小和最乾淨的環境裡。這可以保證你不用去更改到你原本使用電腦的環境,也可以成功的去建制這個環境。
  • 也不用在你的建制環境裡去安裝所有的相依套件。
  • 可以根據不同的Ubuntu和Debian去建立多個環境容器。

設定pbuilder很簡單,只要執行:

$ pbuilder-dist <release> create

< release>在Ubuntu上可以是『xenial』,『zesty』,『artful』等或者是在Debian可以為『sid』或是『buster』,這個指令下完它就會去下載並安裝相對應的最小環境。

Ubuntu的CodeName可以參考: https://wiki.ubuntu.com/Releases

Debian的CodeName則可以參考: https://wiki.debian.org/DebianReleases

2.2. Get set up to work with Launchpad

接下來你的下一步是設定Launchpad的組態,2.2小節將會專注於底下幾個主題:

  • 什麼是LaunchPad和建立一個LaunchPad帳號。
  • 上傳你的GPG和SSH金鑰到Launchpad上。
  • 設定Bazaar,這樣才可以和Launchpad同步。 (準備刪除)
  • 設定你的Bazaar的Bash。(準備刪除)
  • 設定shell的組態(藉由將你的名字放到changelogs裡),這樣系統才知道是你。

2.2.1. About Launchpad

Launchpad是一個我們使用Ubuntu的中間橋樑。它不只儲存我們的套件和source code,它也是一個翻譯站, bug reports和包含所有Ubuntu相關人員團隊的資訊平台。你也會使用Launchpad去發布你修復的bug,並且讓其他的開發者去檢視你所修復的bug。

使用Launchpad,你必須要註冊並且提供最小限度的資訊給它,這樣你才可以在上面下載/上傳程式碼,發送bug reports等等。 除了Ubuntu以外,其實也可以在Launchpad上面去開發其他的案子,詳情請參考Launchpad Help wiki

2.2.2. Get a Launchpad account

如果你沒有Launchpad的帳號,你可以在這個連結申請一個-->create one。如果你已經有帳號了,但是你忘了你id,你可以到https://launchpad.net/~,然後你就會發現你的id出現在『~』之後了。

Launchpad的註冊步驟會要求你選擇一個顯示的名字。建議你使用你真實的姓名,這樣你的『同事們』會更加的了解你。如果你已經註冊了一個帳號,Launchpad將會寄給你一封認證信,如果沒收到的話,就請在檢查一下你的垃圾信。

在Launchpad上面的The new account help page,將會有更多資訊。

2.2.3. Upload your GPG key to Launchpad

首先你必須要取得你的fingerprint和你的key ID。 輸入底下指令:

$ gpg --fingerprint [email protected]

然後就會顯示出如同底下的資訊:

pub   4096R/43CDE61D 2010-12-06
      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
uid                  Daniel Holbach <[email protected]>
sub   4096R/51FBE68C 2010-12-06

然後在輸入底下指令,將會把你的GPG金鑰給傳送到Ubuntu的keryserver (當然要把43CDE61D換成你的金鑰)

$ gpg --keyserver keyserver.ubuntu.com --send-keys 43CDE61D

下一步你就可以將你的金鑰置入到Launchpad上了。 請到『https://launchpad.net/~/+editpgpkeys 』上,將你的『key fingerpring』複製到文字欄位裡。以我們的這個案例來說要輸入的是『5C28 0144 FB08 91C0 2CF3 37AC 6F0B F90F 43CD E61D』然後按下『Import key』。

接下來Launchpad將會使用這個fingerprint去檢查Key Server裡面的你的金鑰,如果有找到的話,將會寄給你一封已經被加密的認證信。如果你的客戶端MUA支援OpenPGP的加密方法的話,它就會提示你輸入密碼。這時候輸入密碼,按下底下的連結,就可以證明這個Key是你的。

由於Launchpad已經加密了這封信,所以你必須使用你的public金鑰,這樣才可以證明這是你的。如果你的MUA是使用『Thunderbird』,這是Ubuntu的預設,你就必須安裝Enigmail plugin來解密。如果你的EUA沒有支援OpenPGP加密,則請複製整個被加密的信件內容,然後到終端機下輸入『gpg』,然後將剛剛複製的加密內容給複製到頁面上,你就會看到解密的內容了。

回到Launchpad的頁面上,按下『Confirm』以後,Launchpad就會置入你的OpenPGP金鑰了。

更多的細節請參考https://help.launchpad.net/YourAccount/ImportingYourPGPKey

2.2.4. Upload your SSH key to Launchpad

請至網頁https://launchpad.net/~/+editsshkeys 上,並且複製檔案『~/.ssh/id_rsa.pub』的內容到網頁上,並且按下『Add an SSH key』,然後按下『Imoort Public Key』,這部份會將你的SSH Public金鑰上傳到Launchpad上。更多的細節請參考: creating an SSH keypair

2.2.5. Configure Bazaar(等待刪除)

Bazaar是一套儲存程式碼的變化的工具,主要目標是在開發者同步開發中也可以交換和merge程式碼。 這是對於Ubuntu套件的一種新的分散開發方法。

為了讓Bazaar知道你是誰,你必須先輸入指令:

$ bzr whoami "Bob Dobbs <[email protected]>"
$ bzr launchpad-login subgenius

whoami 將會在你的commit 訊息上告訴Bazaar你的名字和信箱,因為你已經設定過你的Launchpad ID了,所以你發布在Launchpad上的程式碼將會和你產生關聯。

2.2.6. Configure your shell

Debian/Ubuntu打包工具(packaging tools)都需要知道你是誰,為了要在changelog裡面加入你的紀錄,所以你要有一個環境變數去紀錄這個資訊,請打開你的~/.bashrc,然後輸入如底下的資訊:

export DEBFULLNAME="Bob Dobbs"
export DEBEMAIL="[email protected]"

然後儲存並且重啟你的終端機或者是直接輸入

$ source ~/.bashrc

Ref:

http://packaging.ubuntu.com/html/getting-set-up.html

results matching ""

    No results matching ""