亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

Ports & Package

2024-07-26 00:29:18
字體:
來源:轉載
供稿:網友
在 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。

package 是一個一個的 tgz 檔,你可以在 
ftp://freebsd.csie.nctu.edu.tw/pub/packages-* 目錄下面找到所有
的 package,如果你用的是 FreeBSD 2.2*,就找 packages-2.2,若是
3.0*,則是 packages-3.0。packages-* 目錄下面還把各種 packages
依照功能等特性分類,讓你可以更方便的找到你所要的東東。在這里就
拿 audio/amp-0.7.6.tgz 來說,用 tar -tvzf amp-0.7.6.tgz 可以看
到它的內容如下:

-rw-r--r-- root/bin        181 Nov  6 17:54 1997 +CONTENTS
-rw-r--r-- root/bin         19 Nov  6 17:54 1997 +COMMENT
-rw-r--r-- root/bin        514 Nov  6 17:54 1997 +DESC
-rw-r--r-- root/wheel     4358 Nov  6 09:14 1997 +MTREE_DIRS
-r-xr-xr-x bin/bin       94208 Nov  6 17:53 1997 bin/amp
-r--r--r-- bin/bin         853 Nov  6 17:53 1997 man/man1/amp.1.gz

其中 +COMMENT 這個檔案簡單介紹一下這個 package,而 +DESC 里面則
是較詳細的介紹或是一些注意事項等。+CONTENTS 里面則是列出了這個
package 里面有哪些檔案,它們會被安裝到哪里去。你用 pkg_add 來安
裝或是用 pkg_delete 來反安裝 package 時會參考到這些資料。
+MTREE_DIRS 里面放的是要丟給 mtree 的資料,用來設定檔案目錄的權
限等等的。接下來有幾個目錄、檔案。這些目錄都是相對於 /usr/local
的,也就是說這里面的 bin/amp 到時候會安裝到 /usr/local/bin/amp
之下。和 package 相關的幾個指令詳述如下:

pkg_info:用來查看這個 package 是什麼。它會把 package 里面的
+COMMENT 和 +DESC 抓出來,解說一下這個 package 的功能等資料。

pkg_add:用來安裝 package。它會按照 package 里面的設定,把各個
檔案拷到正確的位置,然後在 /var/db/pkg 下面造出該 package 的目
錄,把 +CONTENTS +COMMENT +DESC 等檔案拷過去。以前面的 amp 來說
,使用 pkg_add amp-0.7.6.tgz 會建立并把這三個檔案拷到 
/var/db/pkg/amp-0.7.6 目錄下去。

pkg_delete:用來反安裝 package。它會到 /var/db/pkg/[package] 目
錄下面找出這個 package 安裝了哪些東東,把它們通通移除,最後會把
/var/db/pkg/[package] 目錄也移除。比如說要反安裝前面安裝過的
amp,直接執行 pkg_delete amp-0.7.6 即可。

如果你凡事都喜歡自己來事必親躬,那麼你可以自己從 ports 里面做
compile,如果你看得懂 source,還可以自己改改 code,做做 tuning
,量身訂做弄出一個最適合自己的專用程式來。這種一手掌控的快感,
是你用 Windows 系統時所無法享受到的。ports 主要分為兩部份,一部
份就是原始的 source code,這些 source 大部份都放在 
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles 里面。另一部份則是
這個 ports 如果要在 FreeBSD 下面編譯、執行的話所需要的修改及擺
放的位置等設定,這一部份主要是放在
ftp://freebsd.csie.nctu.edu.tw/pub/ports-* 目錄下面。這個目錄和
package 一樣,也是依照不同的應用特性來做分類。還是拿 amp 來說,
在 audio/amp 目錄下面,你可以看到:

drwxr-xr-x  2 UPLOAD  UPLOAD  512 Oct  9 00:24 CVS
-rw-r--r--  1 UPLOAD  UPLOAD  528 Sep  3 08:35 Makefile
drwxr-xr-x  3 UPLOAD  UPLOAD  512 Oct  9 00:24 files
drwxr-xr-x  3 UPLOAD  UPLOAD  512 Oct  9 00:24 patches
drwxr-xr-x  3 UPLOAD  UPLOAD  512 Oct  9 00:24 pkg

