projman/hlp/ru/tcl/package.html

169 lines
9.9 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
2015-10-19 13:27:31 +03:00
<html>
<head>
<title>package</title>
</head>
<body>
<h1>package</h1>
<p>Команда загрузки пакетов библиотек и контроля версий.</p>
2015-10-19 13:27:31 +03:00
<h2>СИНТАКСИС</h2>
2015-10-19 13:27:31 +03:00
<pre>
<a href=#forget><strong>package</strong> <strong>forget</strong></a> <em>package</em>
2015-10-19 13:27:31 +03:00
<a href=#ifneeded><strong>package</strong> <strong>ifneeded</strong></a> <em>package</em> <em>version</em> ?<em>script</em>?
2015-10-19 13:27:31 +03:00
<a href=#names><strong>package</strong> <strong>names</strong></a>
2015-10-19 13:27:31 +03:00
<a href=#provide><strong>package</strong> <strong>provide</strong></a> <em>package</em> ?<em>version</em>?
2015-10-19 13:27:31 +03:00
<a href=#require><strong>package</strong> <strong>require</strong> ?<strong>-exact</strong>?</a> <em>package</em> ?<em>version</em>?
2015-10-19 13:27:31 +03:00
<a href=#unknown><strong>package</strong> <strong>unknown</strong></a> ?<em>command</em>?
2015-10-19 13:27:31 +03:00
<a href=#vcompare><strong>package</strong> <strong>vcompare</strong></a> <em>version1</em> <em>version2</em>
2015-10-19 13:27:31 +03:00
<a href=#versions><strong>package</strong> <strong>versions</strong></a> <em>package</em>
2015-10-19 13:27:31 +03:00
<a href=#vsatisfies><strong>package</strong> <strong>vsatisfies</strong></a> <em>version1</em> <em>version2</em>
2015-10-19 13:27:31 +03:00
</pre>
<h2>ОПИСАНИЕ</h2>
2015-10-19 13:27:31 +03:00
<p>Команда поддерживает простую базу данных со сведениями о том,
какие пакеты библиотечных функций доступны для использования в
данном интерпретаторе, и как их загрузить в интерпретатор. Она
поддерживает многоверсионность пакетов и гарантирует загрузку в
приложение необходимой версии пакета. При этом она обеспечивает
контроль непротиворечивости версий. Обычно в Tcl-скриптах
достаточно использовать команды <strong>package</strong> <strong>require</strong> и
<strong>package</strong> <strong>provide</strong>. Остальные команды предназначены в
первую очередь для системных скриптов, которые поддерживают базу
данных пакетов.</p>
2015-10-19 13:27:31 +03:00
<p>Поведение команды <strong>package</strong> определяется ее первым
аргументом. Ниже описаны возможные формы команды.</p>
2015-10-19 13:27:31 +03:00
<dl>
<dt><a name=forget></a><strong>package</strong> <strong>forget</strong>
2015-10-19 13:27:31 +03:00
<em>package</em></dt>
<dd>Удаляет информацию о пакете из интерпретатора, включая как
информацию, возвращаемую командой <strong>package</strong>
<strong>ifneeded</strong>, так и информацию, возвращаемую командой
2015-10-19 13:27:31 +03:00
<strong>package</strong> <strong>provide</strong>.</dd>
<dt><a name=ifneeded></a><strong>package</strong>
2015-10-19 13:27:31 +03:00
<strong>ifneeded</strong> <em>package</em> <em>version</em> ?<em>script</em>?</dt>
<dd>Команда используется в системных скриптах. Если указана
конкретная версия и скрипт, заносит в базу данных информацию о
том, что соответствующая версия пакета доступна и может быть
загружена в интерпретатор с помощью скрипта
<em>script</em>. Если в базе данных уже хранится информация о
скрипте, она обновляется. Если скрипт не указан, возвращается
текущий скрипт.</dd>
2015-10-19 13:27:31 +03:00
<dt><a name=names></a><strong>package</strong> <strong>names</strong></dt>
2015-10-19 13:27:31 +03:00
<dd>Возвращает список всех пакетов в интерпретаторе, для которых
известна доступная версия (заданная с помощью команды
<strong>package</strong> <strong>provide</strong>) или скрипт загрузки (заданный
командой <strong>package</strong> <strong>ifneeded</strong>).</dd>
2015-10-19 13:27:31 +03:00
<dt><a name=provide></a><strong>package</strong> <strong>provide</strong>
2015-10-19 13:27:31 +03:00
<em>package</em> ?<em>version</em>?</dt>
<dd>Команда используется для того, чтобы указать, что версия
<em>version</em> пакета <em>package</em> загружена в
интерпретатор. Если ранее была загружена другая версия,
возвращает ошибку. Если версия не указана, возвращает
загруженную версию.</dd>
2015-10-19 13:27:31 +03:00
<dt><a name=require></a><strong>package</strong> <strong>require</strong>
2015-10-19 13:27:31 +03:00
?<strong>-exact</strong>? <em>package</em> ?<em>version</em>?</dt>
<dd><p>Команда используется, если для выполнения дальнейшего
кода необходим библиотечный пакет <em>package</em> версии <em>
version</em>. Команда возвращает номер загруженной версии или
ошибку. Если присутствуют оба аргумента <strong>-exact</strong> и
<em>version</em>, то команда загружает именно указанную версию
(или выдает ошибку, если эта версия недоступна). Если
присутствует номер версии, а <strong>-exact</strong> опущено, то команда
загружает указанную версию или более позднюю, но с тем же
старшим номером версии (2.7, но не 3.1, когда указана версия
2015-10-19 13:27:31 +03:00
2.5).</p>
<p>Если база данных не содержит необходимой версии, а в
интерпретаторе определена команда для <strong>packageunknown</strong>
(см. ниже), то она исполняется, после чего повторно
проверяется доступность необходимой версии. Если версия
по-прежнему недоступна, команда возвращает ошибку.</p>
2015-10-19 13:27:31 +03:00
</dd>
<dt><a name=unknown></a><strong>package</strong> <strong>unknown</strong>
2015-10-19 13:27:31 +03:00
?<em>command</em>?</dt>
<dd><p>Команда <em>последней надежды</em> при поиске необходимой
версии пакета. Если аргумент <em>command</em> указан, то он
дополняется именем пакета и версии и полученный скрипт
выполняется. Если версия не указана, подставляется пустая
строка.</p>
2015-10-19 13:27:31 +03:00
<p>Если аргумент <em>command</em> не указан, возвращает текущий
скрипт, заданный для команды <strong>package</strong>
2015-10-19 13:27:31 +03:00
<strong>unknown</strong>.</p>
</dd>
<dt><a name=vcompare></a><strong>package</strong>
2015-10-19 13:27:31 +03:00
<strong>vcompare</strong> <em>version1</em> <em>version2</em></dt>
<dd>Команда сравнения версий. Возвращает <strong>-1</strong>, если
<em>version1</em> более ранняя версия, чем <em>version2</em>,
<strong>1</strong> - в противном случае, и <strong>0</strong>, если они
равны.</dd>
2015-10-19 13:27:31 +03:00
<dt><a name=versions></a><strong>package</strong>
2015-10-19 13:27:31 +03:00
<strong>versions</strong> <em>package</em></dt>
<dd>Возвращает список всех доступных версий пакета (информация о
которых занесена в базу данных с помощью команды
2015-10-19 13:27:31 +03:00
<strong>package</strong> <strong>ifneeded</strong>).</dd>
<dt><a name=vsatisfies></a><strong>package</strong>
2015-10-19 13:27:31 +03:00
<strong>vsatisfies</strong> <em>version1</em> <em>version2</em></dt>
<dd>возвращает <strong>1</strong>, если у <em>version1</em> и
<em>version2</em> совпадают старшие номера, а младший номер у
version1 не меньше, чем у <em>version2</em>, и <strong>0</strong> - в
противном случае.</dd>
2015-10-19 13:27:31 +03:00
</dl>
<h2><a name=ИНДЕКСЫ ПАКЕТОВ></a>ИНДЕКСЫ ПАКЕТОВ</h2>
<p>Рекомендованный способ работы с пакетами в Tcl состоит в том,
чтобы включать в скрипты команды <a
href=#require><strong>package</strong> <strong>require</strong></a> и <a
href=#provide><strong>package</strong>
<strong>provide</strong></a> и использовать процедуру <strong><a
href=pkg_mkIndex.html>pkg_mkIndex</a></strong> (см.
соответствующие пункты) для создания индексных файлов для
пакетов. Это обеспечивает автоматическую загрузку необходимых
пакетов.</p>
<p>См.также <a href=close.html><strong>close</strong></a>(n), <a
href=filename.html><strong>filename</strong></a>(n), <a href=
gets.html><strong>gets</strong></a>(n), <a
href=read.html><strong>read</strong></a>(n), <a
href=puts.html><strong>puts</strong></a>(n), <a
href=exec.html><strong>exec</strong></a>(n).</p>
2015-10-19 13:27:31 +03:00
</body>
</html>