欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

FreeBSD軟件安裝卸載工具--Ports和Packages詳解

  發(fā)布時(shí)間:2008-09-08 18:48:44   作者:佚名   我要評論
1、如何只抓取 tarball? 2、如何僅做到解開 tarball的步驟? 3、如何僅做到解開 tarball 并補(bǔ)上官方提供的 patch? 4、如何安裝一個(gè)新的 port? 5、如何安裝一個(gè)新的 port,并將打包(package)起來? 6、如何打包一個(gè) port,并將其所有相依的 ports 也打

1、如何只抓取 tarball?
2、如何僅做到解開 tarball的步驟?
3、如何僅做到解開 tarball 并補(bǔ)上官方提供的 patch?
4、如何安裝一個(gè)新的 port?
5、如何安裝一個(gè)新的 port,并將打包(package)起來?
6、如何打包一個(gè) port,并將其所有相依的 ports 也打包起來?
7、如何對一個(gè)已經(jīng)安裝的 port 打包?
8、如何清理 ports 編輯期間所產(chǎn)生的暫存資料?
9、如何清理 ports 編輯期間所產(chǎn)生的暫存資料,以及其相對應(yīng)的 tarball?
10、如何在安裝 ports 前查詢所需依賴/相關(guān)的套件?
11、如何移除已安裝的 ports?
12、如何一并移除所相依的 ports?
13、如何重新安裝安裝過的 ports?
14、如何以關(guān)鍵字搜尋 ports?
15、如何升級已安裝的 ports?
16、如何查詢目前系統(tǒng)安裝了哪些套件?
17、如何查詢目前系統(tǒng)有沒有安裝這個(gè)關(guān)鍵字的套件?
18、如何查詢某個(gè)檔案是屬於哪些套件?
19、如何查詢某個(gè)套件安裝了哪些檔案?
20、如何安裝舊版的 ports?
21、如何更新 ports Mk?
22、如何解決安裝 ports 時(shí)出現(xiàn) sed -i 的錯(cuò)誤?
23、如何列出所有可以升級的 ports?
24、如何得知 ports system 對某個(gè) ports 所提供的編譯叁數(shù)?
25、如何手動(dòng)加入編譯 ports 的叁數(shù)?
26、如何指定 ports 的安裝路徑?
27、安裝 ports 出現(xiàn) FORCE_PKG_REGISTER 的錯(cuò)誤訊息
28、安裝 ports 出現(xiàn) Shared object libintl.so.X not found 的錯(cuò)誤訊息
29、如何安裝 packages?
30、如何強(qiáng)制安裝 packages?
31、如何查詢 packages 與其他 packages 之間的相依性?
32、如何遠(yuǎn)端安裝 packages?
33、如何更新 INDEX 對照表?
34、如何更新 INDEX HTML?
35、如何針對某些 ports 不做 CVSup?
36、如何使用 CVSup 同步 ports collections?
37、安裝 ports 出現(xiàn) port is outdated 的錯(cuò)誤訊息
39、安裝 ports 出現(xiàn) OpenSSL vulnerabilities 的錯(cuò)誤訊息
40、如何在 FreeBSD 上模擬 Linux 的環(huán)境?
41、如何在 FreeBSD 上安裝 Linux rpm?
42、安裝 ports 時(shí),原本應(yīng)該出現(xiàn)的清單選項(xiàng)不見了
43、如何檢查是否有安裝重覆的 ports/packages? `make deinstall' 與 `pkg_delete' 有什麼不同?
44、安裝 ports 出現(xiàn) local modification time does not match remote 的
錯(cuò)誤訊息


1、如何只抓取 tarball?

如果只希望抓取 tarball 下來的話,僅需下 make fetch 即可。
如果是要抓取單一的 port,以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make fetch


預(yù)設(shè)會(huì)將 joe 的 tarball 下載至 /usr/ports/distfiles/ 目錄下。
如果是希望抓取安裝此 ports 所有須要的其他 ports 的 tarball,以

systuils/portupgrade 為例的話,則:
代碼:
cd /usr/ports/systuils/portupgrade/
make fetch-recursive


預(yù)設(shè)會(huì)將此 ports 的 tarball 與所有須要的其他 ports 的 tarball,下載至 /usr/ports/distfiles/ 目錄下。

如果是希望抓取全部所有 ports 的 tarball ,則:

代碼:
cd /usr/ports/
make fetch


則會(huì)所將全部所有 ports 的 tarball 下載至 /usr/ports/distfiles/ 目錄下。
如果是希望抓取全部 ftp 下所有 ports 的 tarball ,則:

代碼:
cd /usr/ports/ftp/
make fetch


則會(huì)所將全部 ftp 下所有 ports 的 tarball 下載至 /usr/ports/distfiles/
目錄下。

2、如何僅做到解開 tarball的步驟?

有時(shí)候習(xí)慣自己 patch/修正 原始碼的時(shí)候,很常用到這個(gè)功能。
以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make extract


