亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1198 | 回復(fù): 0
打印 上一主題 下一主題

轉(zhuǎn)《善加利用與管理你的ports / packages- - 》 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-08-29 21:34 |只看該作者 |倒序?yàn)g覽
善加利用與管理你的ports / packages- -by HonestQiao   發(fā)表于: 2005-08-29 21
編者
元智大學(xué)資訊管理學(xué)系曾義峰(
s882617@mail.yzu.edu.tw
)
Unix系統(tǒng)的傳統(tǒng)安裝third party(第三方代理)軟體方法是下載source code(原始碼)
或是binary(二進(jìn)制執(zhí)行檔)型式,經(jīng)過(guò)解壓、編譯、除錯(cuò),最後安裝。然而在FreeBSD
上,不僅可使用傳統(tǒng)的安裝方式,更提供了兩種不同的技術(shù),Ports與Packages。
Ports
在Unix下的程式,可以使用很多不同的程式語(yǔ)言撰寫(xiě),而有些程式語(yǔ)言本身雖有很好的
可攜性,但在不同的Unix系統(tǒng)下編譯,還是可能會(huì)有問(wèn)題存在。通常視不同的執(zhí)行環(huán)境
來(lái)對(duì)程式做適當(dāng)?shù)男薷,使程式可以於其他平臺(tái)上正常執(zhí)行,其中的過(guò)程稱為移植,通
稱為port。
○ port目錄結(jié)構(gòu)
ports目錄結(jié)構(gòu)一般包含Makefile、distinfo、pkg-comment、pkg-descr、pkg-plist檔
案和files目錄。
Makefile:敘述port如何下載、安裝以及與其他程式的相依性。
Distinfo:敘述那些port將要下載以及正確性的MD5檢查參考。
pkg-comment:port的簡(jiǎn)單描述。
pkg-descr:port的詳細(xì)描述。
pkg-plist:port安裝後相關(guān)檔案的路徑。
files:此目錄包含一些patches,使程式能夠編譯安裝在FreeBSD系統(tǒng)上。
Packages
Packages是把ports的binary、相關(guān)檔案及說(shuō)明,整理壓縮成一個(gè)名為.tgz的檔案。由於
不需要額外的編譯,所以對(duì)特別大的程式(如:Xfree86)而言,不僅可以減少安裝時(shí)間,
甚至減少安裝過(guò)程中的錯(cuò)誤。
● 如何使用Ports
在使用Ports之前,F(xiàn)reeBSD系統(tǒng)必須安裝ports套件。如果你的系統(tǒng)尚未安裝,可以使用
root執(zhí)行/stand/sysinstall來(lái)安裝。安裝好ports套件後,會(huì)發(fā)現(xiàn)在/usr下多了ports的子
目錄。
○ 安裝ports - step by step
在開(kāi)始安裝ports之前,必須瞭解安裝的全部過(guò)程:
通常使用ports安裝應(yīng)用程式,只須執(zhí)行到install,最後是否要執(zhí)行package則是依各人需
求來(lái)決定,最後我會(huì)對(duì)此再加以敘述。
接下來(lái)以安裝lynx的範(fàn)例來(lái)說(shuō)明step by step的ports安裝方式:
注意:
1) 必須使用有權(quán)限的使用者(如:root)來(lái)安裝程式。
2) 確定所在目錄位置於ports的Makefile檔案處。在本範(fàn)例中,現(xiàn)在的目錄位置在於
/usr/ports/www/lynx。
Step 1:fetch
功能:取回程式的source檔案。
說(shuō)明:這個(gè)步驟會(huì)檢查/usr/ports/distfiles(由DISTDIR變數(shù)設(shè)定)目錄下是否已存在符合
Makefile中描述的source及其他相關(guān)檔案;若沒(méi)有,則會(huì)依照指定的順序(註一)將source及
相關(guān)檔案取回。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make fetch
>> lynx2.8.4rel.1.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/.
Receiving lynx2.8.4rel.1.tar.bz2 (1940531 bytes): 100%
1940531 bytes transferred in 168.0 seconds (11.28 kBps)
>> lynx2.8.4rel.1a.patch.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/.
Receiving lynx2.8.4rel.1a.patch.gz (3065 bytes): 100%
3065 bytes transferred in 0.0 seconds (175.36 kBps)
>> lynx2.8.4rel.1b.patch.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/.
Receiving lynx2.8.4rel.1b.patch.gz (3475 bytes): 100%
3475 bytes transferred in 0.0 seconds (240.71 kBps)
過(guò)程中顯示在/usr/ports/distfiles目錄中找不到符合版本的source及相關(guān)檔案,於是開(kāi)始依
序比對(duì)指定的站點(diǎn)取回。成功執(zhí)行後,可於/usr/ports/distfiles目錄下發(fā)現(xiàn)source及相關(guān)檔
案已經(jīng)取回。
fetch
extract
patch
configure
build
install
package
checksum
root@ant [/usr/ports/distfiles]# ls
lynx2.8.4rel.1.tar.bz2 lynx2.8.4rel.1a.patch.gz lynx2.8.4rel.1b.patch.gz
Step 2:checksum
功能:檢查檔案正確性。
說(shuō)明:使用MD5檢查取回的相關(guān)檔案是否正確。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make checksum
>> Checksum OK for lynx2.8.4rel.1.tar.bz2.
>> Checksum OK for lynx2.8.4rel.1a.patch.gz.
>> Checksum OK for lynx2.8.4rel.1b.patch.gz.
Step 3:extract
功能:解壓縮檔案。
說(shuō)明:在/usr/ports/distfiles中將尋找被取回的source檔案解壓縮。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make extract
===> Extracting for lynx-2.8.4.1b_1
>> Checksum OK for lynx2.8.4rel.1.tar.bz2.
>> Checksum OK for lynx2.8.4rel.1a.patch.gz.
>> Checksum OK for lynx2.8.4rel.1b.patch.gz.
成功執(zhí)行完後,會(huì)發(fā)現(xiàn)多了一個(gè)work子目錄,並且在該目錄下產(chǎn)生lynx2-8-4子目錄以及
.extract_done.lynx-2.8.4.1b_1檔案。lynx2-8-4子目錄則是source檔案解壓縮後的內(nèi)容。
root@ant [/usr/ports/www/lynx]# ls
Makefile files/ pkg-descr work/
distinfo pkg-comment pkg-plist
root@ant [/usr/ports/www/lynx/work]# ls
.extract_done.lynx-2.8.4.1b_1 lynx2-8-4/
Step 4:patch
功能:修正檔案。
說(shuō)明:為使編譯工作更順利,會(huì)對(duì)解壓縮後的檔案做修正。將Makefile中定義的PATCHFILES會(huì)
被patch,如果在files(由PATCHDIR變數(shù)定義)目錄中存在
patch-*,也會(huì)被按照名稱順序先後執(zhí)行。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make patch
===> Patching for lynx-2.8.4.1b_1
===> Applying distribution patches for lynx-2.8.4.1b_1
===> Applying FreeBSD patches for lynx-2.8.4.1b_1
成功執(zhí)行完後,會(huì)產(chǎn)生.patch_done.lynx-2.8.4.1b_1檔於work子目錄下。
root@ant [/usr/ports/www/lynx/work]# ls
.extract_done.lynx-2.8.4.1b_1 lynx2-8-4/
.patch_done.lynx-2.8.4.1b_1
Step 5:configure
功能:建立適當(dāng)?shù)腗akefile。
說(shuō)明:首先要釐清的觀點(diǎn)是ports的Makefile及應(yīng)用程式編譯的Makefile是不同的。configure產(chǎn)生
的Makefile是屬於應(yīng)用程式編譯的Makefile,敘述如何編譯應(yīng)用程式。如果存在scripts/configure
,則這個(gè)configure會(huì)首先被執(zhí)行;如果Makefile中定義了HAS_CONFIGURE或GNU_CONFIGURE,則
WRKSRC/configure會(huì)被執(zhí)行。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make configure
===> Configuring for lynx-2.8.4.1b_1
[以下略]
成功執(zhí)行完後,會(huì)於work子目錄下產(chǎn)生.configure_done.lynx-2.8.4.1b_1檔案,並且在
work/lynx2-8-4子目錄下產(chǎn)生適當(dāng)?shù)膽?yīng)用程式編譯的Makefile。
root@ant [/usr/ports/www/lynx/work]# ls
.configure_done.lynx-2.8.4.1b_1 .patch_done.lynx-2.8.4.1b_1
.extract_done.lynx-2.8.4.1b_1 lynx2-8-4/
Step 6:build
功能:編譯程式碼。
說(shuō)明:依照應(yīng)用程式的Makefile開(kāi)始編譯程式碼。會(huì)進(jìn)入work(由WRKSRC變數(shù)定義)目錄中編譯,如果
Makefile中定義了USE_GMAKE,GNU make會(huì)被使用,否則使用make命令。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make build
===> Building for lynx-2.8.4.1b_1
[略]
cc -DHAVE_CONFIG_H -DLOCALEDIR="/usr/local/share/locale" -I. -I.. -Ichrtrans -I./chrtrans
-I.. -I../src -I../WWW/Library/Implementation -O –pipe -s -c ./LYLocal.c
[略]
Copying Lynx executable into top-level directory
rm -f ../lynx
cp lynx ../
Welcome to Lynx!
成功執(zhí)行完後,會(huì)於work子目錄下產(chǎn)生.build_done.lynx-2.8.4.1b_1檔案,並且在lynx2-8-4子目錄
下會(huì)產(chǎn)生編譯過(guò)後的檔案。
root@ant [/usr/ports/www/lynx/work]# ls
.build_done.lynx-2.8.4.1b_1 .patch_done.lynx-2.8.4.1b_1
.configure_done.lynx-2.8.4.1b_1 lynx2-8-4/
.extract_done.lynx-2.8.4.1b_1
Step 7:install
功能:安裝程式。
說(shuō)明:將編譯好的執(zhí)行檔、設(shè)定檔及說(shuō)明檔等安裝到系統(tǒng)目錄中。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make install
===> Installing for lynx-2.8.4.1b_1
[略]
===> Compressing manual pages for lynx-2.8.4.1b_1
===> Registering installation for lynx-2.8.4.1b_1
於work子目錄下產(chǎn)生.PLIST.* 及.install_done.lynx-2.8.4.1b_1檔案。
root@ant [/usr/ports/www/lynx/work]# ls
.PLIST.mktmp .extract_done.lynx-2.8.4.1b_1
.PLIST.setuid .install_done.lynx-2.8.4.1b_1
.PLIST.startup .patch_done.lynx-2.8.4.1b_1
.build_done.lynx-2.8.4.1b_1 lynx2-8-4/
.configure_done.lynx-2.8.4.1b_1
一般安裝potrts只須執(zhí)行至此步驟即可,表示應(yīng)用程式已成功的安裝,若須要將此程式製做成
package,則再另行執(zhí)行step 7。
Step 8:package
功能:製做成package。
說(shuō)明:將最後安裝成功的相關(guān)設(shè)定檔製做成package 。這個(gè)步驟不一定要執(zhí)行,若有需要製做成
package檔,供往後使用,則執(zhí)行此步驟。
範(fàn)例:
root@ant [/usr/ports/www/lynx]# make package
===> Building package for lynx-2.8.4.1b_1
Creating package /usr/ports/packages/All/lynx-2.8.4.1b_1.tgz
Registering depends:.
Creating gzip'd tar ball in '/usr/ports/packages/All/lynx-2.8.4.1b_1.tgz'
將package置於/usr/ports/packages下的相關(guān)目錄,這個(gè)目錄是package存放預(yù)設(shè)值。一般在安裝
ports套件後,不會(huì)在/usr/ports目錄下產(chǎn)生packages子目錄,當(dāng)make package找不到此目錄時(shí),
會(huì)將package置於此程式目錄下(本例子而言是/usr/ports/www/lynx之下)。建議若要方便管理
package的話,可先行於/usr/ports下建立packages的子目錄。
○ 安裝ports – 快速法則
以上的步驟是使用step by step的安裝方式,是否可以直接執(zhí)行至某一步驟呢?答案是可以的。
雖然每個(gè)步驟之間有其先後關(guān)係,但指定執(zhí)行某一步驟時(shí),會(huì)先由第一步驟開(kāi)始檢查是否已完成
,若未完成則會(huì)由該步驟開(kāi)始執(zhí)行,若沒(méi)有例外錯(cuò)誤發(fā)生,會(huì)一直執(zhí)行至指定步驟結(jié)束為止。
例如:
執(zhí)行make install時(shí),會(huì)先檢查是否已執(zhí)行make fetch,若發(fā)現(xiàn)make fetch尚未執(zhí)行,則由fetch
開(kāi)始;反之則檢查下一步驟make extract,若發(fā)現(xiàn)make extract尚未執(zhí)行,則由extract開(kāi)始;反
之則繼續(xù)檢查下一步驟make patch,一直以此方式進(jìn)行。在執(zhí)行過(guò)程中,若沒(méi)有錯(cuò)誤發(fā)生,則會(huì)
一直執(zhí)行至make install完成為止。
root@ant [/usr/ports/www/lynx]# make install
===> Extracting for lynx-2.8.4.1b_1
>> Checksum OK for lynx2.8.4rel.1.tar.bz2.
>> Checksum OK for lynx2.8.4rel.1a.patch.gz.
>> Checksum OK for lynx2.8.4rel.1b.patch.gz.
===> Patching for lynx-2.8.4.1b_1
===> Applying distribution patches for lynx-2.8.4.1b_1
===> Applying FreeBSD patches for lynx-2.8.4.1b_1
===> Configuring for lynx-2.8.4.1b_1
creating cache ./config.cache
[略]
===> Building for lynx-2.8.4.1b_1
[略]
===> Installing for lynx-2.8.4.1b_1
[略]
===> Compressing manual pages for lynx-2.8.4.1b_1
===> Registering installation for lynx-2.8.4.1b_1
ports不僅只有如何安裝,還有許多可善加利用與管理的方式:
以下僅列出部份內(nèi)容,詳細(xì)可參考/usr/ports/Mk/ bsd.port.mk。
○ 清除安裝ports過(guò)程的暫存檔
類似於make install及make package,可依自己的需求來(lái)執(zhí)行。
 make clean
