Subscribe to RSS Subscribe to Comments Blog of Roy Chan

Blog of Roy Chan

606 和 610

看到這兩個數目字,我們想到的不是熊貓,而是野鴨和小蜥蜴 ;P。 那 704 和 710 會送到那裡?


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Ubuntu群有多瘋狂!?

我來試試Ubuntu人有多瘋狂!? 由Ubuntu 6.10 (Edgy Eft) 升級的人請先參看 http://www.ubuntu.com/getubuntu/upgrading。 要Ubuntu 7.04 (Feisty Fawn) Desktop CD-ROM ISO的香港朋友可以試試我家的電腦:

另外還有未完成的Install Guide


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Ubunt 7.04 - 活躍的小鹿(Feisty Fawn)出世了

結果 Ubuntu 7.04 還是準時推出。不知是否太多關注這次發佈,早上 Ubuntu 官方網站經常連不到。如果真的是這個原因,Mark Shuttleworth似乎要開大事慶祝了。以這幾天的情況,我勸大家還是使用BT下載Ubuntu ISO把。我已長期開了Desktop i386amd64的torrent,希望幫到大家。

相關連結


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Fix your chinese support in Debian 4.0

While Debian GNU/Linux 4.0 (Etch) released on Easter, there are some bugs on the Chinese support:

  • Display Full-width(全形) English character in HK locale - If you choose the HK during installation, Debian will not install the font “AR PL ShangheiSun Uni” (ttf-arphic-uming). Then it will use 12×13ja.pcf.gz in xfonts-base to display the Chinese character . Install ttf-arphic-uming will fix it.
  • No Chinese Input Method - You should install scim yourself. For hongkong people who prefer using Cangjie/Quick input method, you can install scim-tables-zh and APT will install every things you need
  • Don’t start Chinese input method engine automatically - You should install im-switch yourself

What you need to do is:

su -c 'apt-get install ttf-arphic-uming scim-tables-zh im-switch'

Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


知識產權研討會如何才對自由軟件社群有益!?

大概我近來真的犯太歲,搞什麼活動都給人在背後說三道四,好像我做什麼都要得人家批準似的。工作了這麼多年頭,也對那些口蜜腹劍的小人有點麻木,反正只要當你有利用價值時,就會有堆所謂好朋友在你身邊出現說盡甜語蜜語。熟悉那些小人的朋友都知他喜自吹自擂,所說的錯漏百出。

回正題,早在去年的LinuxTalk也和到場的朋友略談過對香港政府的「在數碼環境中保護知識產權」 諮詢文件的看法,剛巧二月一日到嶺南學院搞的相關研討會就決定在HKLUG搞個同類活動,因為這幾個月事忙,推遲到四月七日才可以舉行。有沒有價值還是讓到場的你去批評吧!


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


OSWikiHK改名

早前上北京時和YPWong談過想改改OSWikiHK(香港開源維基)的名字,和LinuxTalk改成FOSSTalk一樣,想著筆多點在自由軟件上。當時想過改成FOSSWikiHK,不過昨天YP提出想取消香港這個字讓OSWikiHK不要受到太多地區局。當然我原身發起OSWikiHK專案的主要目的是為香港人保留多點有用的中文文章,不過近年OSWikiHK的讀者在中港台三地都很平均,有一篇文章部份內容也被國內的書籍引用。抽出香港一字也是好事。不過新名的名字就頗費腦筋,最好不會和其他站太相似,以免引起混亂。

要在華人社區流行,自然要有個好的中文名。開源維基並不符合我想強謂自由軟件的要求,所以想了以下一些提案:

  • 自由軟基
  • 自源軟基
  • 自由源基
  • 自由源維
  • 自由軟維

結果YPWong認為第一個最好,當然我只是隨意想個名字。自由軟基這個名事有點搞笑,不過才是不錯的選擇。英文名又如何? 外國早有FOSSWiki,所以英文名字比中文名更難。

  • FOSSCWiki
  • FOSSCiki
  • FOSSKi
  • FreeSoCiKi

大家有何意見?


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


如何重新編譯dpkg套件

當你在使用Ubuntu/Debian的正式發行版本,但想使用在開發版本中的新加入的軟體或者想使用在開發版本中有關軟體的新版本,又或者想微調某些軟體的編譯設定。當然backport.org有不少由Debian開發版本backport回到正式發行版本的套件,而Ubuntu亦有提供edgy-backports軟體庫,但如果他們沒有提供你需要的軟體或不符合你的要求,那你就需要重新編譯dpkg套件。

注意本文都最完整和最新版本改放上OSWikiHK,請到那裡參考。

取得源碼

首先自然需要先取得有關dpkg套件的源碼包。和RPM不同的套件源碼一般都有三個檔案:

  • 源程式碼包 (*.orig.tar.gz) - 這是有關軟體原身的源程式碼包 (例如: mod-cband_0.9.7.5.orig.tar.gz) 。原則上是完全沒有被改動過(除了檔案名稱被改至符合dpkg的規格外),和在開發者網站取得的一模一樣。
  • 套件描述 (*.dsc) - 有對有關軟體的簡單描述 (例如: mod-cband_0.9.7.5-1.dsc) 。包括套件名稱、版本、維護者、可編譯平台、編譯時需要的套件和 orig.tar.gz 及 diff.gz 檔的 hash 值。為確保套件沒有被任何人更動過,所有由官方提供的dsc都已用維護者的數位簽名簽著過。
  • 補丁檔 (*.diff.gz) (非必有) - 維護者對改動 (例如: mod-cband_0.9.7.5-1.diff.gz) 。包括加入control、changelog等檔案。如果開發者一早已debian化整個源程式碼,可能不會有diff.gz檔的出現。

使用 apt-get source

取得目標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

相關頁面


Share It: [del.icio.us] [Technorati] [Google Bookmark] [Yahoo MyWeb] [Furl]


Based on Fluidity© 1998-2007 Roy Hiu-yeung Chan