會(huì)將 tarball解開至 /usr/ports/editors/joe/work/ 目錄下。


3、如何僅做到解開 tarball 并補(bǔ)上官方提供的 patch?

方法與 2 有一些類似,不同於是先補(bǔ)上官方提供的 patch ,再行 patch 自己
的修正。以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make patch


會(huì)將 tarball解開至 /usr/ports/editors/joe/work/ 目錄下,并已經(jīng) patch 上
官方提供的 patch。

4、如何安裝一個(gè)新的 port?

如果系統(tǒng)上未安裝此軟體,則可以選擇安裝一個(gè)新的 port。
以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make install


如此會(huì)在系統(tǒng)安裝一個(gè)新的 joe 軟體。如果需要在安裝完成後,一并清除編輯
時(shí)期所留下來的暫存目錄,則可叁考 FAQ 8 的方法,一起使用,如:

代碼:
cd /usr/ports/editors/joe/
#make clean


如果想要一次清掉所有 ports 產(chǎn)生的暫存資料,則只要回到 ports 的根目錄執(zhí)
行即可:

代碼:
cd /usr/ports/
#make clean


5、如何安裝一個(gè)新的 port,并將打包(package)起來?

安裝完成的軟體打包起來,有許多便利性:包括在叢集系統(tǒng)中,可供其它機(jī)器
使用,或?qū)⑽磥泶塑涹w出問題可重新利用此 package 重新快速安裝
以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
#make package


如此會(huì)在系統(tǒng)安裝一個(gè)新的 joe 軟體,并將此軟體打包(package)起來。

package 預(yù)設(shè)會(huì)在 /usr/ports/editors/joe/ 目錄下,如果希望集中管理的話,
建議做如下的步驟:

代碼:
mkdir -p /usr/ports/packages/All/


以後打包的 packages 都會(huì)存放在此目錄下,并且系統(tǒng)會(huì)自動(dòng)做分類,以方便管
理。如果需要在安裝完成後,一并清除編輯 時(shí)期所留下來的暫存目錄,則可叁
考 FAQ 8 的方法,一起使用,如:

代碼:
cd /usr/ports/editors/joe/
make package clean



6、如何打包一個(gè) port,并將其所有相依的 ports 也打包起來?

因?yàn)?FAQ 5 只有對最終的 port 才進(jìn)行打包,中間依賴的 ports 并沒有一起打
包,這會(huì)出現(xiàn)一個(gè)常遇到 的問題,就是如果編輯一個(gè) port 需要依賴其它的
ports,那麼必須將其它 ports 也一起打包,否則安裝 packages 會(huì)有相 依賴其
它 ports 的 packages 的問題。
以 sysutils/portupgrade 為例的話,則:

代碼:
cd /usr/ports/sysutils/portupgrade/
make DEPENDS_TARGET=package package


如此會(huì)在對所有 portupgrade 所相依賴的 ports 一并打包,也包括自己本身。

7、如何對一個(gè)已經(jīng)安裝的 port 打包?

如果安裝好一個(gè)套軟,事前并未打包,事後想打包的話,則:
以 editors/joe 為例的話

代碼:
cd /var/db/pkg/
pkg_create -b joe-{版本號}


會(huì)將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。

8、如何清理 ports 編輯期間所產(chǎn)生的暫存資料?

在編輯 port 的時(shí)候,會(huì)有編輯期間所需要的工作目錄(work),因此通常安裝
一個(gè)套件後,會(huì)清除此暫存目錄,以節(jié)省系 統(tǒng)磁碟空間。
以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make clean


如果是希望清除所有 ports 的暫存目錄,則:

代碼:
cd /usr/ports/
make clean


如果是希望清除全部 ftp 下所有的暫存目錄,則:

代碼:
cd /usr/ports/ftp/
make clean



9、如何清理 ports 編輯期間所產(chǎn)生的暫存資料,以及其相對應(yīng)的 tarball?


在 FAQ 8 中,僅只是清除編輯期間所需要的工作目錄(work),并沒有將編譯
ports 時(shí)一并下載的 tarball 刪除(相對應(yīng)之 tarball 預(yù)設(shè)會(huì)存放
在 /usr/ports/distfiles/),如果欲把 tarball 一并刪除,
以 editors/joe 為例的話,則:

代碼:
cd /usr/ports/editors/joe/
make distclean


make distclean 的步驟包含了 make clean 的功能,也就是說除了會(huì)刪除
tarball 外,還會(huì)一并M除編輯期間所需要的工作目錄。

如果是希望清除所有 ports 的暫存目錄,及 tarball ,則:

代碼:
cd /usr/ports/
make distclean


如果是希望清除全部 ftp 下所有的暫存目錄,及 tarball,則:

代碼:
cd /usr/ports/ftp/
make distclean



10、如何在安裝 ports 前查詢所需依賴/相關(guān)的套件?

安裝 ports 前,可以查詢所需依賴/相關(guān)的套件。
以 mail/p5-Mail-SpamAssassin 為例的話,則:

