我來試試Ubuntu人有多瘋狂!? 由Ubuntu 6.10 (Edgy Eft) 升級的人請先參看 http://www.ubuntu.com/getubuntu/upgrading。 要Ubuntu 7.04 (Feisty Fawn) Desktop CD-ROM ISO的香港朋友可以試試我家的電腦:
另外還有未完成的Install Guide。
While Debian GNU/Linux 4.0 (Etch) released on Easter, there are some bugs on the Chinese support:
What you need to do is:
su -c 'apt-get install ttf-arphic-uming scim-tables-zh im-switch'
大概我近來真的犯太歲,搞什麼活動都給人在背後說三道四,好像我做什麼都要得人家批準似的。工作了這麼多年頭,也對那些口蜜腹劍的小人有點麻木,反正只要當你有利用價值時,就會有堆所謂好朋友在你身邊出現說盡甜語蜜語。熟悉那些小人的朋友都知他喜自吹自擂,所說的錯漏百出。
回正題,早在去年的LinuxTalk也和到場的朋友略談過對香港政府的「在數碼環境中保護知識產權」 諮詢文件的看法,剛巧二月一日到嶺南學院搞的相關研討會就決定在HKLUG搞個同類活動,因為這幾個月事忙,推遲到四月七日才可以舉行。有沒有價值還是讓到場的你去批評吧!
早前上北京時和YPWong談過想改改OSWikiHK(香港開源維基)的名字,和LinuxTalk改成FOSSTalk一樣,想著筆多點在自由軟件上。當時想過改成FOSSWikiHK,不過昨天YP提出想取消香港這個字讓OSWikiHK不要受到太多地區局。當然我原身發起OSWikiHK專案的主要目的是為香港人保留多點有用的中文文章,不過近年OSWikiHK的讀者在中港台三地都很平均,有一篇文章部份內容也被國內的書籍引用。抽出香港一字也是好事。不過新名的名字就頗費腦筋,最好不會和其他站太相似,以免引起混亂。
要在華人社區流行,自然要有個好的中文名。開源維基並不符合我想強謂自由軟件的要求,所以想了以下一些提案:
結果YPWong認為第一個最好,當然我只是隨意想個名字。自由軟基這個名事有點搞笑,不過才是不錯的選擇。英文名又如何? 外國早有FOSSWiki,所以英文名字比中文名更難。
大家有何意見?
當你在使用Ubuntu/Debian的正式發行版本,但想使用在開發版本中的新加入的軟體或者想使用在開發版本中有關軟體的新版本,又或者想微調某些軟體的編譯設定。當然backport.org有不少由Debian開發版本backport回到正式發行版本的套件,而Ubuntu亦有提供edgy-backports軟體庫,但如果他們沒有提供你需要的軟體或不符合你的要求,那你就需要重新編譯dpkg套件。
注意本文都最完整和最新版本改放上OSWikiHK,請到那裡參考。
首先自然需要先取得有關dpkg套件的源碼包。和RPM不同的套件源碼一般都有三個檔案:
取得目標dpkg套件源碼的三個檔案,最簡單自然是用apt-get source命令下載。首先你需要確定 /etc/apt/sources.list 有沒有「deb-src」一行:
deb http://ftp.hk.debian.org/debian/ sarge main contrib non-free deb-src http://ftp.hk.debian.org/debian/ sid main contrib non-free
如果你是想由開發版本中backport一個套件回來,自然要使用開發版本的軟體庫,以Debian為例,自然是使用 sid。設定好後,在系統管理員身份下用「apt-get update」更新軟體庫資料。然後就可以用「apt-get source 套件名」取得目標dpkg套件源碼。這個指令會幫你幫別目標套件真正源碼名稱 (如套件 libapache2-mod-cband 的源碼包是 mod-cband ) ,下載套件源碼的三個檔案,並自動拆開源碼。為方便管理,建議建立目錄 ~/projects/dpkg並在裡面才進行apt-get source:
mkdir -p ~/projects/dpkg cd ~/projects/dpkg apt-get source libapache2-mod-cband
完成後,你會在當前目錄找到到套件源碼的三個檔案和以套件源碼名稱和版本編號組成的目錄 (例如mod-cband-0.9.7.5) ,目錄裡面就是套件的源碼。
$ ls mod-cband-0.9.7.5 mod-cband_0.9.7.5-1.diff.gz mod-cband_0.9.7.5-1.dsc mod-cband_0.9.7.5.orig.tar.gz
當然你亦可以自動下載orig.tar.gz、dsc和diff.gz三個檔案。下載後,可以用「dpkg-source -x dsc檔」把原始碼拆開:
$ dpkg-source -x mod-cband_0.9.7.5-1.dsc dpkg-source: extracting mod-cband in mod-cband-0.9.7.5
執行後,你會在當前目錄找到到套件源碼的三個檔案和以套件源碼名稱和版本編號組成的目錄 (例如mod-cband-0.9.7.5) ,目錄裡面就是套件的源碼。
習慣上你首先要改動版本編號,記錄這次重編的目的。當然你可以略過這個步驟,但有機會做成往後升級的混亂,所以也建議花點時間做做這個簡單的工作。
版本編號和更動說明是記錄在套件源碼下 debian/changelog 中。你可以用文字編輯器直接修改這個檔案,但我們一般會先用命令「debchange -i 更動說明」加入版本更動的框架,例如:
debchange -i Backport to sarge
執行後用文字編輯器編輯debian/changelog,你會見到類似以下內容:
mod-cband (0.9.7.5-2) unstable; urgency=low * Backport to sarge – Fred Random <fred@example.org> Tue, 3 Apr 2007 17:56:19 +0800 mod-cband (0.9.7.5-1) unstable; urgency=low
粗體為debchange新加的內容。這表示這個例子中原本你下載的套件版本編號是0.9.7.5-1,debchange會順勢把建立編號(build number)加一,變成 0.9.7.5-2 。為讓人一看就知重編後的套是backport,亦方便以後有更新時可以蓋過個版本,我們會把建立號減一,加上「.1sarge1」,令版本編號變成 0.9.7.5-0.1sarge1 。sarge後的 1 表示這個版本被重編的次數。如果在重編後發覺有問題,需要再新編,請將這個數目加一。改動後的debian/changelog 會變成如下:
mod-cband (0.9.7.5-0.1sarge1) unstable; urgency=low * Backport to sarge — Fred Random <fred@example.org> Tue, 3 Apr 2007 17:56:19 +0800 mod-cband (0.9.7.5-1) unstable; urgency=low
接著你需要安裝編譯時所需開發套件,這些套件的名單在 debian/control 的的 Build-Depends 一行中:
$ egrep ‘^Build-Depends:’ debian/control Build-Depends: debhelper (>= 4.0.0), autotools-dev, apache2-threaded-dev | apache2-prefork-dev, po-debconf
這顯示你需要安裝debhelper、autotools-dev、apache2-threaded-dev和po-debconf等四個套件才可以重編mod-cband,而debhelper必定要4.0.0或以上,apache2-threaded-dev可以用apache2-prefork-dev取替。
最簡單的方法是在系統管理員身份下打「apt-get build-deb 套件」,這命令自然會幫你下載並安裝有關套件所需開發套件。不過很多情況下不會那麼順利,在backport過程中,會遇到在正式發行本中未有所需開發套件,套件名稱改變了或版本不符合等問題,而apt-get build-deb遇到些情況會停下來。這時候你需要自行找出在正式發行本中對應的套件 (如 apache2.2-common 對應 apache2-common 或 apache-common) ,自行手動用 apt-get 下載並安裝,和更動debian/control 的需求。最差的情況下,你有機會需要重編幾個開發套件。
接著你需要套件的相依性,即檔案 debian/control 中的 Depends 一行中:
$ egrep ‘^Depends:’ debian/control
Depends: ${misc: Depends}, ${shlibs: Depends}, apache2.2-common
這顯示你需要安裝apache2.2-common套件才可以安裝mod-cband。
你需要檢查一下你現時的發行版本是否有Depends列出的套件和版本是否符合。例如:
$ apt-cache show apache2.2-common W: Unable to locate package apache2.2-common E: No packages found
這表示你現時的發行版本並沒有apache2.2-common這個套件。這時候你需要自行找出在正式發行本中對應的套件 (如 apache2.2-common 對應 apache2-common 或 apache-common) ,例如:
$ apt-cache search apache common apache - versatile, high-performance HTTP server apache-common - support files for all Apache webservers apache-perl - versatile, high-performance HTTP server with Perl support apache-ssl - versatile, high-performance HTTP server with SSL support apache2-common - next generation, scalable, extendable web server axyl-lucene - The Axyl Luceneserver cl-modlisp - Common Lisp interface to the Apache mod-lisp module
apache2.2-common可能對應apache2-common 或 apache-common。你需要更動debian/control 的需求,把Depend一行改成:
Depends: ${misc: Depends}, ${shlibs: Depends}, apache2-common
但最差的情況下,你有機會需要重編幾個相依的套件。
現在你可以用debuild重編套件。因為包封套件時需要製做一個系統管理員的環境,我們需要fakeroot的協助。請打:
<
pre>debuild -rfakeroot
現在你的目錄一般會多了最少五個檔案:
$ ls libapache2-mod-cband_0.9.7.5-0.1sarge1_i386.deb mod-cband-0.9.7.5 mod-cband_0.9.7.5-0.1sarge1.diff.gz mod-cband_0.9.7.5-0.1sarge1.dsc mod-cband_0.9.7.5-0.1sarge1_i386.build mod-cband_0.9.7.5-0.1sarge1_i386.changes mod-cband_0.9.7.5-1.diff.gz mod-cband_0.9.7.5-1.dsc mod-cband_0.9.7.5.orig.tar.gz
libapache2-mod-cband_0.9.7.5-0.1sarge1_i386.deb 就是重編出來的套件。
現在你可以安裝新套件了:
# dpkg -i *.deb