日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

55 FreeBSD連載:Ports Collection( 三 )


make fetch: 每個(gè)Port中并沒有保存應(yīng)用軟件的原始源代碼文件,它保存的是如何獲得軟件的源代碼,并產(chǎn)生可執(zhí)行文件的操作過程 。每種軟件的源文件通常保存在其他介質(zhì)上(一般位于Internet上),那么當(dāng)通過Ports Collection來安裝一個(gè)軟件時(shí),第一步就是要獲得相關(guān)的文件 。這個(gè)下載文件的功能是Ports Collection的一部分功能,如果這臺(tái)計(jì)算機(jī)聯(lián)接到Internet上了,它能夠到網(wǎng)絡(luò)上找到該文件并使用fetch命令將文件下載到本機(jī)內(nèi),所有的步驟都是完全自動(dòng)完成的,需要使用者操作的僅僅是使用make命令來啟動(dòng)這個(gè)過程 。
如果使用的是make fetch命令,fetch參數(shù)將使得make僅僅完成下載任務(wù),而不進(jìn)行編譯和安裝處理過程 。
即使計(jì)算機(jī)沒有聯(lián)接到Internet上,也不必?fù)?dān)心,因?yàn)镻orts Collection將所有下載的文件都保存在/usr/ports/distfiles目錄中,而make命令將首先檢查該目錄中是否已經(jīng)存在了要下載的源文件,當(dāng)發(fā)現(xiàn)存在這個(gè)文件之后,就不再重新下載 。因而可以手工將這個(gè)應(yīng)用軟件的源代碼文件拷貝到這個(gè)目錄下,make時(shí)就不會(huì)再重復(fù)下載過程了 。如果不能確定源文件的位置,可以從Makefile文件中獲得源文件的位置,Makefile中將給出該源文件存在幾個(gè)不同的網(wǎng)絡(luò)地址,供fetch命令連續(xù)嘗試下載,一般最新Ports Collection對應(yīng)的軟件的源文件都能從ftp.freebsd.org中下載得到 。
make: 不帶任何參數(shù)的make命令在完成上述下載工作之后,就開始編譯軟件了 。make程序首先在這個(gè)Port目錄下建立一個(gè)工作子目錄,命名為work,此后將源代碼展開到這個(gè)目錄下,再應(yīng)用這個(gè)軟件的各個(gè)補(bǔ)丁文件,并啟動(dòng)自動(dòng)配置和編譯過程 。在這里,每進(jìn)行一步操作,就在work目錄下生成一個(gè)空文件,這些文件用于標(biāo)記編譯、安裝port的工作進(jìn)行到哪一步了 。
$ ls -al /usr/ports/security/sshtotal 8drwxr-xr-x3 rootwheel512 Apr 14 16:57 .drwxr-xr-x7 rootwheel512 Apr 19 01:18 ..-rw-r--r--1 rootwheel768 Apr 14 16:57 .PLIST.mktmp-rw-r--r--1 rootwheel0 Apr 14 15:56 .build_done-rw-r--r--1 rootwheel0 Apr 14 15:56 .configure_done-rw-r--r--1 rootwheel0 Apr 14 15:55 .extract_done-rw-r--r--1 rootwheel0 Apr 14 16:57 .install_done-rw-r--r--1 rootwheel0 Apr 14 15:55 .patch_donedrwxr-xr-x4 rootwheel4608 Apr 14 15:56 ssh-1.2.26make展開應(yīng)用軟件包時(shí)會(huì)檢查下載軟件包的完整性,這是通過驗(yàn)證下載文件產(chǎn)生的MD5數(shù)據(jù)是否與記載在Port中的數(shù)據(jù)相一致,來保證了下載軟件的正確性 。
每個(gè)Port的Patch是一些補(bǔ)丁程序,它包括這個(gè)軟件本身存在問題,用于修正或升級的補(bǔ)丁,或者是維護(hù)這個(gè)Port的FreeBSD開發(fā)者用于修正系統(tǒng)差異而制作的Patch 。所有的補(bǔ)丁程序被放置在該P(yáng)ort目錄下的patches目錄中 。
要對這個(gè)軟件進(jìn)行定制時(shí)候,應(yīng)該首先使用make命令,保證源代碼展開到正確的目錄下并編譯完畢 。這樣能保證make應(yīng)用了所有的補(bǔ)丁程序?qū)υ创a進(jìn)行修正,然后才能在此目錄中修改相應(yīng)配置,并刪除work子目錄中的相應(yīng)標(biāo)記文件.build_done,使得可以重新開始編譯過程,重新編譯軟件 。
makeinstall: 如果使用的是make install命令,那么make先完成編譯過程,然后還將自動(dòng)安裝這個(gè)Port,此時(shí)不但將軟件的各個(gè)部分安裝到正確的位置之外,還將執(zhí)行Port中附帶的shell腳本進(jìn)行軟件的基本配置 。當(dāng)然這個(gè)配置過程是不完整的,完整的配置屬于這個(gè)應(yīng)用程序本身的功能 。
安裝完畢之后,還可以針對自己定制的Port生成對應(yīng)的軟件包,使用make package命令將自動(dòng)完成這個(gè)過程 。
安裝每個(gè)Port的同時(shí)也就等同于安裝相應(yīng)的Package,安裝過程同時(shí)也將在/var/db/pkg目錄下記載下相應(yīng)Package的安裝記錄 。由于軟件包之間存在相互依賴關(guān)系,Ports Collection中也使用同樣的原則來處理軟件之間的依賴關(guān)系,必須使用預(yù)先安裝這個(gè)Port依賴的所有其他Packages之后,才能安裝(不影響編譯)這個(gè)Port 。這個(gè)過程也將在make install中自動(dòng)完成的,系統(tǒng)就會(huì)檢查依賴關(guān)系,自動(dòng)使用Ports Collection安裝它所依賴的Port,最后才能繼續(xù)這個(gè)Port的安裝過程 。

推薦閱讀