代碼:
cd /usr/ports/mail/p5-Mail-SpamAssassin/
make all-depends-list #顯示所有相關(guān)的套件
make pretty-print-build-depends-list #顯示編譯期間所需要的套件
make pretty-print-run-depends-list #顯示此套件要執(zhí)行時(shí)所需要的套件



11、如何移除已安裝的 ports?

以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make deinstall


或是使用 pkg_delete

代碼:
cd /var/db/pkg/
pkg_delete joe-{version}


有時(shí)候套件之間的相依性會(huì)導(dǎo)致無法直接移除,如果要強(qiáng)制移除的話,則:

代碼:
cd /var/db/pkg/
pkg_delete -f joe-{version}


但很有可能會(huì)導(dǎo)致其它的套件執(zhí)行起來出現(xiàn)問題。

至於二者的差別,請叁考FAQ 43

12、如何一并移除所相依的 ports?

以 sysutils/portupgrade 為例的話,則:

代碼:
cd /usr/ports/sysutils/portupgrade/
make deinstall-depends


執(zhí)行此步驟前,請注意是否會(huì)移除應(yīng)該保護(hù)的套件。建議先叁考 FAQ 10 的方法
來檢查。

或是使用 pkg_delete

代碼:
cd /var/db/pkg/
pkg_delete -r portupgrade-{version}


至於二者的差別,請叁考FAQ 43


代碼:
13、如何重新安裝安裝過的 ports?


重新安裝的前提是,之前有安裝過或目前已安裝。以 editors/joe 為例的話,
則:

代碼:
cd /usr/ports/editors/joe/
make deinstall
make clean
make install 或 make reinstall



14、如何以關(guān)鍵字搜尋 ports?

如果要從全部的 ports collection 中找尋與關(guān)鍵字 "ldap" 有關(guān)的 ports,
則:

代碼:
cd /usr/ports/
make search key=ldap


如果只要從與 ftp 相關(guān)的 ports 下找尋與關(guān)鍵字 "ldap" 有關(guān)的 ports,則:

代碼:
cd /usr/ports/ftp/
make search key=ldap


還有另一個(gè)用法,方法只是將 key 換成 name 。如果已經(jīng)知道要搜尋 ports 的
名稱,或只想找名稱相關(guān)的關(guān)鍵字 "ldap", 則:

代碼:
cd /usr/ports/
make search name=ldap


如果只要從 ftp 相關(guān)的 ports 下找尋名稱與關(guān)鍵字 "ldap" 有關(guān)的 ports,
則:

代碼:
cd /usr/ports/ftp/
make search name=ldap



15、如何升級已安裝的 ports?

如果已經(jīng)安裝好套件,事後欲升級的話,必須先移除舊版本的 port,移除的方法
請叁考FAQ 11、FAQ 12及FAQ 13;之後再安裝 port,安裝方法請叁考FAQ 4或
FAQ 5。

以 editors/joe 為例,且以 FAQ 11 及 FAQ 4 的方法,則:

代碼:
cd /var/db/pkg/
pkg_delete joe-{version}
cd /usr/ports/editors/joe/
make install


或是
代碼:
cd /usr/ports/editors/joe/
make clean
make reinstall



16、如何查詢目前系統(tǒng)安裝了哪些套件?

查詢目前系統(tǒng)安裝的全部套件:

代碼:
pkg_info


17、如何查詢目前系統(tǒng)有沒有安裝這個(gè)關(guān)鍵字的套件?
方法類似 FAQ 16 :

代碼:
pkg_info | grep



18、如何查詢某個(gè)檔案是屬於哪些套件?

如果想查詢 /usr/local/bin/joe 是屬於哪個(gè)套件的話,則:

代碼:
pkg_info -W /usr/local/bin/joe


如果沒有回傳任何資訊的話,代表著這個(gè)檔案是由 FreeBSD 內(nèi)建的。


19、如何查詢某個(gè)套件安裝了哪些檔案?

如果想查詢目前系統(tǒng)安裝的 joe 包含了哪些檔案,則:

代碼:
pkg_info -L /var/db/pkg/joe-{version}



20、如何安裝舊版的 ports?

有時(shí)候會(huì)因?yàn)橄嘁佬?,或是新版有問題,而會(huì)想裝舊版本的套件。
這里的方法是利用 CVS 的好處,回歸到以前舊版本存在的日子,以安裝舊版本的
套件。首先,若我們要回復(fù)到某一個(gè)套件的版本時(shí),需要去查詢 FreeBSD ports
CVS repository。最常見的就是 Freshports 網(wǎng)站、 FreeBSD 的 Mailing
FreeBSD cvs 或是 FreeBSD ports cvsweb。

查到該套件版本所依存的日子後,就修改 CVS tag。一般預(yù)設(shè) ports 的 CVS
tag 會(huì)寫在 /usr/share/examples/cvsup/ports-supfile ,如要回朔到
2002/10/05 號的話,則:

