請看看 ports 目錄 吧。這邊有份已經 port 到 FreeBSD 的軟體列表。 目前有超過 6,600 個軟體已經被port 到 FreeBSD 上,並且每天 都在增加中。所以有空就多看看這份列表,不然你也可以訂閱 freebsd-announce 這份 mailing list,會有人將每個星期最新的軟體列表貼在 上面。
大部份的 ports 應該都可以在 2.2,3.0 跟 4.0 的系統上使 用,並且還有部份的 ports 可以在 2.1.x 的系統上運作。每次 當 FreeBSD release 時,都會有一份 ports tree 被放在這一個 release cd 裡面的 ports/ 目錄裡。
我們也支援一種叫 "package" 的概念,基本上 就是 gzip 壓縮、可用來發行的 binary 檔案,但是裡面藏了一 些相當有用的資訊,可以給各種自訂安裝來使用。使用者不必知 道某個 package 裡究竟有包括哪些檔案,就可`以很方便地重複將 它安裝/反安裝。
你可以執行 /stand/sysinstall 後, 在 post-configuration 選單下選擇 package 這個安裝選項;或 是對某個有興趣的 package 檔案執行 pkg_add(1) 把它裝起來。Package 檔案通常以 .tgz 作為延伸檔名,手上有 FreeBSD CDROM 的人可以在 packages/All 這個目錄下找到這類檔案。 對不同的 FreeBSD 版本,也可以從下列位址由網路上取得:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-current/
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current
或是離你最近的 mirror 站。
要注意的是,因為新的 port 一直在增加中,所以並不是所有 port 都有相對應的 package。最好定時檢查ftp.FreeBSD.org ,看看有哪些 package 可以用。
你可能在一台 2.1.x 的機器上,跑著給 2.2/3.x/4.0 的軟體。 請再往上面一個章節看,正確的取得給你機器用的 port/package。
你不小心抓了給 4.X 及 5.X 系統用的 package,並且嘗試著 去裝在你的 2.X 或 3.X 的系統上面。請下載正確版本的 package。
你沒有浮點運算器,對吧?你必須在你的 kernel 中加入數學 運算模擬器,你可以跟著下面的步驟做,並在更改過你的 kernel 設定 檔後,重新編譯過一次。
options GPL_MATH_EMULATE
Note: 當你加入上一行的同時,你必須將 MATH_EMULATE 移除掉。
你必須先修改 /etc/sysconfig (或是 /etc/rc.conf, 請讀 rc.conf(5)) 這檔案最後一個章節,將下面所講到的變數設成 YES:
# Set to YES if you want ibcs2 (SCO) emulation loaded at startup ibcs2=NO
這會在開機時將 ibcs2 這一個 kernel 模組載入。
你還要將你的 /compat/ibcs2/dev 改成下面這樣:
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys -rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx
你只需要將 socksys 轉向到 /dev/null (請讀 null(4)) 去騙過 open & close 的動作。在 -current 裡面的 ibcs2 相關程式碼將會處理其餘的部份,這種作法比以前的方式 乾淨太多了。假如你想要使用 spx 方面的 程式,在你的核心設定檔裡面 加上SPX_HACK。
在你使用 package 或者是 port 安裝完 inn 之後,Dave Barr's INN Page 是個非常好的開始,你可以在那邊找到INN 的 FAQ。
Use the Port, Luke!在 ports tree 中已經有一個包含 FrontPage 的 Apache 版本了。
如果你的 FreeBSD 版本相較 -CURRENT 或 -STABLE 之下是很古 早的話,或許你會需要一個升級 ports 的工具,在 http://www.FreeBSD.org/ports/。如果你以將其更新卻仍無用, 那麼一定是某人更動之後造成 -CURRENT 才能用,-STABLE 無法用的情況。 由於 ports 內所收集的軟體在 -CURRENT 或是 -STABLE 上都要能用, 所以請儘速送出關於此問題的蟲報告;請使用 send-pr(1) 這個指 令來送蟲報告。
有些 a.out 格式的應用程式會需要 a.out 格式的函式庫, Netscape Navigator 就是一個例子。不過用 ELF 函式庫編起來 的 FreeBSD 預設並不會安裝舊的 a.out 函式庫,所以您可能會得 到類似找不到 /usr/libexec/ld.so 的抱怨訊 息。如果說您的系統有這安裝 a.out 函式庫的必要,這些函式庫 (compat22) 也能夠利用 sysinstall(8) 來安裝。或者利用 FreeBSD 原始碼來安裝:
# cd /usr/src/lib/compat/compat22# make install clean
如果你希望每次 make world 時會自動更新 compat22 函式庫,那麼修改 /etc/make.conf, 加入 COMPAT22=YES。這些相容於古老版本的函式庫 已經沒什麼在更新了,所以一般說來是不需要這樣的。
同時也請您看一下 3.1-RELEASE 和 3.2-RELEASE 的勘誤表(ERRATA)。
FreeBSD 本身並沒有自動升級 ports 的工具,但有一些可以讓升級 簡化一些的小程式。你也可以自己裝上額外的工具來處理。
pkg_version(1) 指令可以自動產生用來達到自動升級到 ports tree 最新版本的 script。
# pkg_version -c > /tmp/myscript
一定要在手動修改一下產生出來的 script。 目前的 pkg_version(1) 在 script 最前面加入 exit(1) 強 迫你去修改它。
你應將執行 script 所產生的輸出記錄下來,因為裡面會有記載某些 尚未升級但已經更新的 ports。不過你不一定要去升級它們。通常是因為 有某個共用的函式庫已經改變版本號了,才要去重編一次那些使用到該函 式庫的 ports。
如果你的硬碟空間很夠,那麼可以用 portupgrade 這個工具來做全自動處裡。portupgrade 裡面也有 一些小程式來簡化 package 升級,它在 sysutils/portupgrade。 這個工具是用 Ruby 這個語言寫的,所以並不適合加入到 FreeBSD 的原 始碼中,不過並不會因此讓某些人不用它。
如果你的系統一直都處於開機狀態,可利用 periodic(8) 系統, 每個星期產生一張需要升級的清單。只要在 /etc/periodic.conf 加入 weekly_status_pkg_enable="YES" 就可以了。
因為 POSIX 說,該要有這麼樣的一個 shell 在才行。
比較繁瑣的答案:許多人需要寫可以跨很多平台的 shell script 。 這也是為何 POSIX 將 shell 以及工具命稱都定義的非常詳細的緣故。 大部份的 script 都適用於 Bourne shell,又因為有幾個重要的 寫程式所用到的程式或者函式 (make(1) , system(3), popen(3), 還有在 Perl 或者 Tcl 裡面呼叫系統程式的地方) 都指定用 Bourne shell 。那麼因為 Bourne Shell 如此的廣泛常用, 那麼它的執行效率便很重要,快速是它決定性的要點之一,還要不佔太多 記憶體。
目前的 /bin/sh 已是我們嘔心瀝血之作,它已 經盡量地符合標準規定。為了讓它非常小,我們拿掉了一些其他 shell 有的方便功能。這也是為什麼 ports 裡面還有很多強悍的 shell ,像是 bash, scsh, tcsh 以及 zsh 。 (你可以自己比較一下這些 shell 執行 時所佔的記憶體大小,去看看 ps -u 列出來的 "VSZ" 和 "RSS" 這兩個欄位就知道了。)