Файл описания пакета, package.xml, как становится понятно из его имени - это XML-файл, который содержит всю информацию о пакете из PEAR.
В этой главе описываются элементы, которые могут присутствовать в файле описания пакета, а также обсуждаются способы создания такого файла для вашего пакета.
Корневым элементом файла package.xml является элемент <package version="1.0">. Допускаются следующие вложенные элементы:
<name>: Имя пакета.
<summary>: Краткое описание пакета.
<description>: Полное описание пакета.
<license>: Лицензия (PHP License, LGPL и т.п.). Более подробная информация о допустимых лицензиях в PEAR содержится в FAQ.
<maintainers>: Информация о создателях пакета.
<maintainer>: Информация о каждом создателе отдельно (может присутствовать несколько раз, для каждого разработчика).
<user>: Имя аккаунта разработчика.
<role>: Роль разработчика в процессе создания пакета. Может принимать значения: lead, developer, contributor, helper.)
<name>: Настоящее имя разработчика.
<email>: Адрес электронной почты.
<release>: Информация о текущем релизе.
<version>: Номер версии релиза.
<state>: Статус релиза. (Может быть alpha, beta, stable, devel или snapshot)
<date>: Дата релиза.
<notes>: Комментарии к релизу
<filelist>
<file role="xxx">: Имя файла
<dir name="xxx" [role="xxx"]>: Имя поддиректории. Поддиректория, в свою очередь, может содержать другие элементы <file role="xxx">.
<deps>: Список зависимостей пакета.
<dep type="xxx" rel="yyy" optional="yes">name</dep> : Более подробную информацию о зависимостях можно найти ниже.
<changelog>: Changelog(история изменений) пакета.
<release>
<version>: Версия конкретного релиза.
<state>: Статус конкретного релиза.
<date>: Дата конкретного релиза.
<notes>: Комментарии к релизу.
Внутри элементов допустимы буквы A-Z и a-z. Остальные символы, такие как И должны задаваться через сущности (entities) (в данном случае: é).
При использовании PEAR_PackageFileManager версии 1.4.0a2 и выше для создания package.xml, файл менеджер подставит сущности для недопустимых символов автоматически.
При написании файла описания пакета вручную, вам придётся вводить сущности самим. Список наиболее часто используемых сущностей находится на: http://www.evolt.org/article/A_Simple_Character_Entity_Chart/17/21234/ Если нужных вам символов в этом списке нет, попробуйте поискать их в других http://www.oasis-open.org/docbook/xmlcharent/0.1/index.shtml .
После создания файла package.xml, его синтаксис можно проверить с помощью команды
$ pear package-validate package.xml |
Также можно использовать утилиту xmllint, которая идёт в составе libxml2.
xmllint --dtdvalid http://pear.php.net/dtd/package-1.0 --noout package.xml
Пример 16-1. Образец package.xml
|
Этот файл package.xml может послужить вам шаблоном, т.к. он уже содержит все необходимые поля. В большинстве случаев, вам нужно будет всего лишь поменять текст между тэгами, чтобы использовать пример в вашем пакете.
Пример 16-2. Вложенные директории
|
В этом примере демонстрируется очень удобный прием: когда в какой-то из ваших директорий содержатся файлы только одного типа, вы можете использовать атрибут "role" у элемента <dir> вместо того, чтобы добавлять его у каждому элементу <file>.
После прочтения данной главы вы уже можете создавать файл описания пакета. Если у вас все еще есть вопросы по этому поводу - задавайте их в листе рассылки.
Атрибут role в элементе <file> задаёт тип файла и его месторасположение при инсталляции
Таблица 16-1. Возможные значения
Значение | Директория инсталляции | |
---|---|---|
php | Исходный текст PHP | директория определяется по имени пакета |
ext | Расширение, динамически подгружаемая библиотека | директория расширений PHP или PHP_PEAR_EXTENSION_DIR, если определена |
doc | Файл документации | {PEAR_documentation_dir}/Package_Name/ |
data | Файлы данных пакета (графика, таблицы, и т.п.) | {PEAR_data_dir}/Package_Name/ |
test | Тестовые файлы пакета (unit-тесты и пр.) | {PEAR_test_dir}/Package_Name/ |
script | Системные (shell) скрипты пакета | непосредственно директория PHP или PHP_PEAR_BIN_DIR, если определена |
src and extsrc | Исходный код на C или C++ | напрямую не копируется - используется для сборки расширения |
PEAR Package Manager или менеджер пакетов позволяет задавать различные требования к системе. Вы можете определить зависимости от этих требований с помощью элемента <dep>:
Пример 16-3. package.xml с зависимостями Следующий пример показывает, как прописать зависимости от версии PHP не ниже 4.3.0, и от пакета XML_Parser 1.0.
|
Поддерживаются следующие типы зависимостей:
Таблица 16-2. значения type
Значение | Смысл | Пример | |
---|---|---|---|
pkg | Пакет | зависимость от определённого пакета | "HTML_Flexy" |
ext | Расширение | зависимость от определённого расширения PHP | "curl" |
php | PHP | зависимость от версии PHP | "4.2" |
prog | Программа | зависимость от определённой программы в системном пути. Не поддерживается инсталлятором PEAR. | "latex" |
os | Операционная система | требование конкретной ОС | "Linux" |
sapi | Server API | зависимость от определёного Server API. Не поддерживается инсталлятором PEAR. | "Apache" |
zend | Zend | требование конкретной версии Zend API. Не поддерживается инсталлятором PEAR. | "2" |
Внимание |
DTD для файла описания пакета включает и другие типы, которые пока не поддерживаются. |
Атрибут rel определяет отношение между существующей возможностью и требованием.
Таблица 16-3. значения rel
Значение | Смысл | Используется с | |
---|---|---|---|
has | has | существующая возможность должна иметь требование - атрибут version игнорируется | pkg, ext, php, prog, os, sapi, zend |
eq | equal | существующая возможность должна в точности соответствовать номеру версии | pkg, ext, php, prog, os, sapi, zend |
lt | less than | версия существующей возможности должна быть меньше указанной | pkg, ext, php, zend |
le | less than or equal | версия существующей возможности должна быть меньше или равна указанной | pkg, ext, php, zend |
gt | greater than | версия существующей возможности должна быть больше указанной | pkg, ext, php, zend |
ge | greater than or equal | версия существующей возможности должна быть больше или равна указанной | pkg, ext, php, zend |
not | conflicting dependency | зависимость конфликтует с пакетом, они не могут существовать вместе, версия игнорируется. | ext, php |
Has используется, если не определено других значений. Стоит отметить, что rel обязателен для PEAR 1.4.0 и выше.
Атрибут version определяет версию для сравнения.
Атрибут optional может быть указан в случае, когда зависимость не требуется для работы, но её присутствие расширяет функциональность пакета. Допустимые значения "yes" и "no". Если атрибут optional не указан, то зависимость является обязательной. Когда используется optional="yes", это вызовёт сообщения при инсталляции наподобие:
$ pear install <package> Optional dependencies: Package `XML_Tree' is recommended to utilize some features. Package `MDB' is recommended to utilize some features. |
Пред. | Начало | След. |
Как добавить свой код в PEAR | Уровень выше | The package definition file package.xml, version 2.0 |
HIVE: All information for read only. Please respect copyright! |