Скажу сразу: у меня создание PEAR-канала и публикация пакета заняли около часа. Но, если отбросить все тупиковые способы, сэкономить на гуглении, и не использовать сомнительные утилиты, то вполне возможно уложиться в 10 минут.
У PHP программистов больше поводов не любить PEAR, чем любить. Действительно, создается впечатление, что за последние 5 лет ни библиотеки в репозиториях, ни сам инсталлятор, практически не изменились.
Тем не менее, до сих пор, установить PHP-бибиотеку проще всего посредством PEAR. Это, конечно, при условии, что она будет одинаково востребована для всей системы. Например, такие продукты, как PHPUnit и Docblox устанавливаются именно через PEAR, и крайне неудобно устанавливать их другими способами: например, клонированием GitHub репозитория.
Скорее всего у вас есть библиотека, которой вы бы хотели поделиться с сообществом. Ну или когда-то появится. Это не важно. Важно то, что рано или поздно вам захочется сделать так, чтобы ваш продукт можно было установить всего в 2 команды…
Такое вот вступление. Дальше будут чисто практические рекомендации.
Одна из них: документация с сайта pear.php.net может не только помочь, но и навредить. Разбираться во всех этих PEAR, PEAR2, Pyrus, PEAR_PackageFileManager2, а также в структуре package.xml, равносильно изучению служебных инструкций какой-нибудь атомной станции. Вот увидите, мы сможем обойтись без всего этого. Кроме того, мы ограничены во времени, а на изучение лишних деталей 10 минут нам точно не хватит. И часа тоже.
Мы будем прагматиками, рационалистами, ну и просто лентяями.
Например, нам лень создавать свой PEAR-сервер где-то у себя на хостинге. Да и зачем? Лучше приспособить под это дело GitHub.
Для начала нам понадобится Pirum. Это легковесный менеджер PEAR-каналов.
Устанавливается он, как ни странно, тоже через PEAR:
Сам сервер, настроенный под GitHub можно взять тут: github.com/saucelabs/pear
Следуем инструкции:
Создаем репозиторий pear на гитхабе.
Создаем локальный репозиторий:
Создаем конфигурационный файл pirum.xml:
Выполняем команды
Заливаем наш репозиторий на гитхаб, под видом гитхаб страниц:
Напомню, гитхаб позволяет вам захостить свой статический сайт, для него и используется специальная ветка: gh-pages.
После того как мы залили репозиторий на сервер, по адресу https://[username].github.com/pear уже будет находится новый канал.
Там, кстати и инструкции его использованию. Жаль только поставить оттуда пока нечего.
Исправим этот недочет. Нам нужен правильно созданный pear-пакет для нашей библиотеки.
Создать его поможет утилита Pearfarm. Это не только утилита, а ещё и сайт с хостингом pear-пакетов, но к сожалению, особой популярностью он не пользуется.
По сути, нам и не нужно было бы проходить вышеизложенные шаги, если бы было больше уверенности в Pearfarm.
Впрочем, сама утилита работает и существенно упрощает жизнь при создании пакета с нуля.
Устаналиваеем её… Правильно, тоже через PEAR:
В каталоге с вашей библиотекой выполните команду:
Она создает файл pearfarm.spec, назовем его метапакетом. По сути это PHP-файл, который в удобной форме определяет настройки для создания пакета.
Вот он:
Вам остается пройтись по всем полям и заполнить их. Обратите внимание как легко заполняется лицензия! По умолчанию в пакет попадут все файлы из гит-репозитория, можете убрать некоторые из них с помощью метода addExcludeFilesRegex().
Больше информации по конфигурции тут: pearfarm.org/help/spec
После заполнения всех полей подключимся к нашему pear-каналу:
И создадим пакет.
И если всё прошло хорошо, на выходе вы получите файл package.xml (конфигурация пакета для PEAR) и свежий билд вашей библиотеки в архиве.
Добавляем билд на сервер:
Заливаем обновленный сервер на гитхаб:
Готово! Теперь вы можете с легкостью публиковать свои open-source библиотеки и больше не прятать их в недрах локальных веб-серверов.
А чтобы убедиться в том, что всё работает, давайте зайдем на:
http://[username].github.com/pear/
И увидим, что наш пакет уже там. Все команды для установки вашей библиотеки тоже там указаны.
Создавайте полезные библиотеки, публикуйте их, пишите о них на Хабре.
Спасибо за внимание.
Также отмечу, что:
— На винде всё работает.
— Не стоит использовать верхний регистр в названии сервера каналов. PEAR с ними не дружит.
У PHP программистов больше поводов не любить PEAR, чем любить. Действительно, создается впечатление, что за последние 5 лет ни библиотеки в репозиториях, ни сам инсталлятор, практически не изменились.
Тем не менее, до сих пор, установить PHP-бибиотеку проще всего посредством PEAR. Это, конечно, при условии, что она будет одинаково востребована для всей системы. Например, такие продукты, как PHPUnit и Docblox устанавливаются именно через PEAR, и крайне неудобно устанавливать их другими способами: например, клонированием GitHub репозитория.
Скорее всего у вас есть библиотека, которой вы бы хотели поделиться с сообществом. Ну или когда-то появится. Это не важно. Важно то, что рано или поздно вам захочется сделать так, чтобы ваш продукт можно было установить всего в 2 команды…
Такое вот вступление. Дальше будут чисто практические рекомендации.
Одна из них: документация с сайта pear.php.net может не только помочь, но и навредить. Разбираться во всех этих PEAR, PEAR2, Pyrus, PEAR_PackageFileManager2, а также в структуре package.xml, равносильно изучению служебных инструкций какой-нибудь атомной станции. Вот увидите, мы сможем обойтись без всего этого. Кроме того, мы ограничены во времени, а на изучение лишних деталей 10 минут нам точно не хватит. И часа тоже.
Мы будем прагматиками, рационалистами, ну и просто лентяями.
Например, нам лень создавать свой PEAR-сервер где-то у себя на хостинге. Да и зачем? Лучше приспособить под это дело GitHub.
Для начала нам понадобится Pirum. Это легковесный менеджер PEAR-каналов.
Устанавливается он, как ни странно, тоже через PEAR:
$ pear channel-discover pear.pirum-project.org
$ pear install pirum/Pirum
Сам сервер, настроенный под GitHub можно взять тут: github.com/saucelabs/pear
Следуем инструкции:
Создаем репозиторий pear на гитхабе.
Создаем локальный репозиторий:
$ mkdir pear
$ cd pear
$ git init
$ git remote add origin git@github.com:[username]/pear.git
Создаем конфигурационный файл pirum.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<server>
<name>[username].github.com/pear</name>
<summary>[channel name]</summary>
<alias>[shortname]</alias>
<url>http://[username].github.com/pear</url>
</server>
Выполняем команды
$ pirum build .
$ git add .
$ git commit -m "Initial server build"
Заливаем наш репозиторий на гитхаб, под видом гитхаб страниц:
$ git branch -m master gh-pages
$ git push origin gh-pages
Напомню, гитхаб позволяет вам захостить свой статический сайт, для него и используется специальная ветка: gh-pages.
После того как мы залили репозиторий на сервер, по адресу https://[username].github.com/pear уже будет находится новый канал.
Там, кстати и инструкции его использованию. Жаль только поставить оттуда пока нечего.
Исправим этот недочет. Нам нужен правильно созданный pear-пакет для нашей библиотеки.
Создать его поможет утилита Pearfarm. Это не только утилита, а ещё и сайт с хостингом pear-пакетов, но к сожалению, особой популярностью он не пользуется.
По сути, нам и не нужно было бы проходить вышеизложенные шаги, если бы было больше уверенности в Pearfarm.
Впрочем, сама утилита работает и существенно упрощает жизнь при создании пакета с нуля.
Устаналиваеем её… Правильно, тоже через PEAR:
$ pear install pearfarm.pearfarm.org/pearfarm
В каталоге с вашей библиотекой выполните команду:
$ pearfarm init
Она создает файл pearfarm.spec, назовем его метапакетом. По сути это PHP-файл, который в удобной форме определяет настройки для создания пакета.
Вот он:
<?php
$spec = Pearfarm_PackageSpec::create(array(Pearfarm_PackageSpec::OPT_BASEDIR => dirname(__FILE__)))
->setName('[dirname]')
->setChannel('TODO: Release channel here')
->setSummary('TODO: One-line summary of your PEAR package')
->setDescription('TODO: Longer description of your PEAR package')
->setReleaseVersion('0.0.1')
->setReleaseStability('alpha')
->setApiVersion('0.0.1')
->setApiStability('alpha')
->setLicense(Pearfarm_PackageSpec::LICENSE_MIT)
->setNotes('Initial release.')
->addMaintainer('lead', 'TODO: Your name here', 'TODO: Your username here', 'TODO: Your email here')
->addGitFiles()
->addExecutable('[dirname]')
;
Вам остается пройтись по всем полям и заполнить их. Обратите внимание как легко заполняется лицензия! По умолчанию в пакет попадут все файлы из гит-репозитория, можете убрать некоторые из них с помощью метода addExcludeFilesRegex().
Больше информации по конфигурции тут: pearfarm.org/help/spec
После заполнения всех полей подключимся к нашему pear-каналу:
$ pear channel-discover [username].github.com/pear
И создадим пакет.
$ pearfarm build
И если всё прошло хорошо, на выходе вы получите файл package.xml (конфигурация пакета для PEAR) и свежий билд вашей библиотеки в архиве.
Добавляем билд на сервер:
$ pirum add [путь-к-нашему-pear-репозиторию] [путь-к-билду]
Заливаем обновленный сервер на гитхаб:
$ git add .
$ git commit -m "first package added"
$ git push origin gh-pages
Готово! Теперь вы можете с легкостью публиковать свои open-source библиотеки и больше не прятать их в недрах локальных веб-серверов.
А чтобы убедиться в том, что всё работает, давайте зайдем на:
http://[username].github.com/pear/
И увидим, что наш пакет уже там. Все команды для установки вашей библиотеки тоже там указаны.
Создавайте полезные библиотеки, публикуйте их, пишите о них на Хабре.
Спасибо за внимание.
Также отмечу, что:
— На винде всё работает.
— Не стоит использовать верхний регистр в названии сервера каналов. PEAR с ними не дружит.