功能:清除安裝過(guò)程所產(chǎn)生的檔案。
說(shuō)明:在程式編譯完成後,並不會(huì)自動(dòng)將過(guò)程中產(chǎn)生的檔案清除,執(zhí)行後可清除這些編譯所產(chǎn)生
的檔案,不致造成浪費(fèi)硬碟空間。
 make distclean
功能:清除安裝過(guò)程所產(chǎn)生的檔案,並且將取回的source檔案刪除。
說(shuō)明:會(huì)先執(zhí)行make clean,接著把/usr/ports/distfiles目錄下make fetch所取回source檔案
刪除。
○ 移除安裝的ports
 make deinstall
 
功能:移除程式。
clean
distclean
說(shuō)明:把安裝好的應(yīng)用程式由系統(tǒng)中移除。
 make deinstall-depends
功能:移除程式及其相關(guān)程式。
說(shuō)明:不僅移除此程式,並且把其相關(guān)的程式一併移除。
○ 搜尋ports
注意:必須確定所在目錄於/usr/ports目錄下,或其子目錄下。
 make search key=what_you_want
功能:尋找符合此pattern敘述的所有ports相關(guān)列表。
說(shuō)明:以所在目錄為主,向下搜尋並列出符合此pattern的ports的所有相關(guān)內(nèi)容。
 make search name=what_you_want
