Создает индексный файл для автоматической загрузки пакета.
pkg_mkIndex dir pattern ?pattern pattern...?
Процедура pkg_mkIndex представляет собой утилиту для работы с Tcl-библиотеками. Она обеспечивает создание индексных файлов, необходимых для автоматической загрузки пакетов, когда в приложении встречается команда package require. Для создания автоматически загружаемых пакетов необходимо выполнить следующие действия:
Если перечисленные выше шаги выполнены, то для использования необходимого пакета достаточно выполнить в приложении команду package require. Если, например, версии 2.1, 2.3 и 3.1 пакета Test проиндексированы и хранятся в соответствующих каталогах, то команда
package require Test
загрузит версию 3.1. А команда
package require -exact Test 2.1
загрузит версию 2.1. В различных каталогах могут храниться много версий одного и того же пакета, но в данный интерпретатор может быть загружена только одна из них - та, которая будет затребована первой. Однако, в различных интерпретаторах одного приложения могут быть загружены различные версии одного и того же пакета.
Автозагрузчик и загрузчик пакетов во многом имеют сходные возможности, поскольку и тот, и другой предназначены для загрузки файлов по требованию. Однако загрузчик файлов представляет собой механизм более высокого уровня, который использует автозагрузчик на последнем шаге процесса загрузки. Как правило, предпочтительнее индексировать пакеты с помощью команды pkg_mkIndex, чем с помощью команды auto_mkindex, поскольку это обеспечивает подключение механизма версий. Вы можете иметь несколько версий одного и того же пакета и, более того, использовать в различных приложениях различные версии. Напротив, auto_mkindex позволяет работать с единственной версией пакета. Скорее всего, не стоит создавать индексы для пакета с помощью и pkg_mkIndex, и auto_mkindex, поскольку в этом случае трудно контролировать, какой из механизмов загрузки пакета сработает первым, и, соответственно, какая версия пакета будет загружена.
При первом вызове команды package require исполняется скрипт package unknown. При инициализации Tcl-скрипт package unknown задается таким образом, что он выполняет все файлы pkgIndex.tcl в каталогах auto_path. Эти файлы содержат команды package ifneeded для каждой доступной версии каждого доступного пакета. Эти команды в свою очередь вызывают команды package provide, которые объявляют данные версии доступными. Кроме того, они формируют необходимую исходную информацию для автозагрузчика. Данный файл данной версии данного пакета реально загружается только тогда, когда вызывается первая из содержащихся в нем команд. Таким образом, после выполнения команды package require вы не увидите команд пакета в интерпретаторе, но, тем не менее, вы сможете их вызвать и при этом они загрузятся автоматически.