1. 程式人生 > >FreeBSD軟體安裝 命令pkg

FreeBSD軟體安裝 命令pkg

本文根據根據中文FreeBSD系統:YIDA_OS pkg線上手冊整理.允許轉載,
轉載時請務必以超連結形式標明文章原始出處,作者資訊和本宣告.否則將追究法律責任.
http://www.yida.site/forum/

pkg 為FreeBSD新一代二進位制軟體包管理工具,始於FreeBSD9.1版,用於取代舊版工具,提供更多功能讓管理使用二進位制軟體包更快更簡單。如果要從原始碼編譯安裝軟體包,可以使用port系統。

  • 開始使用pkg
    新安裝的系統內只有pkg啟動工具,並沒有pkg完整的管理工具和手冊(YIDA系統在安裝時
    可以選擇安裝中文手冊,其內包含pkg中文手冊)。需要執行下面命令來安裝最新版pkg
    軟體包管理套件:
    /usr/sbin/pkg或者使用Port系統編譯安裝:
    cd /usr/ports/ports-mgmt/pkg
    make
    make install clean
    FreeBSD 版本 10.X 之前需要在 /etc/make.conf 加入此行:
    WITH_PKGNG= yes如果系統原來安裝有舊版pkg_*工具,安裝完新版pkg工具後,需要執行下面命令來更新數
    據庫格式:
    pkg2ngpkg 工具支援以下引數
    :

-v, –version
顯示 pkg 工具的當前版本

-d, –debug
顯示除錯描述資訊

-l, –list
對所有可用命令名稱進行列表, 並且在退出時不行行任何其他操作。-v 選項
優先於 -l 選項,-l 選項會覆蓋其他命令列引數。

-o <option=value>, –option <option=value>
從命令列設定pkg的配置選項。選項的設定是對環境中變數重新定義。它允許
多次指定這個選項。

-N 啟用狀態檢查模式。如果 local.sqlite 資料庫存在,將防止 pkg 自動建立
或者安裝已經存在的 [/var/db/pkg/local.sqlite] sqlite 資料庫

如果當前程式還沒有安裝,將會阻止 pkg 執行任何額外動作, 基本上說一個
正常初始化安裝的系統總會在最後使用 pkg 成功工具註冊安裝包。

如果沒有使用其他引數, pkg -N 將執行正常測試,如果成功打印出一個短訊息
並列出當前安裝了多少個安裝包。退出狀態應該會給出一個可靠的提示,提示
系統是否已經配置為使用 pkg 包管理的方式。

應用示例:

if pkg -N >/dev/null 2>&1; then
# pkgng-specifics
else
# pkg_install-specifics
fi

-N 首次釋出在 FreeBSD 8.4 的 /usr/sbin/pkg 中,但是在 FreeBSD 9.1中
又取消了這個選項,直到 pkg 版本 1.0.13 以前一直沒有再被引入。由於這
種原因,當呼叫 -N 選項的時候有可能會失敗,而呼叫會從 pkg 返回一個錯
誤。以下指令碼是一種讓 pkg 安全且有效的方式:

if TMPDIR=/dev/null ASSUME_ALWAYS_YES=1 \
PACKAGESITE=file:///nonexistent \
pkg info -x ‘pkg(-devel)?$’ >/dev/null 2>&1; then
# pkgng-specifics
else
# pkg_install-specifics
fi

-j <jail 名稱 或 id>, -jail <jail 名稱 或 id>
pkg 將會執行在給定的 <jail 名稱 或 id> 中, 這裡的“名稱”必須匹配
“jls name” 而且 id 必須匹配 “jls jid”。請參考 jail(8) 和
jls(8)。

-c <chroot 路徑>, –chroot <chroot 路徑>
pkg 將會被 chroot 在 <chroot 路徑> 環境中

-C <配置檔案>, –config <配置檔案>
pkg 將會使用指定檔案作為配置檔案

-R <專案配置路徑>, –repo-conf-dir <專案配置路徑>
pkg 將會搜尋指定目錄中的每個專案以作為合適的配置檔案。這將覆蓋主配
置檔案中指定的任何 REPOS_DIR 引數。
-4 pkg將使用 IPv4 來獲取儲存庫和包。
-6 pkg將使用 IPv6 來獲取儲存庫和包。

  • 命令
    pkg 支援以下命令:

