Manpages

______________________________________________________________________________

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 requirepackage provide 命 令 ; 其 他 命 令 主 要 被 系 統 腳 本 用 來 維 護 包 數 據 庫 。

package 命 令 的 行 爲 由 它 的 第 一 個 參 數 確 定 。 允 許 下 列 形 式 :
package forget ?
package package ...? 從 這 個 解 釋 器 中 刪 除 關 於 每 個 指 定 的 包 的 所 有 信 息 , 包 括 由 package ifneededpackage provide 提 供 的 信 息 。
package ifneeded
package version ?script? 這 個 命 令 典 型 的 只 出 現 在 系 統 配 置 腳 本 中 , 被 用 來 設 置 包 數 據 庫 。 若 需 要 一 個 特 定 的 包 的 一 個 特 定 的 版 本 , 它 指 示 如 果 這 個 包 的 這 個 版 本 是 可 獲 得 的 , 可 通 過 執 行 script 來 把 這 個 包 來 增 加 到 解 釋 器 上 。 腳 本 保 存 在 一 個 數 據 庫 中 , 由 隨 後 的 package require 命 令 使 用 ; 典 型 的 , script 爲 在 包 中 的 命 令 設 置 自 動 裝 載 (或 直 接 調 用 load 和 /或 source), 接 着 調 用 package provide 來 指 示 這 個 包 已 經 存 在 。 在 數 據 庫 中 可 以 有 一 個 單 一 的 包 的 多 個 版 本 的 信 息 。 如 果 數 據 庫 已 經 包 含 了 對 packageversion 的 信 息 , 則 新 script 替 換 現 存 的 腳 本 。 如 果 省 略 了 script 參 數 , 返 回 包 package 的 版 本 version 的 當 前 腳 本 , 如 果 未 對 這 個 packageversion 調 用 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 的 版 本 也 可 以 接 受 。 如 果 省 略 了 -exactversion二 者 則 任 何 版 本 都 可 接 受 。 如 果 已 經 提 供 了 package 的 一 個 版 本 (通 過 調 用 package provide 命 令 ), 則 它 的 版 本 號 必 須 滿 足 由 -exactversion 給 出 的 條 件 並 且 命 令 立 即 返 回 。 否 則 , 命 令 查 找 由 以 前 的 package ifneeded 命 令 提 供 的 信 息 的 數 據 庫 , 看 是 否 能 獲 得 一 個 可 接 受 的 版 本 。 如 果 有 , 則 調 用 最 可 接 受 的 版 本 號 的 腳 本 ; 它 必 須 做 所 有 裝 載 這 個 包 所 必 須 的 工 作 , 包 括 調 用 爲 這 個 包 調 用 package provide。 如 果 package ifneeded數 據 庫 不 包 含 這 個 包 的 可 接 受 的 版 本 並 且 爲 這 個 解 釋 器 指 定 了 一 個 package unknown 命 令 則 調 用 這 個 命 令 ; 當 它 完 成 的 時 候 , Tcl 再 次 檢 查 是 否 現 在 提 供 了 這 個 包 或 是 否 有 一 個 給 它 的 package ifneeded腳 本 。 如 果 所 有 這 些 步 驟 不 能 提 供 這 個 包 的 一 個 可 接 受 的 版 本 , 則 命 令 返 回 一 個 錯 誤 。
package unknown
?command? 這 個 命 令 提 供 在 一 個 “最 後 一 搏 ”(’’last resort’’) 命 令 , 在 package require 期 間 如 果 package ifneeded 數 據 庫 中 沒 有 一 個 包 的 合 適 的 版 本 可 調 用 這 個 命 令 。 如 果 提 供 了 command 參 數 , 它 包 含 一 個 命 令 的 第 一 部 分 , 在 一 次 package require 命 令 期 間 調 用 這 個 命 令 的 時 候 , Tcl 添 加 給 出 所 須 的 包 的 名 字 和 版 本 的 兩 個 附 加 參 數 。 例 如 , 如 果 commandfoo 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 比 較 由 version1version2 給 出 的 兩 個 版 本 。 如 果 version1version2 早 就 返 回 -1, 如 果 相 同 則 返 回 0, 如 果 version1version2 晚 則 返 回 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 requirepackage provide 命 令 , 並 使 用 過 程 pkg_mkIndex 來 建 立 包 索 引 文 件 。 一 旦 你 已 經 這 樣 做 了 , 將 自 動 的 裝 載 包 來 響 應 package require 命 令 。 詳 情 請 參 見 pkg_mkIndex 的 文 檔 。

參 見 SEE ALSO

msgcat(n), packagens(n), pkgMkIndex(n)

關 鍵 字 KEYWORDS

package, version

[中 文 版 維 護 人 ]

寒 蟬 退 士

[中 文 版 最 新 更 新 ]

2001/08/31

《 中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃 》 :

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh