Нет легкого труда повсеместно ответить на этот вопрос, поэтому все зависит от того, сколько интеллекта вы хотите использовать в своем установщике. И для некоторых людей будет невозможно сделать то, на что вы надеетесь, лучшее, что вы сможете сделать, - это дать рекомендации о том, чего не хватает. Здесь существует множество вариантов упаковки между дистрибутивами Linux, версиями PostgreSQL и различными способами установки PostgreSQL на OS X (MacPorts, homebrew и т. Д.)
Во-первых, только установки с исходным кодом будут иметь каталог contrib с исходным кодом, который позволяет создавать дополнительные модули. В пакетных сборках для Linux все бинарные файлы contrib могут быть доступны только через дополнительный пакет, который называется что-то вроде postgresql-contrib. Это единственный способ сделать дополнительные модули, поставляемые с базой данных, доступными: установить пакет, в который включены двоичные файлы. Здесь вы также можете увидеть некоторые изменения в сборках OS X.
Если вы хотите установить расширения (которые теперь официально называются PostgreSQL 9.1, а не «модулями»), используя вместо этого предоставляемые вами двоичные файлы, вам нужно знать, куда поместить получившиеся разделяемые библиотеки и соответствующий SQL файлы, которые ссылаются на них. То, что pgconfig возвращает для pkglibdir, сообщит вам, куда идут двоичные файлы, а sharedir указывает на место по умолчанию для размещения SQL. Обеспечение бинарных файлов - проигрышная игра; работа по синхронизации с каждой платформой для их создания огромна.
И вот некоторые дополнительные сложности, с которыми вы столкнетесь в этой области, если вы захотите отправить исходный код и попытаться собрать вещи самостоятельно:
PostgreSQL 9.1 теперь устанавливает их, используя CREATE EXTENSION
механизм, так что вам нужно обрабатывать как метод до 9.1, так и
новый введен там.
Не все установки PostgreSQL будут иметь
pg_config. Это считается инструментом разработки, и какой пакет
поставляется в комплекте (и является ли этот пакет обязательным или нет)
меняется. Debian / Ubuntu поместили его в необязательный liqpq-dev, RedHat
производные RPM имеют его в postgresql-devel или
postgresql- [версия] -devel.
Поскольку pg_config необходим для
компилируя новые расширения 9.1, упаковщики начали
пересмотреть, куда идет pg_config; это считается намного больше
важно сейчас, чем раньше. Пакеты 9.1 или новее могут изменить пакет, в котором он содержится. Это не меняет того, что вы можете и не можете сделать. Это просто влияет на то, какой совет вы могли бы дать для исправления ситуаций, с которыми ваша программа не справляется.
Я описываю стандарт
Упаковка Linux здесь, когда я говорю об этой ОС. Есть также установщики для Linux и
OS X от EnterpriseDB, что они называют «установщиками в один клик».
Они вообще используют другой стандарт для того, что люди делают и не устанавливаются в этой области. Я не слежу за коммерческой упаковкой, чтобы узнать, что же на самом деле отличается, но это еще одна переменная, с которой вы можете столкнуться.
Последние версии OS X могут
у меня есть некоторые системные компоненты PostgreSQL. Без понятия
пока как этот дескриптор расширения хотя.
По сути, все три версии / упаковщика / платформы могут варьироваться в зависимости от того, как это будет работать, и идея, что вы найдете любое решение, которое обрабатывает даже большинство этих перестановок, является оптимистичной. Известно, что установка расширений в PostgreSQL затруднена, и это побудило все изменения 9.1 превратить его в простое CREATE EXTENSION для многих из них. Но пока эти изменения только добавили еще один набор вариаций в миксы, фактически усложнив их в течение переходного периода. Пройдет некоторое время, пока поддерживаются версии PostgreSQL, которые являются единственными популярными.