Provided by: manpages-zh_1.6.3.2-1_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