代碼:
# vi /usr/share/examples/cvsup/ports-supfile
******************************************
default date=2002.10.05.00.00.00 #將 date 改成當(dāng)日


然後按照一般 CVSup 的時(shí)候一樣,執(zhí)行 CVSup (make update),此時(shí)的 ports
collections 就會(huì)回到當(dāng)時(shí)的情形,那麼該套件 舊版本也會(huì)出現(xiàn)在 ports
collections 中,只要安裝即可。

如果僅是想把某部份的 ports 回朔,則必須加上額外的資訊,如僅希望把
lang/perl5.8 回朔,而得知此屬於 lang 中的一支,則:

代碼:
# vi /usr/share/examples/cvsup/ports-supfile
******************************************
#ports-all #將 ports-all 標(biāo)示起來
ports-lang #加入這行


最後,執(zhí)行 CVSup,并安裝即可。目前若希望單獨(dú)回朔單一的 ports,
則比較麻煩。


21、如何更新 ports Mk?

Mk (/usr/ports/Mk/) 是編譯 ports 時(shí)所叁考的設(shè)定,有時(shí)若發(fā)生 ports
collections 太新,而導(dǎo)致 Mk 的內(nèi)容不符,此時(shí) 就是應(yīng)該更新 Mk 的時(shí)候了。


代碼:
cd /usr/src/
make update
cd /usr/src/share/mk
make install



22、如何解決安裝 ports 時(shí)出現(xiàn) sed -i 的錯(cuò)誤?

因?yàn)?BSD style 的 sed ,也就是 BSD 本身自有的 sed ,與一些 ports 編譯期
間所執(zhí)行的 sed 不一致,所以會(huì)導(dǎo)致一些語 法錯(cuò)誤。此時(shí)先安裝 sed_inplace
(textproc/sed_inplace),然後再安裝原本無法安裝的 ports:


代碼:
cd /usr/ports/???/???/
make -DUSE_REINPLACE install



23、如何列出所有可以升級的 ports?

ports collection 的更新速度很快,在每次更新 ports collections 後,往往
會(huì)出現(xiàn)比目前現(xiàn)在安裝的套件還新的版本,可 以令系統(tǒng)自行整理并提供可升級套
件的列表:

代碼:
pkg_version -c



24、如何得知 ports system 對某個(gè) ports 所提供的編譯叁數(shù)?

所有的 ports collections 中所提供的編譯叁數(shù)都會(huì)在對應(yīng)的 Makefile 檔案內(nèi)
詳述,如 sysutils/portupgrade 的話,
則是位在 /usr/ports/sysutils/portupgrade/Makefile 檔案下。
可以對此檔案瀏覽以得知編譯時(shí)期可以下達(dá)的叁數(shù),
如對 sysutils/portupgrade 有提供 NOPORTDOCS,則:

代碼:
cd /usr/ports/sysutils/portupgrade/
make -DNOPORTDOCS install # make NOPORTDOCS=yes install 亦同


那麼安裝此 ports 時(shí),會(huì)將 NOPORTDOCS 所對應(yīng)的相關(guān)叁數(shù)指定進(jìn)去。
有時(shí)候設(shè)定較人性化的 ports 會(huì)在安裝前提供叁數(shù)供選擇,但是其實(shí)大部份的
ports 都沒有提供,因此必須自行去搜尋可編 譯的叁數(shù),在此我提供的方式如
下:

代碼:
cd /usr/ports/sysutils/portupgrade/
grep defined Makefile


如此幾乎可以知道所有提供的可編譯叁數(shù),雖然有時(shí)會(huì)多出一些不相干的資料,
不會(huì)這個(gè)確實(shí)是一個(gè)不錯(cuò)可叁考的方式。


25、如何手動(dòng)加入編譯 ports 的叁數(shù)?

在 FAQ 24 中的方法,是 ports collections 有提供的前提之下,有時(shí)候并不是
所有該軟體所支援的叁數(shù) 都會(huì)收納在 ports collections 中,因此有時(shí)候會(huì)需
要手動(dòng)加入編譯的叁數(shù)。如 ftp/pure-ftpd 中,如果不想把 inetd 的支援編入
的選項(xiàng),并沒有被 ports collections 所納入,因此必須手動(dòng)加上這個(gè) 編譯叁
數(shù),如下:

代碼:
cd /usr/ports/ftp/pure-ftpd/
make CONFIGURE_ARGS+="--without-inetd" install



26、如何指定 ports 的安裝路徑?

預(yù)設(shè) ports collecions 已安排安裝的路徑 (/usr/local/),如果不想將套件安
裝在預(yù)設(shè)路徑的話,可以手動(dòng)指定安裝路徑。 以 editors/joe 為例,則:

代碼:
cd /usr/ports/editors/joe/
make PREFIX=/usr install


那麼 joe 就會(huì)將檔案對應(yīng)在 /usr 目錄下,而不是預(yù)設(shè)的 /usr/local 目錄下。


