![]() ![]() ![]() ![]() |
||
FreeBSD Ports System : Master/Slave ports、Language ports、Meta ports作者:ijliao 1. 前言 在介紹過了 port 的使用和製作方法以後,接下來要認識一些比較 "複雜" 的東西,也就是標題上面寫的那三種 master/slave、language、meta;不過因為這三種 ports 比較特殊,一時之間也找不到適當例子可以實做給大家看,所以本期就以參觀附帶講解為主。 2. Master/Slave ports 這一部份我拿大家耳熟能詳的 "MySQL" 來做例子。 進到 ports/databases 裡,可以看到 mysql 有很多版本,3.2.3/4.0/4.1/5.0,再仔細看看,每個版本都還分成兩三個不一樣的 port,-client/-server 等等;切進各個目錄看看,嗯... -server 的看起來好像還蠻正常的,該有的檔案都有,但是為什麼 -client 的就都只有一個 Makefile,而且這個 Makefile 長得看起來也不太像是以前看過的樣子呢 ? 其實這就是所謂的 Master/Slave ports,而很明顯的 -server 是 Master port,-client 就是 Slave port 啦。 簡單的說,你可以把 slave port 想像成是 "master port 的特例" (這個例子要看 ports/editors/vim 和 ports/editors/vim-lite 比較容易體會),所有的設定都寫在 master port 那邊,而 slave port 只是 enable/disable 某些選項。在做 master/slave port 的時候其實和其他 port 沒什麼不同,只有幾個地方要特別注意:
3. Language ports 對非英語系國家的使用者而言,對電腦的恐懼除了科技本身以外,語言不通也是很大的一個因素;不過還好有很多熱心的人為大家做了很多修補工作,讓大家用起來更方便。在 FreeBSD 的 ports system 裡面,這些 language ports 是以一種 "master/slave ports 的特例" 的型式存在,以下就拿 ports/chinese/mutt 來做介紹:
4. Meta ports 不知道大家有沒有自己 build 過 X/gnome/KDE 等等巨型程式 ? 有沒有想像過如果 build 到一半出錯了怎麼辦 ? 在古老的年代裡,只要中途出了點小錯,或者是只要有一個小程式要更新,使用者就要花時間把所有的程式全部重新 build 一次;不過在發展出 meta port 的技術以後,使用者可以很輕易地分別安裝分別升級,再也不用被綁在一起了。 在 meta port 裡面,通常會看到 MASTER_SITES、DISTFILES 和 EXTRACT_ONLY 被設成 empty,NO_BUILD 被設成 yes,do-install 也不會做任何事,然後 *_DEPENDS 下面就列了落落長一大串;這麼一來,當使用者在安裝的時候,會自動去安裝各別的 sub-port,全部安裝完了以後,目前的這個 meta port 也就自動完成了。而在要昇級的時候也是一樣,只要 depends 沒設錯,對 meta port 下 portupgrade 的指令就會自動去昇級各該 sub-port。 5. 結語 看了這麼幾期下來,讀者們應該對於 ports collection 不管是在使用上或是在製作上都應該有了相對的了解,希望大家有空的時候也能練習一下,多多 submit 一些程式到 FreeBSD 的 ports 來,讓 ports collection 更豐富。另,這是本系列的最後一篇,爛戲拖棚也到了尾聲,下回就要想新題目了 XD |
|
|