Ubuntu Distributed Development — Introduction

官方似乎已經打算要移除這個部份了,所以這個章節沒有參考價值!!

這個章節將會著重於使用Ubuntu Distributed Development (UDD)來包裝軟體。 UDD是一種開發Ubuntu套件的新方法,其使用的工具,程序都相似於軟體開發的Distributed Version Control System (DVCS)。在UDD的DVCS就是使用Bazaar

3.1. Traditional Packaging Limitations

傳統的Ubuntu套件都是一直被保持在『tar ball』的格式。都是由upstream所壓縮的tar ball。一個Debian的tar檔包含了被包裝起來的套件還有一個.dsc的meta-data檔。如果想要看一下傳統套件可以輸入:

$ apt-get source kdetoys

這將會下載 『kdetoys_4.6.5.orig.tar.bz2』 『kdetoys_4.6.5-0ubuntu1.debian.tar.gz』 『detoys_4.6.5-0ubuntu1~ppa1.dsc』 假設你有安裝dpgk-dev,則它將會對這些tar檔解壓縮。

傳統的打包方式將會編輯這些檔案並且上傳。然而這樣將會去侷限和其他開發者同步的機會,如果沒有一個中間媒介去同步的話,則他們就無法同時去改變這些套件。所以很多的團隊都已經在使用版本管控系統(revision control system),所以團隊成員就可以同時對同一個套件去做修改。然而在版本管控系統和壓縮套件之間並沒有直接的關聯,所以這兩個必須要手動的去同步。因為每個團隊都使用他們自己的版本管控系統,所以一個開發者就必須先搞清楚要到哪裡去取得這個套件,然後才可以開始作業。

3.2. Ubuntu Distributed Development

隨著Ubuntu的UDD,所有在Ubuntu/Debian裡面的套件檔案都會自動的置入到Ubuntu的程式碼主機-Launchpad上的Bazaar分支。所以這些程式碼的改變都可以藉由有commit權限的人以逐步的方式直接的將其進到這些分支裡。當然你也可以直接從分支裡面去把程式碼給複製出來,然後在用一個『merge request』去將它給merge回去,又或者是你沒有權限的話,就需要有權限的人幫你給merge回去。

UDD分支都會在標準的位置,所以如果你要checkout的話,只要下指令:

$ bzr branch ubuntu:kdetoys

merge的歷史紀錄包含了兩個分開的分支,一個是『upstream source』,另一個則是加入了『debian directory』。

$ cd kdetoys
$ bzr qlog

(在GUI的話要使用命令「qbzr」,在CMD的話則要使用「qlog」。)

這個UDD的kdetoys分支用「灰色圓」顯示了上傳到Ubuntu的每個版本的全部套件。用「綠色圓」顯示了upstream的原始碼版本。

許多的Ubuntu套件都是基於Debian的,所以UDD也會將Debian的套件給引進branch裡。

在上面的分支裡面「藍色圓」代表了是從Debian的unstable版本所merge過來的,然後「黃色圓」則是從Debian的實驗結果merge過來的。可以看到Debian的釋出版本為4:4.2.2–1。

從UDD的分支上,你也可以針對兩個不同的版本去比較內容。舉個例子來說,如果你要比較debian版本4.2.2和Ubuntu版本4.2.2的話你可以用以下指令:

$ bzr qdiff -r tag:4:4.2.2-1..tag:4:4.2.2-1ubuntu1

(在GUI的話要使用命令「qbzr」,在CMD的話則要使用「qdiff」。)

3.3. Bazaar

UDD的分支使用了Bazaar,他是一個分散式版本管控系統,如果你已經懂像是subversion或是Git的人,這套工具應該會很好下手。如果要使用UDD去打包套件的話你必須要有一些如何用Bazaar去管理檔案的基礎知識。更多的Bazaar細節請參考 Bazaar Five Minute TutorialBazaar Users Guide

3.4. Limitations of UDD

UDD雖然說是一個運作在Ubuntu套件的新方式,但是他目前還是有一些限制在:

  • 如果你想要運行整個歷史分支,這將會花費很多的時間和網路資源。你也許會發現如果用一個輕量的checkout bzr checkout ( lightweight ubuntu:kdetoys )會更加的快,但是這必須要使用網路去存取更多的bzr資源。
  • patches的運作是非常繁雜的,Patches也可以被視為一個分支版本管理系統。所以就會變成在RCS(Revision Control System)上面又有一個RCS。
  • 你無法直接從分支建立資源。你必須建立一個新的套件後,在上傳到這個新建立的套件上。
  • 有些套件並沒有被成功的上傳到UDD的分支,最新版本的Bazaar將會自動的通知你這個狀況。你也可以藉由status of the package importer,來手動的檢查。

所有上面的UDD介紹都期望會很快的變成Ubuntu套件開發的主流,然而目前大部分的內部團隊還是沒有使用UDD開發。


Ref:
http://packaging.ubuntu.com/html/udd-intro.html

results matching ""

    No results matching ""