27、安裝 ports 出現(xiàn) FORCE_PKG_REGISTER 的錯(cuò)誤訊息

問題敘述:
當(dāng)你先前已經(jīng)用ports 安裝過某一軟體 當(dāng)你要再次透過ports 安裝同一軟體時(shí),
很有可能會(huì)出現(xiàn)類似下述的錯(cuò)誤訊息產(chǎn)生.

意思是說 你可以透過 make deinstall 解除安裝 然後透過 make reinstall來

再次安裝

若你確定想要*覆蓋*此安裝 可以透過設(shè)定 FORCE_PKG_REGISTER 變數(shù)達(dá)成目標(biāo).


===> An older version of PORTS資料夾位置 is already installed (軟體版本)
You may wish to ``make deinstall'' and install this port again
by ``make reinstall'' to upgrade it properly.
If you really wish to overwrite the old port of PORTS資料夾位置
without deleting it first, set the variable "FORCE_PKG_REGISTER"
in your environment or the "make install" command line.

處理方式:
只要在make install 時(shí)加上 FORCE_PKG_REGISTER="yes" 就可以強(qiáng)制安裝.
也就是: /usr/ports/資料夾位址/#make install FORCE_PKG_REGISTER="yes"


28、安裝 ports 出現(xiàn) Shared object libintl.so.X not found 的錯(cuò)誤訊息

Shared object "libintl.so.4" 或 (libc.so.4) not found

問題敘述:
近來的FreeBSD版本,常常在安裝某些軟體時(shí),會(huì)出現(xiàn)類似的失敗畫面
並且告訴你缺乏 libintl.so.4或是 libc.so.4 這個(gè)函式.

Shared object "libc.so.4" not found
如下圖:是近來版本安裝某些程式問題時(shí)常見的問題,缺少 libc.so.4 函式.


問題分析:
提到libc.so函式 首先想到的是與 linux 程式相關(guān)共享函式庫.
FreeBSD在讀取相關(guān)函式前,首先會(huì)在 /compat/linux 資料夾中尋找;
然後若找不到則會(huì)嘗試搜尋 /lib 資料夾.

以 libc.so 函式為例,會(huì)先尋找/compat/linux/lib/libc.so ;
其次才是/lib/libc.so .

簡單的解決方式:


Shared object "libintl.so.4" not found
跟 libc.so 函式一樣 也是在安裝某些軟體就會(huì)出現(xiàn)錯(cuò)誤畫面.

問題分析:
libintl.so 函式是安裝 /usr/port/devel/gettext/ 程式後取得.
理論上來說 目前版本的相關(guān)函數(shù)是 libintl.so.5 為何還要去讀取舊的 libintl.so.4 版本.

當(dāng)你在安裝gmake時(shí),gmake會(huì)去連結(jié)安裝gmake當(dāng)時(shí)的libinl.so的版本,是version 4.
也就是 libintl.so.4

當(dāng)你更新過相關(guān)的ports (devel/gettext) 將會(huì)用 libintl.so.5 取代 libintl.so.4
除非你能取得先前某些系統(tǒng)保留舊有的 libintl.so.4 否則就會(huì)出現(xiàn)安裝失敗
狀況.

很可惜的是...有很多程式需要 gettext 函式.
你可以用 cd /usr/ports/ ; make search key="gettext" | more 查詢
為什麼要加上more 因?yàn)樘嗯履憧吹交桀^...QQ

問題解決:
要解決這個(gè)問題 你可以透過重新建立所有與 gettext 相關(guān)的ports程式.

# portupgrade -fr gettext
重新建立或重新安裝所有與 gettext相關(guān)連的程式,
若你忘掉了 請參閱 更新ports/升級系統(tǒng) > portupgrade 軟體更新

或是簡單的用偷吃步 把*目前版本*link過去..QQ (版本6..類推)
然後就可以順利進(jìn)行程式安裝.

29、如何安裝 packages?

目前 FreeBSD 的 packages 是由 .tgz 所打包。如果想安裝一個(gè) packages ,可
使用 pkg_add,如安裝一個(gè) joe 的 tgz:

代碼:
pkg_add joe-{version}.tgz



30、如何強(qiáng)制安裝 packages?

由於有些 packages 會(huì)有與其他 packages 相依性的關(guān)系,所以必須先行安裝
些 packages 才能正常安裝。 如果須要強(qiáng)制安裝 packages ,可以不須安裝那些
有相依性 packages ,但要注意的是強(qiáng)制安裝的結(jié)果可能會(huì)導(dǎo)致執(zhí)行或運(yùn)作的不
正常。強(qiáng)制安裝 packages 的指令如下,如強(qiáng)制安裝一個(gè) joe 的 tgz:


代碼:
pkg_add -f joe-{version}.tgz



31、如何查詢 packages 與其他 packages 之間的相依性?

由於有些 packages 會(huì)有與其他 packages 相依性的關(guān)系,所以必須先行安裝
些 packages 才能正常安裝。 查詢 packages 與其他 packages 之間的相依性的
指令如下,如查詢與 portupgrade 相依的其他 packages:


