Добавить пакеты PEAR в хранилище Subversion? - PullRequest
7 голосов
/ 28 июня 2009

Я работаю над проектом, который будет использовать пакеты PEAR. Поскольку вы никогда не знаете, какая версия пакета PEAR будет установлена ​​на вашем хостинг-провайдере (и особенно потому, что мне нужно, чтобы патч был применен к одному из пакетов), я бы хотел поместить источник PEAR для моего проекта прямо SVN, поэтому другие разработчики могут сразу иметь зависимости.

Но все, что связано с PEAR, похоже, имеет абсолютные каталоги! Запуск «pear config-create. Pear.conf» для установки нового каталога PEAR даже завершается ошибкой с сообщением об ошибке:

Корневой каталог должен быть абсолютным путем

Я проверил конфигурационные файлы pear на некоторых других серверах, и они, похоже, тоже имеют абсолютные пути.

Всякий раз, когда разработчик проверяет это на своей машине или мы экспортируем все это на сервер, мы не знаем, каким будет абсолютный путь.

Есть ли способ настроить это?

Ответы [ 3 ]

3 голосов
/ 29 июня 2009

Я не смог заставить своего хостинг-провайдера установить нужные мне библиотеки PEAR. Вот как я сделал PEAR частью моего исходного дерева.

1. Создайте файл remote.conf

Создание вашего remote.conf немного отличается от описанного в руководстве. Допустим, я хочу установить PEAR в vendor/PEAR проекта. Вы бы сделали это так:

#from the root of the project
$ cd vendor ; mkdir PEAR ; cd PEAR
$ pear config-create <absolute path to project>/vendor/PEAR/ remote.conf 

2. Обновление каналов

$ pear -c remote.conf channel-update pear.php.net

3. установить PEAR

$ pear -c remote.conf install --alldeps pear

4. установить любые другие библиотеки

$ pear -c remote.conf install --alldeps <libname>

Вуаля ... Груша является частью дерева исходников.

Уловы:

  • Даже если пути в remote.conf являются абсолютными, сами библиотеки все равно будут работать. Это просто обновление, которое нигде не будет работать. Вам нужно будет обновить его по тому же пути, по которому он был создан - в приведенном выше случае, с vendor/PEAR.
  • Некоторым библиотекам не нравится находиться вне пути, поэтому вам, возможно, придется добавить vendor/PEAR к пути (у меня есть код, просто спросите, нужно ли вам.)
2 голосов
/ 02 декабря 2009

Если у вас PHP 5.3.1, используйте Pyrus, установщик PEAR2.Управляемые установки pyrus можно перемещать куда угодно.

Загрузить pyrus -

$> wget http://pear2.php.net/pyrus.phar

Создать каталог для хранения пакетов, установленных с помощью pyrus:

$> mkdir mylibs

Установочные пакеты -

$> php pyrus.phar mylibs install pear/Net_URL

Ваш установленный пакет теперь находится на mylibs/php/Net/URL.php

Обратите внимание, что мы передали каталог mylibs, чтобы указать, в какой каталог устанавливать, а также имя канала 'pear'(по умолчанию в pyrus это pear2.php.net).Для удобства файл pyrus.phar можно запустить из cli, если вы нажмете chmod + x it.

Вы можете перемещать каталог mylibs куда хотите.Даже отправьте его в свой репозиторий.

Множество документов на веб-сайте PEAR .

1 голос
/ 29 июня 2009

Я полностью уверен, что это ответит на ваш вопрос, но вы можете указать расположение хранилища PEAR в командной строке, чтобы вы могли создать локальное хранилище, используя:

pear install --force --installroot=/path/to/my/pear/ PEAR

Затем вы можете установить дополнительные пакеты, используя:

pear install --installroot=/path/to/my/pear/ SomePackage

Чтобы использовать локальное репо из вашего приложения, вы должны убедиться, что include_path указывает на локальное репо, а не на хранилище по умолчанию (глобально установленное). Поэтому вы бы хотели, чтобы это выглядело так:

include_path = ".:/path/to/my/pear/usr/share/php"

Re:

На самом деле, он хочет избежать абсолютных путей, чтобы решение можно было проверить на многих машинах, не завися от пути, на котором установлен репозиторий.

- Карлос Лима

Кажется, ты прав. В этом случае я бы посоветовал вам не проверять репозиторий PEAR в своем репозитории SVN, а использовать сценарий развертывания для установки / обновления репозитория на сервере. Просто убедитесь, что установили конкретную версию. (У вас do есть автоматическое развертывание, верно?)

...