当前位置:Linux教程 - Linux资讯 - 利用 ports 來安裝freebsd軟體

利用 ports 來安裝freebsd軟體

 顏國雄 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 的維護者上載的資料有誤


[1] [2] 下一页 

 

(出处:http://www.sheup.com)


上一页 [1] [2]