代碼:
pkg_info -r portupgrade-{version}.tgz



32、如何遠(yuǎn)端安裝 packages?

有兩種設(shè)定方式,首先是 PACKAGEROOT,如:

setenv PACKAGEROOT ftp://ftp.cn.freebsd.org #設(shè)定 PACKAGEROOT 為 ftp.cn.freebsd.org 站臺(tái)

另一種方式是設(shè)定 PACKAGESITE,好處是若該站臺(tái)的 packages 倉儲(chǔ)并不是符合
官方的設(shè)定或你想自己指定一個(gè)路徑。
ftp.cn.freebsd.org i386 的 current pakcages 為例:

setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-current/Latest/

兩種方式選擇其中一種皆可,接下來的步驟都一樣。
往後要安裝 packages 的時(shí)候,如 portupgrade 的話,則:

代碼:
pkg_add -r portupgrade


系統(tǒng)會(huì)自動(dòng)於 ftp.cn.freebsd.org 抓取所有與 portupgrade 相依的 packages 并安裝


33、如何更新 INDEX 對照表?

4.x 的 INDEX 位於 /usr/ports/INDEX,5.x 位於 /usr/ports/INDEX-5。
INDEX 是對照 ports 所有相依等資訊的對照表,若長期未更新的話,會(huì)導(dǎo)致
ports 對照失敗。官方有定期更新 INDEX,如果 想自行更新的話,則:

代碼:
cd /usr/ports/
make index



34、如何更新 INDEX HTML?

FreeBSD 提供了用網(wǎng)頁的方式來觀看 ports collection,即可使用 lynx, w3m,
links 或其它可瀏覽網(wǎng)頁的程式來查閱。制作全部 ports collection 的方式如
下:

代碼:
cd /usr/ports/
make readmes


如果是僅須要做目前目錄下的資訊,或單一更新某一分類下的資訊,如 /usr/ports/ftp/ 的話,則:
代碼:
cd /usr/ports/ftp/
make readme


則僅會(huì)更新 /usr/ports/ftp/ 這個(gè)目錄的資訊,其上與其下的目錄皆不會(huì)更動(dòng)
到。 執(zhí)行成功後,會(huì)在相對應(yīng)的目錄下產(chǎn)生 README.html 的檔案。


35、如何針對某些 ports 不做 CVSup?

若 ports 底下的某些分類完全用不到,則可以在 CVSup 時(shí),不做更新,以節(jié)省
網(wǎng)路頻寬與時(shí)間。

代碼:
# vi /usr/sup/refuse
******************************************
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/japanese



那麼則上述目錄下的檔案皆不會(huì)更新。

如果是想要某些單一的 ports 不做同步,例如想保留舊版不做同步,或新版出現(xiàn)
問題時(shí)。

代碼:
# vi /usr/sup/refuse
******************************************
ports/lang/perl5.8


那麼 ports/lang/perl5.8 這個(gè) ports 不會(huì)做 CVSup 同步。

這些設(shè)定方法支援萬用字元。

代碼:
# vi /usr/sup/refuse
******************************************
ports/lang/perl*
ports/po*



36、如何使用 CVSup 同步 ports collections?

請叁考 gslin 的 用 CVSup 去更新你的 source tree 以及 ports tree。


37、安裝 ports 出現(xiàn) port is outdated 的錯(cuò)誤訊息

例如安裝 imap-uw 時(shí),出現(xiàn)以下內(nèi)容:
Your installation of the cclient port is outdated. Please delete it before continuing.

表示因?yàn)橄鄬?yīng),且已安裝好的 cclient 這個(gè)軟體過於老舊,建議先升級這個(gè)軟
體再行安裝 imap-uw。因此只要先升級 cclient 後,再安裝即可。

代碼:
# cd /usr/ports/mail/cclient/
# make reinstall 或 # make deinstall && make install
# cd /usr/ports/mail/imap-uw/
# make install



38、安裝 ports 出現(xiàn) OpenSSL vulnerabilities 的錯(cuò)誤訊息

安裝有些套件時(shí),如果有相依於 OpenSSL 時(shí),且判斷系統(tǒng)目前使用的 OpenSSL 版本有漏洞問題時(shí),會(huì)出現(xiàn)如下的訊息:
Dependency warning: used OpenSSL version contains known
vulnerabilities Please update or define either WITH_OPENSSL_BASE or
WITH_OPENSSL_PORT

一般建議的解決方法有二種。

第一種:升級系統(tǒng)(需含系統(tǒng)內(nèi)建之 OpenSSL 一并升級),再安裝該套件
可以先查詢目前系統(tǒng)所用之 OpenSSL 的版本:
代碼:
openssl version -v


升級系統(tǒng)可叁考 FNP: upgrade core system 或 FNP: upgrade major system。
升級完系統(tǒng)後,再進(jìn)行一次 OpenSSL 版本之確認(rèn)。
然後再安裝該套件,這訊息就不會(huì)出現(xiàn)了。