Makefile 指定了這個 ports 該如何編譯、source code 要去哪里抓、
需要先安裝哪些其它相關的 ports、如何 instal.... 等等的訊息。
files 目錄下一般是放 source code 的 md5 checksum,以免抓到錯誤
的 source code 包裹。patches 里面放的是這個 ports 如果要改用到
FreeBSD 下面所需要做的修改。pkg 目錄下面是這個 ports 的相關資料
,和 package 里面那些 +CONTENTS +COMMENT +DESC 有相同的功效。如
果你要使用 ports,必需把該目錄下的所有東東(嗯,其實 CVS 都沒用
到)照原來的目錄結構整個抓下來,如果你是用 ncftp,就用 get -R
來抓。一般抓下來的 ports 應該是放在 /usr/ports/ 下的對應目錄下
,如 amp 就應該放在 /usr/ports/audio/amp/ 下,但是并沒有硬性規
定就是了。

整個目錄抓下來後,再來就是要執行 make 了。在 ports 下 make 有幾
種不同的參數,這些參數在 /usr/share/mk/bsd.port.mk 里面都有詳細
的解說。當你直接打 make 時,其實就是按照 fetch(抓回 source) -> 
extract(檢查 source 的 md5 并解開 source) -> patch(對 source 做
patch) -> configure(設定) -> build(編譯) 這樣一路做下來,把整個
ports 編譯好,而要等到你指定了 make install 後才會真的把這個 
ports 安裝到系統上去。最後安裝完後可以再 make clean,把解開的
source 等東東清除掉。

在 make fetch 時,系統會依照下列順序來尋找需要的 source:

1. /usr/ports/distfiles 下
2. /etc/make.conf 檔中指定的 MASTER_SITE_BACKUP
3. Makefile 里指定的 MASTER_SITES

/etc/make.conf 內定是到 FreeBSD 總部去抓,不過其實一般這些
source 都可以在 ftp://freebsd.csie.nctu.edu.tw/pub/distfiles 目
錄下面抓到,所以你可以把 MASTER_SITE_BACKUP 改成:

MASTER_SITE_BACKUP?=    /
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/

節省到國外抓檔的頻寬。當 make extract 後,會把 source 解開到
working 目錄下去。如果你想自己改一改 source,可以在 make patch
之後到 working 目錄下去修改。然後 make configure 和 make build
時我們大概也沒什麼事好做了,就看電腦螢幕上的字一行行的向上,
簡單一點的 ports 可能你做十下伏地挺身它就能 make 好,大一點的可
能就你出去跟人聊天串門子回來後它還在跑。

有時候呢,ports A 會和 ports B 發生關,在安裝 ports A 時系統
會去找 ports B,如果找到會先裝好 ports B 再回頭來裝 ports A,但
是如果找不到 ports B 時就會給你一個警告,你就需要再去抓 ports B
回來安裝。但是這樣缺啥補啥也是滿麻煩的,即然用了 FreeBSD 就要善
用 FreeBSD 提供的好用功能 -- CTM。首先,/usr/ports 下最好有 
50Mb 左右的硬碟空間,然後到
ftp://freebsd.csie.nctu.edu.tw/pub/CTM/ports-cur 下面抓回
ports-cur.????xEmpty.gz(找一個數字最大的 ???? 抓)以及所有
* > ???? 的 ports-cur.*.gz,比如說你抓了 ports-cur.2000xEmpty.gz
,那就要把 ports-cur.2001.gz, ports-cur.2002.gz.... 通通抓回來
。如果你抓回來的 gz 檔都放在 /tmp/ctm 下,就使用以下指令:

