Введение
Вернуться к: package.xml
Файл описания пакета, 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
краткая версия - pear pv package.xml).
Также можно использовать утилиту xmllint, которая идёт в составе libxml2.
xmllint --dtdvalid http://pear.php.net/dtd/package-1.0 --noout package.xml
Создание файла описания пакета
Образец package.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <package version="1.0"> <name>Money_Fast</name> <summary>Make money fast.</summary> <description> This package helps you to make money pretty fast. </description> <license>PHP License</license> <maintainers> <maintainer> <user>foo</user> <name>Joe Foo</name> <email>foo@example.com</email> <role>lead</role> </maintainer> </maintainers> <release> <version>1.0</version> <date>2002-05-27</date> <state>stable</state> <notes> This is the first release. </notes> <filelist> <dir name="/" baseinstalldir="Money"> <file role="php">Fast.php</file> </dir> </filelist> </release> </package>
Этот файл package.xml может послужить вам шаблоном, т.к. он уже содержит все необходимые поля. В большинстве случаев, вам нужно будет всего лишь поменять текст между тэгами, чтобы использовать пример в вашем пакете.
Вложенные директории
<?xml version="1.0" encoding="ISO-8859-1" ?> [...] <release> <version>1.0</version> <date>2002-07-23</date> <state>stable</state> <notes> This is the first release. </notes> <filelist> <dir name="/" baseinstalldir="Money"> <file role="php">Fast.php</file> <dir name="Calculator" role="php"> <file>Calculator.php</file> <file>Currency.php</file> <file>Stocks.php</file> </dir> <dir name="docs" role="doc"> <file>README.txt</file> <file>tutorial.txt</file> <dir name="examples" role="doc"> <file role="php">NASDAQ.php</file> <file role="php">DAX.php</file> </dir> </dir> </dir> </filelist> </release> </package>
В этом примере демонстрируется очень удобный прием: когда в какой-то из ваших директорий содержатся файлы только одного типа, вы можете использовать атрибут "role" у элемента <dir> вместо того, чтобы добавлять его у каждому элементу <file>.
После прочтения данной главы вы уже можете создавать файл описания пакета. Если у вас все еще есть вопросы по этому поводу - задавайте их в листе рассылки.
Типы файлов
Атрибут role в элементе <file> задаёт тип файла и его месторасположение при инсталляции
Значение | Директория инсталляции | |
---|---|---|
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>:
package.xml с зависимостями
Следующий пример показывает, как прописать зависимости от версии PHP не ниже 4.3.0, и от пакета XML_Parser 1.0.
<?xml version="1.0" encoding="ISO-8859-1" ?> [...] </release> <deps> <dep type="php" rel="ge" version="4.3.0" /> <dep type="pkg" rel="has" version="1.0">XML_Parser</dep> </deps> </package>
Атрибут 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
Атрибут 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
Атрибут version определяет версию для сравнения.
Атрибут optional
Атрибут 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.
Вернуться к: package.xml