focal (3) package.3tcl.gz

Provided by: manpages-zh_1.6.3.3-2_all bug

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 requirepackage 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