help <命令>
列印指定命令的詳細用法。

add
從本地或者遠端安裝安裝包。

當需要從遠端安裝安裝包時需要[手工]指定下載協議。

當前支援的協議有 FTP, HTTP 和 HTTPS。

annotate
在安裝包中新增,修改或刪除 tag-value 風格的註釋。

audit 對已知存有漏洞的安裝包進行安全審計。

autoremove
刪除被依賴環境自動安裝且不再被需要的安裝包。

backup
在命令列下備份安裝包資料庫到指定檔案。

bootstrap
這是為了與pkg(7)啟動器相容。如果pkg
已經安裝好了,什麼都不做。
如果使用-f標誌呼叫,將嘗試重新安裝pkg
從遠端倉庫。

check
檢查被安裝的安裝包的健康狀態。

clean
清除從遠端抓取安裝包的本地快取。

convert
轉換到舊的 pkg_add(1) 格式。

create
建立一個安裝包。

delete
從系統和註冊資料庫中解除安裝一個安裝包。

fetch
從遠端抓取安裝包到本地。

info
列印已被安裝的安裝包資訊。

install
從遠端目錄下載安裝一個安裝包。如果安裝包在多個遠端目錄中同時存在,
那麼安裝過程將從第一個被發現的遠端目錄開始。但是下載會從多個遠端目
錄中嘗試,直到安裝包被成功下載。

lock
防止從系統中修改和刪除一個安裝包。

plugins
列出可用外掛。

query
查詢被安裝安裝包的資訊。

register
註冊安裝包到安裝包資料庫。

repo
建立一個安裝包的本地目錄以供遠端使用。

rquery
在遠端安裝包儲存目錄中查詢所需資訊。

search
在遠端安裝包儲存目錄中查詢所需資料包的所有有效型別。

set
在註冊資料庫中修改安裝包資訊。

shell
為本地或遠端喚起一個註冊資料庫的 sqlite shell。在極端環境下可能會用到
此命令。

shlib
顯示哪些包連結到一個指定的共享庫。

stats
顯示安裝包的註冊資料庫中所有可統計資料。

unlock
為加鎖資料包解鎖,允許他們被修改和刪除。

update
更新有效遠端儲存目錄以列表形式寫入到 pkg.conf(5) 中。

updating
顯示所有被安裝資料包的可更新數目。

upgrade
更新安裝包到最新版本。
version
簡要顯示被安裝安裝包的版本資訊。

which
查詢資料庫,以找出一個特定檔案由哪個安裝包所裝。

  • 示例
    查詢一個安裝包:
    $ pkg search perl

安裝一個安裝包:
安裝過程必須指定一個特定源或者版本號,否則系統會嘗試安裝所有與之匹配
的安裝包。

% pkg install perl-5.14

列出已安裝的安裝包:
$ pkg info

從遠端倉庫升級軟體:
% pkg upgrade

為已安裝安裝包更換源[升級]:
% pkg set -o lang/perl5.12:lang/perl5.14
% pkg install -Rf lang/perl5.14

列出非自動安裝的安裝包:
$ pkg query -e ‘%a = 0’ %o

列出自動安裝的安裝包列表:
$ pkg query -e ‘%a = 1’ %o

刪除一個已安裝的安裝包:
% pkg delete perl-5.14

移除不必要的依賴關係:
% pkg autoremove

把一個安裝包從自動安裝狀態變更為非自動安裝狀態,這將有效阻止被自動移除:
% pkg set -A 0 perl-5.14

把一個安裝包從非自動安裝狀態變更為自動安裝狀態,這樣一旦不存在依賴關係將被
允許被自動移除:
% pkg set -A 1 perl-5.14

從一個被安裝的安裝包建立一個安裝包:
% pkg create -o /usr/ports/packages/All perl-5.14

確定檔案安裝至那個安裝包:
$ pkg which /usr/local/bin/perl

審計安裝包的安全警告:
$ pkg audit

檢查是否存在被安裝的安裝包校驗和不匹配的情況:
# pkg check -s -a

檢查缺失依賴關係的情況:
# pkg check -d -a