频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

利用 ports 來安裝freebsd軟體

来源: 作者: 出处:巧巧读书 2006-06-07 进入讨论组

 顏國雄 2001/02 初



FreeBSD 的 packages 是別人已經編譯好的程式並將設定、程序打包在一起的,有時候可能會因為需要啟動某些功能選項,或是想試試 DIY 的樂趣,我們就必需抓原始碼來重新編譯,如果一項項自己來肯定是耗時又費工

FreeBSD 的 ports 就是別人已經編譯過,安裝測試沒問題了,他們將軟體編譯時所需的組態設定、編譯程序及安裝程序都依固定的格式擺在一起,我們只要先將某個軟體 ports 目錄下的檔案抓回來,然後很輕鬆的下

make
make install

即可完成軟體的編譯和安裝(也可以用一行 make all install 來代替)

一般 ports 的咦髁鞒�
fetch 抓取軟體的原始碼(source code),它會依下面的順序搜尋:先找 /usr/ports/distfiles找 /etc/make.conf 中設定的網站找 Makefile 中 MASTER_SITES 設定的網站 extract 檢查 source,並將它解開到 works 的目錄中 patch 對 source 做 patch,修改以符合 FreeBSD 的環境需求 configure 產生設定檔 build 開始編譯 install 將編譯好的東西安裝到系統中

下面就來看看如何利用 ports 來安裝軟體

--------------------------------------------------------------------------------

第一次使用前的準備工作

mkdir -p /usr/ports/distfiles

利用 ncftpget (安裝 ncftp3 的 package即有這個工具) 抓取 Mk 的目錄
cd /usr/ports

ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/Mk

ncftpget -R ftp://ftp.tku.edu.tw/OS/FreeBSD/ports/Mk

※ /usr/port/Mk 這個目錄最好要抓最新的(每次都先以 rm 砍掉後再試著重抓哦)
 不然可能會發生無法順利 make ports 的狀況


ee /etc/make.conf 在裡面加上

MASTER_SITE_OVERRIDE = ftp://ftp.tku.edu.tw/OS/FreeBSD/distfiles/
ftp://ftp.ntu.edu.tw/OS/FreeBSD/distfiles/
ftp://bsd.sinica.edu.tw/pub1/FreeBSD/distfiles/
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/
註:
由於一般 ports 在 make 時如果在 /usr/ports/distfiles 中沒找到 source 會讀取 Makefile 中設定的 MASTER_SITE (大都是設到國外)如果有設定 MASTER_SITE_OVERRIDE 會先去自訂的 URL 試,這樣會比原來設定的國外網站快一些

--------------------------------------------------------------------------------

軟體 DIY開始用 ports 來安裝軟體,例如想自己試試編譯一下 apache

利用 ncftpget 抓取 apache 的 ports

cd /usr/ports
ncftpget -R ftp://ftp.tku.edu.tw/OS/FreeBSD/ports/www/apache13

好了會多一個目錄 apache13

cd apache13
make
make install

如果安裝成功可用 pkg_info 查一下,是不是多了 apache 的 packages 在裡面囉!!

--------------------------------------------------------------------------------

ports make 前加上自己的參數有時我們可能希望啟動某項功能,例如:讓 mysql 資料庫可以接受中文字就必須加上 --with-charset=big5 的參數再 make

ports 想增/減任何組態參數時,只要修改 Makefile 中 CONFIGURE_ARGS 那部份即可有的 ports 甚至用 script 和 dialog 以 menu 的方式讓你選擇要啟動功能,例如: mod_php4,mod_php3 就是以點單的方式選擇,然後 script 再幫你加參數

讓 mysql 資料庫支援中文下面先看如何幫 mysql (server && client) 支援中文

準備工作因為 mysql 在 make 時需用到 libtool所以要先安裝 libtool 的 package ,可以直接用安裝光碟上的就好了
mount /cdrom
pkg_add -v /cdrom/packages/All/libtool*


抓取 ports 的相關檔案cd /usr/ports
mkdir databases
cd databases
ncftpget -R ftp://ftp.tku.edu.tw/OS/FreeBSD/ports/databases/mysql323-server
ncftpget -R ftp://ftp.tku.edu.tw/OS/FreeBSD/ports/databases/mysql323-client


修改 Makefilecd databases/mysql323-server
ee Makefile 找 CONFIGURE_ARGS 的那行,加上一行 --with-charset=big5
變成

CONFIGURE_ARGS= --localstatedir=${DB_DIR}
--with-charset=big5
--without-perl
--without-debug
--without-readline
--without-bench
--with-mit-threads=no
--with-libwrap
--with-low-memory

存好檔後就可以 make 囉!!


ps.如果不想修改 Makefile ,mysql 新的 ports 可以用下面的語法

make WITH_CHARSET=big5


編譯、安裝make all install

清除編譯留下的暫存檔案make clean

當然囉!可以一氣呵成:make install clean


打造自己的 mod_php4mod_php4 可以讓 apache 功能更強大,它可以和很多東西再結合提供更多強大的功能
例如:
選用 gd + freetype 可以讓 php 抓 .ttf 字型檔中的中文字並動態產生 .png 的圖形
啟動 imap 的參數架設像 imp,twig,focalmail 等 webmail。
加入 mysql 的功能,讓 php 可以存取 mysql 資料庫......

準備工作先將 apache 安裝好
要在 mod_php4 中外掛其它功能,在 make 前必須先把相關的套件安裝好
GD: gd-1.8.3.tgz , jpeg-6b.tgz , png-1.0.8_1.tgz
FreeType: freetype
IMAP: cclient
MySQL: mysql3223-client , libtools

抓取 ports 的相關檔案cd /usr/ports
ncftpget -R ftp://ftp.tku.edu.tw/OS/FreeBSD/ports/mod_php4


選擇功能、進行編譯cd mod_php4
make

出現『configuration options』點單選取要用的功能(要先確定那些套件已經裝好哦!!)
記得是用空白鍵來選取/取消,都好了就按 OK

安裝make install


--------------------------------------------------------------------------------

和別人分享自己 make 好的 ports 也可以打包成 packages 和人分享哦!!
只要在 make 完後,執行 make package 就會產生 *.tgz 的 packages 囉!!


--------------------------------------------------------------------------------

移除用 ports 安裝的軟體其實 ports & packages 本出同源,packages 怎麼移除的呢?! pkg_delete -v xxxx
So~唉呀!!一樣的方法即可啦!!這又證明了 FreeBSD 是一個組織架構嚴謹的作業系統
另一個方法是利用 ports 本身的 make deinstall

--------------------------------------------------------------------------------

建議預先安裝的 packages由於很多 ports 在 make 時會用到一些編譯工具或函式庫,如果不是用整個 ports tree
建議先安裝下面幾個 packages 才不致編譯失敗

bzip2 (解壓縮的工具,4.4 起已內建)
autoconf , m4
gettext , gmake
automake
libtool
--------------------------------------------------------------------------------
為什麼 ports 會編譯失敗

有時以 ports 來編譯軟體會失敗,可能的原因如下:
/usr/ports/Mk 不是最新的內容
編譯時少了某些配合的工具
該 ports 的維護者上載的資料有誤

 

   巧巧读书:http://www.qqread.com/linux/2006/06/k210123061.html

更多文章 更多内容请看FreeBSD系统安全管理FreeBSD使用教程Freebsd频道专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章