在 Windows 底下要安装新的应用程式时 , 通常就是执行一下 SETUP.EXE
, 选选安装目录 , 回答几个简单问题 , 然後 SETUP.EXE 就会帮你把该做
的事做好 。但是在 UN*X 的世界里通常不是就不是这麽简单了 , 除非你
买的是商业软体 , 不然一般你拿到的会是一包一包的 source code , 而
不是现成弄好的可执行档 。
在 Windows 的世界里 , 一方面因为应用程式是一个个的商品 , 为了商品
的利益 , 厂商不可能把形同命脉的 source code 丢出来给你;另一方面
也因为 Windows 就只在 Intel 系列的平台上面执行(当做没有 NT 可
以在 Alpha 上面跑这一回事存在 :P ) , 它就不需要考虑编成 binary
後在不同平台上面的适应性 。反观 UN*X 的世界 , UN*X 是架构在各式各
样不同的平台上面 , 你绝对没办法用同一套 binary 吃遍所有的系统 。
而且在 UN*X 世界中 , 许多程式的作者并不把能从他写的程式获得多少
利益摆在最重要的位置 , 而是希望他所写的程式能让更多的人受惠 , 并
希望他的程式能变好 , 所以他们会把 source code 放出来 , 大家一
起来集思广益 , 让程式更好 。
在 UN*X 下的程式 , 一般都是用 C 语言来写的 。虽然 C 语言有它的标
准 , 而且本身已经有很好的可携性 , 但是在不同的 UN*X 系统下 , 却还
是会有 "大同小异" 的问题存在 。虽然整个程式的大体架构、语法大致
相同 , 但是不同的系统间还是有些小小的差异 , 比如说 head file 的不
同啦、资料型态资料大小的不同啦、系统目录结构的不同啦....etc 。因
为这些大同小异 , 所以即使你在一个系统上面写的程式能在这个系统上
面正常的 compile , 正确的执行 , 但是拿到另一个系统上面却未必行得
通 , 通常必需视不同的系统做不同的修改 。这种把 A 系统上面可以正常
运作的程式 , 弄成在 B 系统上面也能正常运作的工作 , 就称为 "PORT"
。
简单的 PORT 可能改改目录位置 , 加上几个 #ifdef 之类的东东就可以
解决了 , 但是有时候如果遇到像是程式和系统的关连太深、程式用到一
些 A 系统内部提供但 B 系统却没有的功能时 , 那 PORT 的工作就不是
那麽简单了 。但是 , 如果你选用了 FreeBSD , 那就只有一句话:啊~福
气啦!在 FreeBSD coreteam 有系统的整理之下 , 目前 FreeBSD 已经有
超过二千种各式各样应用程式的 ports , 使用这些 ports , 你不需要自
己再去看 source 改 code , 所有需要修改的部份都已经有人代劳 , 帮你
改得好好的 , 你所需要做的事情非常的简单:make install 。是的 , 就
是这麽一道指令 , 一切 OK 。
因为目前 FreeBSD 只能在 Intel 系列的系统上跑 , 所以如果你觉得用
ports 还要自己 compile 很麻烦 , FreeBSD 提供你另一项选择:package
。所谓的 package 就是有人帮你把程式都 compile 成 binary 了 , 并
把这些 binary 及一些相关的文件、档案压成一个 *.tgz 档 , 你只需要
直接用 pkg_add 就可以进行安装 , 把这些 binary 放进系统里面 , 直接
就可以使用了 , 方便省事 。不过一般如果可以的话还是比较建议使用
ports 来安装 。
package 就是别人帮你 compile 好的 ports , 而 ports 就是要自己从
source code 来 compile 出 binary , 但是已经有人把该修改的东东修
改好了 , 你无需再烦心如何让这个程式能在 FreeBSD 上正常的 compile
正常的运作 。一般的 ports/package 都会把东东放到 /usr/local 目录
下面 , 执行档就放到 /usr/local/bin , 设定资料放在 /usr/local/etc
, library 放在 /usr/local/lib , manual 放在 /usr/local/man 。
推荐阅读
- FreeBSD handbook中文版 4 安装应用程序:Packages 和Ports
- FreeBSD 管道及&&的功用
- FreeBSD Port Tree 介绍
- FreeBSD Packages和Ports使用技巧
- 用ports安装如何指定服务器
- FreeBSD 的部分Package简介
- Monitoring Interface for Apache 1.3 & MRTG
- 利用 portupgrade快速更新通过ports安装的软件
- 把Linux的密码->FreeBSD database
- Ports & Package