cd /usr/ports
/bin/rm -rf *
ctm -v /tmp/ctm/*

這樣就會把全部的 ports 通通收在你的系統上,以後安裝時就不需要再
擔心缺東少西的問題了。而且之後如果 ports 又有更新,也只需要抓回
新的 gz 檔,用 ctm 來更新即可,方便又省事。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91视频免费在线| 亚洲a级在线观看| 欧美一区三区三区高中清蜜桃| 亚洲精品第一国产综合精品| 粉嫩av一区二区三区免费野| 久久久亚洲精品视频| 欧美激情一区二区三区在线视频观看| 国产九九精品视频| 亚洲а∨天堂久久精品喷水| 亚洲国产精品资源| 欧美亚洲视频在线看网址| 欧美成在线观看| 91麻豆国产语对白在线观看| 亚洲天堂av在线免费| 精品久久久久久亚洲精品| 日韩精品有码在线观看| 欧洲精品在线视频| 91av中文字幕| 92看片淫黄大片看国产片| 国产亚洲一级高清| 色婷婷久久一区二区| 亚洲色图激情小说| 精品欧美国产一区二区三区| 久久久久女教师免费一区| 秋霞午夜一区二区| 亚洲成色www8888| 97久久超碰福利国产精品…| 亚洲精品视频网上网址在线观看| 中文字幕一精品亚洲无线一区| 久久在线免费观看视频| 久久久久久久久久亚洲| 亚洲嫩模很污视频| 日韩欧美在线国产| 米奇精品一区二区三区在线观看| 中文字幕成人在线| 日韩亚洲精品视频| 日本亚洲欧洲色α| 91日本在线观看| 亚洲一区二区三区四区视频| 不用播放器成人网| 国产精品久久在线观看| 97成人精品区在线播放| 情事1991在线| 亚洲国产成人久久综合一区| 欧美精品一本久久男人的天堂| 亚洲欧美在线免费观看| 成人午夜黄色影院| 日韩在线免费av| 最新的欧美黄色| 亚洲的天堂在线中文字幕| 精品国产欧美成人夜夜嗨| 亚洲综合成人婷婷小说| 国产第一区电影| 一本大道香蕉久在线播放29| 全色精品综合影院| 2019中文字幕全在线观看| 亚洲国产精品中文| 搡老女人一区二区三区视频tv| 一本色道久久综合狠狠躁篇的优点| 人妖精品videosex性欧美| 日本一区二区在线播放| 日韩高清免费在线| 欧美成人一二三| 亚洲精品aⅴ中文字幕乱码| 91黑丝在线观看| 日本精品久久中文字幕佐佐木| 午夜精品一区二区三区在线视| 国产精品海角社区在线观看| 欧美亚洲伦理www| 91在线视频精品| 91情侣偷在线精品国产| 亚洲男人第一网站| 国产一区二区三区精品久久久| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品7m视频| 国产成人精品日本亚洲专区61| 亚洲大胆人体视频| 777国产偷窥盗摄精品视频| 欧美在线观看网址综合| 亚洲电影免费观看高清完整版| 欧美激情日韩图片| 国产精品jvid在线观看蜜臀| 欧美日韩亚洲91| 欧美性猛交xxxxx免费看| 国产精品视频永久免费播放| 亚洲女人被黑人巨大进入al| 九九久久久久99精品| 欧美激情综合色综合啪啪五月| 成人激情视频网| 亚洲精品国精品久久99热| 亚洲欧美日韩高清| 日韩欧美精品网站| 亚洲最大激情中文字幕| 亚洲人成网站777色婷婷| 欧美成人午夜激情| 91网站在线看| 高清在线视频日韩欧美| 欧美大片va欧美在线播放| 国产亚洲精品久久| 情事1991在线| 日韩免费中文字幕| 奇门遁甲1982国语版免费观看高清| 国产精品jvid在线观看蜜臀| 欧美性生交大片免网| 国产精品久久久久久亚洲调教| 国产日韩av高清| 亚洲精品视频在线观看视频| 在线观看不卡av| 亚洲女人天堂视频| 色久欧美在线视频观看| 在线电影av不卡网址| 久久久久久久91| 91免费视频网站| 亚洲欧美一区二区激情| 日韩一级裸体免费视频| 国产精品视频精品视频| 亚洲图片在线综合| 另类美女黄大片| 欧美日韩视频免费播放| 91免费人成网站在线观看18| 亚洲人成电影在线| 日韩在线视频免费观看| 亚洲精品久久久久国产| 亚洲国产日韩欧美综合久久| 欧美成人免费大片| 亚洲开心激情网| 国产欧美精品一区二区三区介绍| 精品国产一区二区三区久久狼黑人| 精品国产视频在线| 国产精国产精品| 亚洲三级黄色在线观看| 国产va免费精品高清在线观看| 亚洲成人黄色网址| 国产精品视频1区| 亚洲国产精品久久久久秋霞不卡| 91高清视频在线免费观看| 日韩激情视频在线| 日韩在线视频网站| 久久久久久中文字幕| 中文日韩在线视频| 国产91免费观看| 精品免费在线视频| 国产精品日韩在线| 在线视频日韩精品| 欧美日本精品在线| 欧美精品www| 欧美午夜精品久久久久久久| 久久久久久中文| 日韩欧美国产视频| 国产成人精品免高潮在线观看| 97视频com| 欧美wwwwww| 麻豆精品精华液| 人人做人人澡人人爽欧美| 色婷婷综合久久久久中文字幕1| 久久伊人精品天天| 久久精品国产精品| 在线看国产精品| 国产一区二中文字幕在线看| 亚洲一区999| 欧美激情一区二区三区在线视频观看| 欧美大片在线影院| 亚洲国产精品国自产拍av秋霞| 成人网欧美在线视频|