功能:搜尋完全符合ports名稱的列表。
說(shuō)明:以所在目錄為主,向下搜尋並列出符合的ports名稱。
● 如何使用packages
packages有很多方便的管理工具,全部位於/usr/sbin目錄下,在安裝前必須指定packages以及
其相關(guān)的packages。。筆者僅介紹一些常用的packages工具。以下範(fàn)例將以lynx-2.8.5d7_1.tgz
這個(gè)packages來(lái)說(shuō)明,並且由本機(jī)執(zhí)行,請(qǐng)先下載lynx-2.8.5d7_1.tgz 以及其他相關(guān)packages
(lynx的相關(guān)packages為libiconv-1.7_3及gettext-0.11.1_1 )。
 pkg_add
功能:安裝packages。
範(fàn)例:
root# pkg_add libiconv-1.7_3.tgz
root# pkg_add gettext-0.11.1_1.tgz
root# pkg_add lynx-2.8.5d7_1.tgz
必須依照packages相依的關(guān)係先後安裝。
 pkg_iofo
功能:顯示packages的資訊。
範(fàn)例:
root# pkg_info lynx-2.8.5d7_1.tgz
Information for lynx-2.8.5d7_1.tgz:
Comment:
A non-graphical, text-based World-Wide Web client
Description:
lynx is a program which allows a user to access World-Wide Web servers
and other information servers. It uses only ascii representation so
that it can be used from ascii-terminals and dialin-lines.
WWW:
http://lynx.isc.org/current/
 pkg_delete
功能:移除已安裝的packages。
範(fàn)例:
root# pkg_delete lynx-2.8.5d7_1
注意,pkg_delete所指定的packages不需要加上.tgz。
在成千上萬(wàn)個(gè)應(yīng)用程式中,如何善加利用與管理將會(huì)是一門(mén)學(xué)問(wèn)。在本篇文章中,希望可以增加
讀者對(duì)FreeBSD管理應(yīng)用程式的瞭解,進(jìn)而對(duì)FreeBSD系統(tǒng)有不一樣的體會(huì)。
:預(yù)設(shè)下,F(xiàn)reeBSD系統(tǒng)中有三個(gè)檔案可以指定ports從何處下載,優(yōu)先順序第一的是
/etc/defaults/make.conf,接著是/etc/make.conf,最後是ports的Makefile中的敘述。
參考文件
FreeBSD Handbook
Ports Handbook
Ports簡(jiǎn)介與安裝- 邱建雄
勘誤
2002-07-04 v1.0 release
2002-07-26 v1.1 errors-fixs
2002-07-29 v1.2 insert step2-checksum


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/8473/showart_45126.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP