______________________________________________________________________________
NAME
package - 裝 載 包 和 版 本 控 制 的 設 施
總 覽 SYNOPSIS
package
forget ?package package ...?
package ifneeded package version ?script?
package names
package present ?-exact? package
?version?
package provide package ?version?
package require ?-exact? package
?version?
package unknown ?command?
package vcompare version1 version2
package versions package
package vsatisfies version1 version2
_________________________________________________________________
描 述 DESCRIPTION
這 個 命 令 維 持 由 當 前 解 釋 器 使 用 的 可 獲 得 的 包 以 及 如 何 把 它 們 裝 載 到 解 釋 器 中 的 一 個 簡 單 的 數 據 庫 。 它 支 持 每 個 包 的 多 個 版 本 , 並 基 於 應 用 的 需 要 安 排 裝 載 一 個 包 的 正 確 的 版 本 。 這 個 命 令 還 檢 測 並 報 告 版 本 衝 突 。 典 型 的 , 在 通 常 的 Tcl 腳 本 中 只 調 用 package require 和 package provide 命 令 ; 其 他 命 令 主 要 被 系 統 腳 本 用 來 維 護 包 數 據 庫 。
package
命 令 的 行 爲 由
它 的 第 一 個 參
數 確 定 。 允 許
下 列 形 式 :
package forget ?package package ...? 從
這 個 解 釋 器 中
刪 除 關 於 每 個
指 定 的 包 的 所
有 信 息 , 包 括
由 package ifneeded 和 package
provide 提 供 的 信 息
。
package ifneeded package version ?script?
這 個 命 令 典 型
的 只 出 現 在 系
統 配 置 腳 本 中
, 被 用 來 設 置
包 數 據 庫 。 若
需 要 一 個 特 定
的 包 的 一 個 特
定 的 版 本 , 它
指 示 如 果 這 個
包 的 這 個 版 本
是 可 獲 得 的 ,
可 通 過 執 行 script
來 把 這 個 包 來
增 加 到 解 釋 器
上 。 腳 本 保 存
在 一 個 數 據 庫
中 , 由 隨 後 的
package require 命 令 使 用
; 典 型 的 , script
爲 在 包 中 的 命
令 設 置 自 動 裝
載 (或 直 接 調 用
load 和 /或 source),
接 着 調 用 package provide
來 指 示 這 個 包
已 經 存 在 。 在
數 據 庫 中 可 以
有 一 個 單 一 的
包 的 多 個 版 本
的 信 息 。 如 果
數 據 庫 已 經 包
含 了 對 package 和
version 的 信 息 , 則
新 script 替 換 現 存
的 腳 本 。 如 果
省 略 了 script 參 數
, 返 回 包 package 的
版 本 version 的 當 前
腳 本 , 如 果 未
對 這 個 package 和
version 調 用 package ifneeded
命 令 則 返 回 一
個 空 串 。
package names 返 回 在 這
個 解 釋 器 中 所
有 包 的 名 字 ,
爲 這 些 包 提 供
了 一 個 版 本 (通
過 package provide)或 可 獲
得 給 它 們 的 package
ifneeded 腳 本 。 在 列
表 中 的 元 素 的
次 序 是 任 意 的
。
package present ?-exact? package
?version? 除 了 在 包
沒 有 裝 載 時 它
不 嘗 試 並 裝 載
它 之 外 , 這 個
命 令 等 價 於 package
require。
package provide package ?version? 調
用 這 個 命 令 來
指 示 在 這 個 解
釋 器 中 包 package 的
這 個 版 本 version 現
在 已 經 存 在 。
它 典 型 的 被 作
爲 一 個 ifneeded腳 本
的 一 部 分 而 調
用 一 次 , 並 在
包 最 終 裝 載 時
被 包 自 身 再 次
調 用 。 如 果 以
前 的 package provide 命 令
已 經 提 供 的 package
的 一 個 不 同 的
版 本 則 生 成 一
個 錯 誤 。 如 果
省 略 了 version 參 數
, 則 命 令 返 回
當 前 提 供 包 的
版 本 號 , 如 果
在 這 個 解 釋 器
中 對 package 沒 有 調
用 package provide 命 令 則
返 回 一 個 空 串
。
package require ?-exact? package
?version? 這 個 命 令
典 型 的 被 想 要
使 用 特 定 包 的
特 定 版 本 的 Tcl 腳
本 調 用 。 參 數
指 示 想 要 哪 個
包 , 和 確 保 把
包 的 合 適 版 本
裝 載 到 解 釋 器
中 的 命 令 。 如
果 命 令 成 功 執
行 , 它 返 回 裝
載 的 包 的 版 本
號 ; 否 則 生 成
一 個 錯 誤 。 如
果 同 時 指 定 了
-exact 開 關 和 version
選 項 , 則 只 接
受 給 定 版 本 。
如 果 省 略 了 -exact
但 指 定 了 version ,
則 主 版 本 號 與
version 相 同 但 晚 於
version 的 版 本 也 可
以 接 受 。 如 果
省 略 了 -exact 和
version二 者 則 任 何
版 本 都 可 接 受
。 如 果 已 經 提
供 了 package 的 一 個
版 本 (通 過 調 用
package provide 命 令 ), 則
它 的 版 本 號 必
須 滿 足 由 -exact 和
version 給 出 的 條 件
並 且 命 令 立 即
返 回 。 否 則 ,
命 令 查 找 由 以
前 的 package ifneeded 命 令
提 供 的 信 息 的
數 據 庫 , 看 是
否 能 獲 得 一 個
可 接 受 的 版 本
。 如 果 有 , 則
調 用 最 可 接 受
的 版 本 號 的 腳
本 ; 它 必 須 做
所 有 裝 載 這 個
包 所 必 須 的 工
作 , 包 括 調 用
爲 這 個 包 調 用
package provide。 如 果 package
ifneeded數 據 庫 不 包
含 這 個 包 的 可
接 受 的 版 本 並
且 爲 這 個 解 釋
器 指 定 了 一 個
package unknown 命 令 則 調
用 這 個 命 令 ;
當 它 完 成 的 時
候 , Tcl 再 次 檢 查
是 否 現 在 提 供
了 這 個 包 或 是
否 有 一 個 給 它
的 package ifneeded腳 本 。
如 果 所 有 這 些
步 驟 不 能 提 供
這 個 包 的 一 個
可 接 受 的 版 本
, 則 命 令 返 回
一 個 錯 誤 。
package unknown ?command? 這 個
命 令 提 供 在 一
個 “最 後 一 搏
”(’’last resort’’) 命
令 , 在 package require 期
間 如 果 package ifneeded 數
據 庫 中 沒 有 一
個 包 的 合 適 的
版 本 可 調 用 這
個 命 令 。 如 果
提 供 了 command 參 數
, 它 包 含 一 個
命 令 的 第 一 部
分 , 在 一 次 package
require 命 令 期 間 調
用 這 個 命 令 的
時 候 , Tcl 添 加 給
出 所 須 的 包 的
名 字 和 版 本 的
兩 個 附 加 參 數
。 例 如 , 如 果
command是 foo bar 並 且
後 來 調 用 了 命
令 package require test 2.4, 則
Tcl 將 執 行 命 令 foo bar
test 2.4 來 裝 載 這 個
包 。 如 果 未 給
package require 命 令 提 供
版 本 號 , 則 給
這 個 被 調 用 的
命 令 的 版 本 參
數 是 一 個 空 串
。 如 果 package unknown命
令 但 不 加 command 參
數 , 則 返 回 當
前 的 package unknown 腳 本
, 如 果 沒 有 就
返 回 一 個 空 串
。 如 果 指 定 command
爲 一 個 空 串 ,
若 當 前 有 package unknown
腳 本 則 刪 除 它
。
package vcompare version1 version2 比
較 由 version1和 version2
給 出 的 兩 個 版
本 。 如 果 version1 比
version2 早 就 返 回
-1, 如 果 相 同 則
返 回 0, 如 果
version1 比 version2 晚 則
返 回 1。
package versions package 返 回
package 的 所 有 版 本
號 , 通 過 package ifneeded
命 令 爲 它 們 提
供 了 信 息 。
package vsatisfies version1 version2 如
果 爲 version2 寫 的 腳
本 不 須 更 改 就
可 爲 version1 工 作 則
返 回 1(例 如 ,
version1 大 於 等 於
version2 並 且 有 相 同
的 主 版 本 號 ),
否 則 返 回 0。
版 本 號 VERSION NUMBERS
版 本 號 由 一 個 或 多 個 用 點 號 分 隔 的 十 進 制 數 組 成 , 比 如 2 或 1.162 或 3.1.13.1。 第 一 個 數 叫 做 主 版 本 號 。 越 大 的 數 對 應 一 個 包 的 越 晚 的 版 本 , 最 左 邊 的 數 有 更 大 的 權 重 (significance). 例 如 , 版 本 2.1 比 1.3 晚 而 版 本 3.4.6 比 3.3.5 晚 。 遺 漏 的 字 段 等 價 於 零 : 版 本 1.3 於 版 本 1.3.0 和 1.3.0.0 相 同 , 所 以 它 比 1.3.1 和 1.3.0.2 早 。 假 定 一 個 晚 期 版 本 向 上 (upward)兼 容 有 相 同 主 版 本 號 的 早 期 版 本 。 例 如 , 爲 一 個 包 的 版 本 2.3 寫 的 Tcl 腳 本 應 當 在 版 本 2.3.2、 2.4、 和 2.5.1 下 不 須 更 改 就 能 工 作 。 主 版 本 號 的 變 更 表 示 有 不 兼 容 的 變 更 : 如 果 代 碼 是 使 用 了 一 個 包 的 版 本 2.1 寫 成 的 , 不 保 證 在 版 本 1.7.3 或 版 本 3.1 下 不 須 更 改 就 能 工 作 。
包 索 引 PACKAGE INDICES
推 薦 的 在 Tcl 中 使 用 包 的 方 式 是 在 腳 本 中 調 用 package require 和 package provide 命 令 , 並 使 用 過 程 pkg_mkIndex 來 建 立 包 索 引 文 件 。 一 旦 你 已 經 這 樣 做 了 , 將 自 動 的 裝 載 包 來 響 應 package require 命 令 。 詳 情 請 參 見 pkg_mkIndex 的 文 檔 。
參 見 SEE ALSO
msgcat(n), packagens(n), pkgMkIndex(n)
關 鍵 字 KEYWORDS
package, version
[中 文 版 維 護 人 ]
寒 蟬 退 士
[中 文 版 最 新 更 新 ]
2001/08/31
《 中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃 》 :
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh