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