歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> FreeBSD常用命令和packages使用方法講解

FreeBSD常用命令和packages使用方法講解

日期:2017/3/1 18:14:41   编辑:BSD
安裝 packages

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

pkg_add joe-{version}.tgz

強制安裝 packages
由於有些 packages 會有與其他 packages 相依性的關系,所以必須先行安裝那些 packages 才能正常安裝。 如果須要強制安裝 packages ,可以不須安裝那些有相依性 packages ,但要注意的是強制安裝的結果可能會導致執行或運作的不正常。強制安裝 packages 的指令如下,如強制安裝一個 joe 的 tgz:
pkg_add -f joe-{version}.tgz

查詢 packages 與其他 packages 之間的相依性

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

pkg_info -r portupgrade-{version}.tgz

遠端安裝 packages

有兩種設定方式,首先是 PACKAGEROOT,如:

setenv PACKAGEROOT ftp://ftp.cn.freebsd.org/ #設定 PACKAGEROOT 為 ftp.cn.freebsd.org 站台另一種方式是設定 PACKAGESITE,好處是若該站台的 packages 倉儲並不是符合
官方的設定或你想自己指定一個路徑。以 ftp.cn.freebsd.org i386 的 current pakcages 為例:

setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-current/Latest/
兩種方式選擇其中一種皆可,接下來的步驟都一樣。 往後要安裝 packages 的時候,如 portupgrade 的話,則:

pkg_add -r portupgrade
則系統會自動於 ftp.cn.freebsd.org 下載所有與 portupgrade 相依的 packages 並安裝。


查詢目前系統安裝了哪些套件

查詢目前系統已安裝的全部套件:
pkg_info

查詢目前系統有沒有安裝這個關鍵字的套件
pkg_info | grep

查詢某個檔案是屬於哪些套件

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

pkg_info -W /usr/local/bin/joe
如果沒有回傳任何資訊的話,代表著這個檔案是由 FreeBSD 內建的。

查詢某個套件安裝了哪些檔案

如果想查詢目前系統所安裝的 joe 包含了哪些檔案,則:

pkg_info -L /var/db/pkg/joe-{version}


列出所有可以升級的 ports

ports collection 的更新速度很快,在每次更新 ports collections 後,往往會出現比目前現在安裝的套件還新的版本,可 以令系統自行整理並提供可升級套件的列表:

pkg_version –c

移除已安裝的 ports
以 editors/joe 為例的話,則:
cd /usr/ports/editors/joe/
make deinstall
或是使用 pkg_delete
cd /var/db/pkg/
pkg_delete joe-{version}
有時候套件之間的相依性會導致無法直接移除,如果要強制移除的話,則:
cd /var/db/pkg/
pkg_delete -f joe-{version}但很有可能會導致其它的套件執行起來出現問題。



一並移除所相依的 ports
以 sysutils/portupgrade 為例的話,則:
cd /usr/ports/sysutils/portupgrade/
make deinstall-depends
執行此步驟前,請注意是否會移除應該保護的套件。
或是使用 pkg_delete
cd /var/db/pkg/
pkg_delete -r portupgrade-{version}

對一個已經安裝的 port 打包

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

cd /var/db/pkg/
pkg_create -b joe-{版本號}
會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。

`make deinstall' 與 `pkg_delete' 有什麽不同

簡單來說,`make deinstall' 會移除該 port,並且不會三照其相依/相關的 ports。 `pkg_delete' 在移除該 port 前,會三照其相依/相關的 ports,並且 `pkg_delete' 有支援 wild card,如要移除所有 p 開頭的 ports,則:

cd /var/db/pkg/
pkg_delete p*
要注意的是,如果使用 `make deinstall',則最好確定系統目前所安裝的版本,與 ports collection 中顯示的版本符合,否則有可能會出現非預期性錯誤;而 `pkg_delete' 是因為直接刪除系統中所安裝的版本,所以沒有此問題。

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


對一個已經安裝的 port 打包

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

cd /var/db/pkg/
pkg_create -b joe-{版本號}
會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。
Copyright © Linux教程網 All Rights Reserved