Сборка Postgre. SQL для 1. C на Gentoo / Песочница / Хабрахабр. Возникла необходимость поднять на Gentoo Postgre. SQL- сервер для 1.
- Linux Ubuntu 64 + 1C + PostgreSQL установка по шагам. Опубликовано dedkoko - чт, 06/23/2016 - 20:57. Подготовка. Поскольку при установке сервера 1с и postgresql на линукс-сервер mkdir /usr/local/src/ postgresql -8.4. 1/ patches.
- Патч содержит дополнительные модули расширения и необходимые. Варианты установки PostgreSQL для 1С :Предприятия. ○.
С- ки. Как всем известно одинэсовцы являются знаменитыми костылестроителями и в данном случае СУБД Postgre. SQL не обошли стороной, тем что вмешиваются в ее исходный код. Почему Gentoo? Потому что данный дистр можно заточить для решения узко определенной задачи, со всеми преимуществами оптимизации USE- флагов, в отличие от бинарных дистров, в которые много вшивается «про запас», а сборка собственных пакетов означает отказ от пакетных менеджеров (может и не так, не знаток этого вопроса), что сильно ухудшает поддержание инсталляции в актуальном состоянии.
На данной странице представлены для ознакомления собранные компанией Postgres Professional установочные пакеты новейшей версии. C помощью утилит locale(Linux) и systeminfo(Windows) можно узнать значение локали, установленное по умолчанию.. . Установка связки PostgreSQL 9.2.4 и 1С 8.3 на Ubuntu Server 14.04 X64. patch -d. -p1 <postgresql-1c-9.2.patch). Или скачиваемый с . Связка сервера 1С :Предприятие и PostgreSQL вторая по на одном из них установлен сервер 1С :Предприятие версии 8.3, на другом. файла postgresql.conf - важно посмотреть этот патч и увидеть что сами.
Ну и к тому же, на то он и гентушник раз любит сам готовить. Поиски в интернете не принесли желаемого результата, а именно не нашлось ebuild- а, для такой задачи, хотя упоминания имеются, на неком ростовском сервере, то некто выкладывал на форуме http: //linuxforum. А приемлемый вариант — без левых зависимостей, установка в директории стандартные для этой системы и чтобы пакетный менеджер «знал» о нашей инсталляции и считал ее родной, учитывая make. USE- флаги. Как очевидно нужен именно ebuild.
Имеется хорошая компания http: //etersoft. У них берем патчи адаптирующие Postgre. SQL для 1. С- ки — postgresql- 8. С- цев на сайте патчи только для версии 8. Кроме того, етерсофтовцы опять таки патчат некоторые наработки одинэсевцев, исправляя их баги. Но как показала попытка наложения этих патчей и етерсофтовцы с ними немного намудрили.
Пришлось брать напильник, молоток, зубило, кувалду и прочую атрибутику системного администратора. Итак, наш квест будет заключаться в следующем: получение патчей с сайта etersoft.
Использование СУБД PostgreSQL с программами 1С, особенности Установка полного комплекта Linux: PostgreSQL + 1С под Ubunta.
Где мы находимся. В качестве версии СУБД будем использовать версию 8. Ранее установленная ОС Gentoo x. G 1. 33. 3, 1. Tb] (самопальное ядро Linux localhost 2. SMP Sun Dec 2. 6 2.
YEKT 2. 01. 0 x. 86_6. Intel® Core(TM) i. CPU 5. 30 @ 2. 9. GHz Genuine. Intel GNU/Linux), которая содержит очень много лишнего для боевого сервера узко- направленного значения, но это нам не помешает, а скорее будет проще не отвлекаться на шлифовку ядра, если таковое требуется, о чем мне не ведомо. Что мы имеем. Для начала обновим порты, это уж кто как предпочитает, я делаю так: # eix- sync. Посмотрим что нам предлагают в портежах: eix postgresql- server[D] dev- db/postgresql- server.
Available versions: (8. Как видно последняя размаскированная (а значит стабильная) версия postgresql- а — 8. Качаем патчи. Как было сказано качаем патчи Postgre.
SQL (одним архивом с исходниками) отсюда postgresql- 8. Открываем архив кому как угодно, я пользуюсь Gnome — у него имеется менеджер архивов и вытаскиваем оттуда следующие файлы: 1c_FULL_8. Postgre. SQL все же хочет файл libpq, так что ребята недостарались)postgres_datalen. Postgre. SQL (initdb)postgresql- 1c- 8. Makefile для сборки модулей написанных 1с- цами — fulleq, fasttrun, mchar, плюс рихтует конфиг для Postgre.
SQLpostgresql. conf. Postgre. SQL будут ставить полные нули которые не осилят чтения документации?)postgresql- no_transaction_blocks. Postgre. SQL с /var/lib/postgresql, на /var/lib/pgsqltimestamp. MSSQL, устанавливает в качестве даты значение 1. Сохраним патчи сюда mkdir - p /tmp/postgresql/patches.
Локальный оверлей. Для интеграции в существующее дерево портежей плодов наших манипуляций сделаем локальный оверлей (почитать можно здесь http: //ru. Portage_Overlay): echo 'PORTDIR_OVERLAY="/usr/local/portage"' > > /etc/make. У кого будут ругания на оверлей, почитать man make. По аналогии с родной структурой дерева портежей создаем структуру директорий для локального: mkdir - p /usr/local/portage/dev- db/postgresql- server. Копируем исходный ebuild, который будем патчить: cp /usr/portage/dev- db/postgresql- server/postgresql- server- 8. Стоит обратить внимание что исходный ebuild имеет версию обновления r.
Также при сборке Postgre. SQL понадобятся патчи подготовленные командой Gentoo, вероятно как- то можно использовать их из системного дерева портежей, но пока не знаю как, так что делаем: cp - R /usr/portage/dev- db/postgresql- server/files /usr/local/portage/dev- db/postgresql- server. Хотя реально оттуда требуется всего лишь два файла: /usr/portage/dev- db/postgresql- server/files/postgresql- 8.
Приготовление исходников. Использовать исходники Postgre. SQL от команды etersoft'а не будем (как- то в душу запали только их патчи), а возьмем те что тянет emerge из интернета для оригинального Postgre. SQL. Загружаем исходники: emerge - fv dev- db/postgresql- server. Сделаем рабочую директорию и распакуем туда сырцы: mkdir - p /tmp/postgresql/orig & & cd /tmp/postgresql/origtar xjf /usr/portage/distfiles/postgresql- 8.
Идем туда и накладываем гентушные патчи: cd /tmp/postgresql/orig/postgresql- 8. E < /usr/local/portage/dev- db/postgresql- server/files/postgresql- 8. E < /usr/local/portage/dev- db/postgresql- server/files/postgresql- 8. С ключами у них для одного патча применяем - p.
Хотя можно применять просто команду: patch - p. X < , но анализ лог- файлов показал, что epatch использует такую хитрую комбинацию ключей. Теперь считаем что у нас получились эталонные исходники, на которые будет ebuild накладывать патчи для 1с- ки при запуске emerge. Подготовим площадку для дальнейших экзекуций: mkdir - p /tmp/postgresql/patchcp - R /tmp/postgresql/orig/postgresql- 8.
Теперь нужно внимательно изучить файл postgresql- 8. X, с которым они применяются: # Patch. Patch. 4: postgresql- test. C program.# %patch.
Patch. 6: postgresql- perl- rpath. Patch. 7: 1c_FULL_8. Patch. 8: postgresql- 1c- 8. Patch. 9: applock- 1c- 8.
Patch. 10: timestamp. Patch. 11: postgresql. Patch. 12: pg_hba. Patch. 13: postgres_datalen. Etersoft's fix for 1c patches# Patch.
Etersoft rename libpq%patch. Patch. 51: postgresql- tmp_table_cleanup. Patch. 52: postgres- no_transaction_blocks. А как же в Gentoo? Последив как работает команда ebuild при сборке пакетов (немного есть здесь http: //www. Распаковка исходников производится в каталог: /var/tmp/portage/dev- db/postgresql- server/work/postgresql- 8. Вообщем как удалось расковырять патчи ложатся в следующем порядке, хотя для некоторых он не важен (не спешим патчевать, а читаем дальше): cd /tmp/patch/postgresql# сделаем симлинкln - s postgresql- 8.
FULL_8. 3- 0. 1. 9. Как видно, были пропущены файлы prm- pgsql. Также patch споткнется на файле postgresql- 1c- 8. Makefile, на предмет добавления в собираемые модули fulleq, mchar и fasttrun — т. Поэтому данный патч можно не применять, а дописать модули вручную (тру- гении смогут и патч отрихтовать). Также этот патч по мелочи шлифует pg_hba.
И чтобы было все как с остальными, то содержимое файла postgresql- 1c- 8. Makefile 2. 01. 1- 0. Makefile 2. 01. 1- 0. WANTED_DIRS += sslinfo. Также файл applock- 1c- 8. Исследование содержимого показало, что пути к файлам, предназначенные для изменений начинаются следующим образом, например первая строка того же файла содержит: diff - c - r - N .postgresql- 8.
ОС Windows, однако дальнейшие слэши все же правильные, к тому же тут указывается версия Postgre. SQL 8. 4. 0, что есть не страшно, я делал так: cd /tmp/postgresql/patchescat applock- 1c- 8. И делаем симлинки: cd /tmp/postgresql/patchln - s postgresql- 8. После манипуляций с патчами можно еще раз прогнать «патчевание» (или все сначала, предварительно сделав rm - rf /tmp/postgresql/patch/postgresql- 8.
R /tmp/postgresql/orig/postgresql- 8. В итоге в директории /tmp/postgresql/ имеем следующую структуру: /tmp/postgresql/ +- orig (оригинальный Postgre. SQL + Gentoo- патчи) +- postgresql- 8. С/etersoft) +- postgresql +- postgresql- 8. Наложение патчей от 1c/etersoft. Собственно процедура наложения выглядит таким образом (после всех манипуляций, исправлений и рихтований): cd /tmp/postgresql/patch/postgrespatch - p.
FULL_8. 3- 0. 1. 9. Данный патч немного глюкавит, но как очевидно, # он делает то что будет переделано - тюнинг конфиг- файла# patch - p. Получение итогового патча. Возня с исходниками практически закончена, осталось только сделать свой патч и прописать все это дело в ebuild- файле: cd /tmp/postgresql/patch/ln - s /tmp/postgresql/orig/postgresql- 8. N ./postgresql- 8. Копируем в директорию к остальным патчамcp /tmp/portage/patch/postgresql- 8.
Свой патч мы делаем, чтобы получить разницу между исходным деревом Postgre. SQL и патченным, чтобы эта разница (патч) уместилась в одном файле — так менее геморно будет с ebuild- ом возиться. Шлифуем ebuild- файл. Открываем в любимом редакторе ранее сделанную копию ebuild- файла: mcedit /usr/local/portage/dev- db/postgresql- server/postgresql- server- 8. В строке 3 можно поменять (не уверен, что не нужно хотя работает и без правки): # $Header: /var/cvsroot/gentoo- x. Exp $— ревизию ebuild- файла. Далее в строке можно поменять DESCRIPTION="Postgre.
SQL server with patchset from 1. C company. Prepared by ME"Менять обязательно: IUSE="1c.
IUSE_LINGUAS}"— добавили ключик «1c. Ищем функцию src_prepare() и после слов epatch ..- common. FILESDIR}/postgresql- ${SLOT}- 1c.
Создание цифровой подписи для ebuild- файла cd /usr/local/portage/dev- db/postgresql- serverebuild postgresql- server- 8. Если все в порядке, то получим, если нет - то читаем вывод и в маны и гугл> > > Creating Manifest for /usr/local/portage/dev- db/postgresql- server. Подготовка к установке.
Небольшой тюнинг: # Архитектура нашего ПК (в данный момент уже является стабильным для x. Маскируем версии старше нашей, чтобы по- умолчанию ставилась наша echo '> dev- db/postgresql- server- 8.
Указываем USE- флаг ради которого все затевалосьecho '=dev- db/postgresql- server- 8. Установка Postgre.
SQL с патчами от 1. C — gentoo- way. Перед тем как выполнять установку проверим, что нам скажет emerge: emerge - pv postgresql- server[ebuild R ] dev- db/postgresql- server- 8. USE="'''1c. 8''' nls perl python - doc - pg_legacytimestamp (- selinux) - tcl - uuid - xml" LINGUAS="ru - af - cs - de - es - fa - fr - hr - hu - it - ko - nb - pl - pt_BR - ro - sk - sl - sv - tr - zh_CN - zh_TW" 0 k.