第二種:使該套件相依於 ports tree 中的 OpenSSL
這種方法會(huì)安裝 ports tree 中新版本的 OpenSSL,然後相依於此新版本的
OpenSSL,而不是系統(tǒng)本身內(nèi)建的 OpenSSL。只要安裝套件時(shí),加入 WITH_OPENSSL_PORT 的叁數(shù),
即會(huì)安裝 ports tree 中的 OpenSSL,并且該套件
也會(huì)相依於此。方法如下:
代碼:
make -DWITH_OPENSSL_PORT install


這里不建議用叁數(shù) WITH_OPENSSL_BASE,因?yàn)檫@表示安裝套件時(shí),是相依於原本
系統(tǒng)中可能有漏洞的 OpenSSL,這樣會(huì)導(dǎo)致安全性的問題。


39、如何在 FreeBSD 上模擬 Linux 的環(huán)境?

最新最完整的資料在官方的 Handbook 上。

簡單來說,F(xiàn)reeBSD 核心必須支援,且必須安裝 Linux Runtime Libraries,最
後做一些設(shè)定。

如果要執(zhí)行 Linux ELF Binaries,可以先查詢目前 FreeBSD 是否已經(jīng)支援 Linux ELF。

代碼:
brandelf -l


看是否有 Linux 的字樣,如果沒的話,請回頭檢查是否哪一步驟沒有做到。

然後檢查執(zhí)行檔是否為 Linux ELF Binaries。

代碼:
brandelf execution-binary-filename


如果是 Linux ELF Binaries,則正常執(zhí)行即可。

如果顯示結(jié)果不是 Linux ELF Binaries,但是自己確定是 Linux ELF Binaries
的話,則只要更改一下 ELF 的格式即可。
brandelf -t Linux execution-binary-filename

然後再檢查一次是否已經(jīng)修正為正確的格式。


40、如何在 FreeBSD 上安裝 Linux rpm?

請確定已經(jīng)成功在 FreeBSD 上模擬 Linux 的環(huán)境,請叁考 FAQ 39。

安裝 rpm 的方式如下:

代碼:
rpm --ignoreos --root /compat/linux --dbpath /var/lib/rpm/ -Uvh xxx.rpm



41、安裝 ports 時(shí),原本應(yīng)該出現(xiàn)的清單選項(xiàng)不見了

這是由於系統(tǒng)會(huì)紀(jì)錄曾安裝過 ports 的當(dāng)時(shí)所選擇的清單選項(xiàng),因此有時(shí)會(huì)因?yàn)?
安裝時(shí)出了問題,或是再一次安裝時(shí),就不會(huì)出現(xiàn)清單可以選擇。如何讓清單選
項(xiàng)重新出現(xiàn)呢?

代碼:
make clean
make showconfig # 顯示設(shè)定的內(nèi)容
make rmconfig # 清除設(shè)定的內(nèi)容
make config


之前設(shè)定 ports 的選項(xiàng)預(yù)設(shè)會(huì)紀(jì)錄在 /var/db/ports/{ports_name}/options 內(nèi)
容中。如要查看之前 python 有選擇的清單選項(xiàng):

代碼:
cat /var/db/ports/python/options



42、如何檢查是否有安裝重覆的 ports/packages?

隨著時(shí)間的演進(jìn),不同時(shí)間安裝的軟體會(huì)有不同版本的釋出,而且不同軟體相依
的版本號也不同,所以往往會(huì)造成同一個(gè)軟體安裝過多版本的情形發(fā)生。

這里我必須聲明的是,雖然套件名稱相同,可是可能沒辦法上下相容,因此造成
有些軟體必須依賴比較舊的版本,而有些軟體必須依賴比較新的版本,如果有這
種情形發(fā)生的話,那麼二個(gè)版本的存在是正常的。

否則的話,我們會(huì)建議移除舊版的套件,將所有相依於此套件改為相依於新版
的。也就是說,移除舊版的套件,然後將原本相依於舊版的套件,改為相依於新
版的套件。注意,我強(qiáng)調(diào)的是新舊版套件是相容的。因?yàn)檫@種做法有點(diǎn)危險(xiǎn),因
此不提供做法,請使用更水階的套件管理工具,如 portupgrade 來完成。

檢查是否有安裝重覆的 ports/packages 的方法如下:

代碼:
pkg_info | sort | sed -e 's/-[0-9].*$//' | uniq -c | grep -v '^[[:space:]]*1'


如果有一行是顯示" 3 libtool",則表示目前系統(tǒng)安裝三種不同版本的
libtool套件。
接下來可以檢查這三種版本是否可以相容:

代碼:
cd /usr/ports/
make search name=libtool


如果發(fā)現(xiàn)分別有三種 ports 來代表這三種不同版本的 libtool,就表示他們彼此
不相容,必須保留三者,否則可能會(huì)發(fā)生相依問題。假設(shè)如下:

代碼:
/usr/ports/devel/libtool13
/usr/ports/devel/libtool14
/usr/ports/devel/libtool15


反之,如果發(fā)現(xiàn)只有一種 ports 來代表這種不同版本的套件,則表示目前系統(tǒng)
裝的三種版本是相容的,只要修改原本相容於其它二種版本所有的套件,并指向
欲保留的那個(gè)版本,然後移除其它二種即可。如發(fā)現(xiàn)系統(tǒng)目前有安裝三種不同版
本的 gettext:

代碼:
cd /usr/ports/
make search name=gettext


然後檢查的結(jié)果如下:

代碼:
/usr/ports/devel/gettext


則將所有相依於 gettext 舊版本的其它套件都改為相依於新版的 gettext,然後
再移除系統(tǒng)中舊版的 gettext 即可。


43、`make deinstall' 與 `pkg_delete' 有什麼不同?

簡單來說,`make deinstall' 會(huì)移除該 port,并且不會(huì)叁照其相依/相關(guān)的 ports。

`pkg_delete' 在移除該 port 前,會(huì)叁照其相依/相關(guān)的 ports,并且 `pkg_delete'
有支援 wild card,如要移除所有 p 開頭的 ports,則:

代碼:
cd /var/db/pkg/
pkg_delete p*


[color=red]要注意的是,如果使用 `make deinstall',則最好確定系統(tǒng)目前所
安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會(huì)出現(xiàn)非預(yù)
期性錯(cuò)誤;而 `pkg_delete' 是因?yàn)橹苯觿h除系統(tǒng)中所安裝的版本,所以沒有此
問題。

因此,換句話說,當(dāng)系統(tǒng)安裝的版本符合 ports collections 中的版本,則可
以使用 `make deinstall' 或 `pkg_delete',否則的話最好用 `pkg_delete'。


與 `make deinstall' 相關(guān)的資訊:FAQ 11、FAQ 12及FAQ 13。
與 `pkg_delete' 相關(guān)的資訊:FAQ 11、FAQ 12及FAQ 15。


44、安裝 ports 出現(xiàn) local modification time does not match remote 的錯(cuò)誤訊息

這通常表示你已經(jīng)下載了這個(gè)檔案在 /usr/ports/distfiles 的對應(yīng)目錄中,但
是它并不是 port collections 所期望下載的。通常的解決方法
在 /usr/ports/distfiles 的對應(yīng)目錄中移除此檔案,再重新抓取。

例如是安裝 joe 時(shí)出現(xiàn)如下的錯(cuò)誤訊息:
fetch: joe2.8.tar.Z: local modification time does not match remote

則將 joe2.8.tar.Z 於 /usr/ports/distfiles 中移除:

代碼:
cd /usr/ports/editors/joe/
make distclean

相關(guān)文章

  • Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié)

    這篇文章主要介紹了Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié),需要的朋友可以參考下
    2023-05-03
  • FreeBSD如何添加硬盤?FreeBSD添加硬盤的方法

    一些朋友問小編FreeBSD如何添加硬盤?別擔(dān)心,今天小編就為大家分享FreeBSD添加硬盤的方法,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧
    2017-04-06
  • Freebsd PF 安裝使用詳解

    今天小編為大家?guī)淼氖荈reebsd PF 安裝使用詳解,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧
    2017-04-06
  • FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?

    最近一些朋友問小編 FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?今天小編要為大家?guī)淼氖?FreeBSD下zfs: failed with error 6錯(cuò)誤的解決方法,有需要的朋友一起去看
    2017-04-06
  • Unix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解

    今天小編要為大家?guī)淼氖荱nix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解,希望對大家會(huì)有幫助,有需要的朋友一起去看看吧
    2017-04-01
  • Unix中的dot命令詳解

    今天小編將為大家?guī)淼氖荱nix中的dot命令詳解!希望對大家會(huì)有幫助!有需要的朋友一起去看看吧
    2017-03-22
  • freebsd時(shí)間設(shè)置小節(jié)詳解

    近日!一些朋友對于freebsd時(shí)間設(shè)置小節(jié)存在疑慮!下面小編將為大家?guī)淼氖莊reebsd時(shí)間設(shè)置小節(jié)詳解!希望對大家會(huì)有幫助!有需要的朋友一起去看看吧
    2017-03-19
  • grub2引導(dǎo)freebsd詳解

    今天小編要為大家?guī)淼氖莋rub2引導(dǎo)freebsd詳解!希望對大家會(huì)有幫助,有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD10安裝內(nèi)核源代碼方法講解

    下面小編為大家?guī)淼氖荈reeBSD10安裝內(nèi)核源代碼方法講解!希望能夠幫助到大家!有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD下如何使GraphicsMagick支持中文字體?

    最近一些朋友在問FreeBSD下如何使GraphicsMagick支持中文字體?今天小編為大家?guī)淼氖荈reeBSD下使GraphicsMagick支持中文字體的方法!有需要的朋友一起去看看吧
    2017-03-15

最新評論