Linux Calculate Scratch Server 14.16.2 + 1C+ PostgreSQL Вторая статья (первая часть).

Автор: Исаков Азиз Ильбекович. 26.09.2015

Из цикла статей: Linux (Calculate Scratch Server) +1С + PostgreSQL вторая статья, первая часть:


Установка сервера 1С платформа 8.3 (версия 8.3.6.2299) + PostgresSQL 9.2.4 на платформу операционной системы Calculate-Linux с использованием «hasp» ключа.

Первая часть, устанавливаем сервер.


ПРЕДИСЛОВИЕ.

Хочу сразу высказать благодарность за созданный «оверелей» «daks» Дмитрию Фоменко (Dmitry 'daks' Fomenko) и Артёму Власову (оверлей «Yuego») и особая благодарность Жукоцкому Даниле за помощь. В этих «оверелеях» содержится «ebuild-ы» для установки 1С платформы, но сожалению они обновляются не оперативно, но в этой статье мы исправим эту проблему локально.


Начало.


Часть первая. Создание своего локального оверлея.


После загрузки системы, он нам предлагает запустить ssh. Я воспользуюсь этим предложением, так как работать не удобно в этом окне. Я запущу ssh и после узнаю какой ip адрес получила виртуальная машина. После этого переду в другой терминал, например - PuTTY: Telnet/SSH Клиент


Теперь делаем следующие команды в терминале, делаем от root:


Сперва мы создадим собственный локальный оверлей, он нам понадобится для приведения «ebuild-а» нужное текущие состояние 1С платформы. На данный момент текущая платформа 1С версия 8.8.3.6.2299, как я и писал раньше в оверлеи «daks» находится последняя версия 1C 8.3.6.1188 а оверлеи «Yuego» версия 1C 8.3.6.2000, а мы например хотим версию 8.8.3.6.2299. Для этого мы и создаем свой локальный оверлей. Дальше я описываю как это сделать локально. Взято тут:


http://www.calculate-linux.ru/boards/40/topics/23668

Как создать собственный оверлей, в директории /var/calculate/portage


1 -- Создаем директорию для оверлея

# mkdir -pv /var/calculate/portage/profiles


2 -- Называем этот оверлей

# echo local >/var/calculate/portage/profiles/repo_name


3 -- Регистрируем оверлей в системе портежей

# echo -e '\nPORTDIR_OVERLAY="${PORTDIR_OVERLAY} /var/calculate/portage"' >>/etc/portage/make.conf/custom


Дальше делаем так.

# mkdir -p /var/calculate/portage/metadata/


# echo "masters = gentoo" >> /var/calculate/portage/metadata/layout.conf


Иначе portage ругается:

!!! Repository 'local' is missing masters attribute in '/var/calculate/portage/metadata/layout.conf'

!!! Set 'masters = gentoo' in this file for future compatibility


4 -- Создаем директории для пакетов

# mkdir /var/calculate/portage/app-office


Теперь подключим оверлей «daks».

# emerge -av dev-vcs/mercurial


# layman -a daks


Дальше копируем туда все нужные каталоги из оверлея «daks»

# cp -vR /var/lib/layman/daks/app-office/* /var/calculate/portage/app-office/


Все сделали, давайте теперь скопируем в каталог /var/calculate/portage/ следующий «ebuild» app-text/ttf2pt1

# mkdir /var/calculate/portage/app-text/


# cp -vR /usr/portage/app-text/ttf2pt1/ /var/calculate/portage/app-text/

зайдем в каталог /var/calculate/portage/app-text/ и удалим от туда «ebuild» ttf2pt1-3.4.4.ebuild


Зачем нам ttf2pt1-3.4.4-r1.ebuild? А и за ошибки его сборки, вот эта ошибка:

emake failed

* ERROR: app-text/ttf2pt1-3.4.4-r1::gentoo failed (install phase):

* (no error message)

Ну и соответственно будем его патчить — как советует и дает нам патч «Dmitry 'daks' Fomenko» https://bugs.gentoo.org/show_bug.cgi?id=514794.

Теперь переходим следующие части работы.


Часть вторая. Закачиваем нужные пакеты программ.


Делаем от «user-а».


Первым делом скачиваем сайта 1С всё программное обеспечение связанное с установкой «RPM» в Linux. Ссылка на сайт:

https://releases.1c.ru/total


Далее список пакетов что нужно скачать для платформа 1С 8.8.3.6.2299.

1. client.rpm32.tar.gz

2. rpm.tar.gz

3. thin.client.rpm32.tar.gz

4. client.rpm64.tar.gz

2. rpm.tar64.gz

3. thin.client.rpm64.tar.gz


Не спрашивайте почему у меня (не я писал «ebuild», я его только модернизирую). Все вопросы - «daks» Дмитрию Фоменко (Dmitry 'daks' Fomenko) и Артёму Власову (оверлей «Yuego»).

Делаем от root.

Распаковываем эти все пакеты в каталог:

/var/calculate/remote/distfiles/


Пример:

# tar xvfz /home/ВАШ ЮЗЕР/download/client.rpm32.tar.gz -C /var/calculate/remote/distfiles/


Часть третия. Правим «ebuild-ы» в директории app-office.


Делаем от root.


Теперь мы займется правкой «ebuild-od», не чего сложного там нет. Заходим в папку с помощью МС (Midnight Commander) - /var/calculate/portage/app-office/ и первая наша папка /1C_Enterprise-client удаляем все от туда (это обязательно, если это не сделать вам придется все версии скачать 1С платформы — которые указаны «ebuild-ах» ) «ebuild-ы» кроме одного 1C_Enterprise-client-8.3.5.1068.ebuild. Вот мы его и переименуем на 1C_Enterprise-client-8.3.5.1146.ebuild.

Пример:

# mv -v /var/calculate/portage/app-office/1C_Enterprise-client/1C_Enterprise-client-8.3.5.1068.ebuild /var/calculate/portage/app-office/1C_Enterprise-client/1C_Enterprise-client-8.3.5.1146.ebuild

Ну так для всех остальных директорий:

1. 1C_Enterprise-client

2. 1C_Enterprise-common

3. 1C_Enterprise-crs

4. 1C_Enterprise-server

5. 1C_Enterprise-ws

Список «ebuild-od» в которых надо заменить версию:

1. 1C_Enterprise-client-8.3.6.1188.ebuild

2. 1C_Enterprise-common-8.3.6.1188.ebuild

3. 1C_Enterprise-crs-8.3.6.1188.ebuild

4. 1C_Enterprise-server-8.3.6.1168.ebuild

5. 1C_Enterprise-ws-8.3.6.1168.ebuild

После этого мы создадим Manifest для последующей установки.

# ebuild /var/calculate/portage/app-office/1C_Enterprise-client/1C_Enterprise-client-8.3.6.2299.ebuild digest


Все остальные 4 по списку «ebuild-а» сделать так же как примере.


Часть четвертая. Решаем проблему пакета ttf2pt1-3.4.4-r1.ebuild.

Делаем от root.

Делаем патч от Dmitry 'daks' Fomenko. Взять тут

https://bugs.gentoo.org/show_bug.cgi?id=514794

а если кто не увидел то тут :)

https://bugs.gentoo.org/attachment.cgi?id=380086&action=edit

mcedit /var/calculate/portage/app-text/ttf2pt1/files/ttf2pt1-3.4.4-freetype2.patch


либо другим любым редактором

Вставляем туда патч:

diff -Naur ttf2pt1-3.4.4-orig/ft.c ttf2pt1-3.4.4/ft.c

--- ttf2pt1-3.4.4.orig/ft.c 2014-07-02 14:19:32.000000000 -0700

+++ ttf2pt1-3.4.4/ft.c 2014-07-02 14:20:22.794538869 -0700

@@ -13,11 +13,11 @@

#include <ctype.h>

#include <sys/types.h>

#include <ft2build.h>

-#include <freetype/freetype.h>

-#include <freetype/ftglyph.h>

-#include <freetype/ftsnames.h>

-#include <freetype/ttnameid.h>

-#include <freetype/ftoutln.h>

+#include <freetype2/freetype.h>

+#include <freetype2/ftglyph.h>

+#include <freetype2/ftsnames.h>

+#include <freetype2/ttnameid.h>

+#include <freetype2/ftoutln.h>

#include "pt1.h"

#include "global.h"


Сохраняем фаил.

Теперь переименовываем "ebuild"

# mv -v /var/calculate/portage/app-text/ttf2pt1/ttf2pt1-3.4.4-r1.ebuild /var/calculate/portage/app-text/ttf2pt1/ttf2pt1-3.4.4-r9.ebuild



и начинаем править ttf2pt1-3.4.4-r9.ebuild.

mcedit /var/calculate/portage/app-text/ttf2pt1/ttf2pt1-3.4.4-r9.ebuild

находим вот эти строки.

src_prepare() {

epatch "${FILESDIR}"/${P}-Makefile.patch

epatch "${FILESDIR}"/${P}-LDFLAGS.patch

epatch "${FILESDIR}"/${PN}-3.4.0-man-pages.diff

epatch "${FILESDIR}"/${P}-freetype.patch


sed -i -e "/^CC=/ { s:gcc:$(tc-getCC): }" Makefile

sed -i -e "/^CFLAGS_SYS=/ { s:-O.*$:${CFLAGS}: }" Makefile

sed -i -e "/^LIBS_FT=/ { s:-L/usr/lib:-L/usr/$(get_libdir): }" Makefile

sed -i -e "/^LIBXDIR =/ { s:libexec:$(get_libdir): }" Makefile

}


вставляем свой патч сюда

epatch "${FILESDIR}"/${PN}-3.4.4-freetype2.patch


получаем вот такой результат:

src_prepare() {

epatch "${FILESDIR}"/${P}-Makefile.patch

epatch "${FILESDIR}"/${P}-LDFLAGS.patch

epatch "${FILESDIR}"/${PN}-3.4.0-man-pages.diff

epatch "${FILESDIR}"/${P}-freetype.patch

epatch "${FILESDIR}"/${PN}-3.4.4-freetype2.patch # patch Dmitry 'daks' Fomenko


sed -i -e "/^CC=/ { s:gcc:$(tc-getCC): }" Makefile

sed -i -e "/^CFLAGS_SYS=/ { s:-O.*$:${CFLAGS}: }" Makefile

sed -i -e "/^LIBS_FT=/ { s:-L/usr/lib:-L/usr/$(get_libdir): }" Makefile

sed -i -e "/^LIBXDIR =/ { s:libexec:$(get_libdir): }" Makefile

}


Теперь нам надо создать свой манифест

ebuild /var/calculate/portage/app-text/ttf2pt1/ttf2pt1-3.4.4-r9.ebuild digest


Часть пятая. Предварительная подготовка к установке 1С сервера.


Делаем от root.


Сперва мы займеся следующим действиями:


1. Создаём файл в следующей директории /etc/portage/package.keywords.

# touch /etc/portage/package.keywords/1С

Пропишем следующие строчки файле /etc/portage/package.keywords/1C:

Пример:

# echo -e 'media-gfx/imagemagick **' >>/etc/portage/package.keywords/1С

# echo -e 'app-office/1C_Enterprise-client **' >>/etc/portage/package.keywords/1С

# echo -e 'app-office/1C_Enterprise-server **' >>/etc/portage/package.keywords/1С

# echo -e 'app-office/1C_Enterprise-common **' >>/etc/portage/package.keywords/1С

# echo -e 'dev-db/postgresql-server ~amd64' >>/etc/portage/package.keywords/1С

# echo -e 'sys-apps/hasp ~amd64' >>/etc/portage/package.keywords/1С

# echo -e 'app-office/1C_Enterprise-ws **' >>/etc/portage/package.keywords/1С

# echo -e 'app-office/1C_Enterprise-crs **' >>/etc/portage/package.keywords/1С

# echo -e 'app-admin/eselect-postgresql **' >>/etc/portage/package.keywords/1С

Вот весь список:

media-gfx/imagemagick **

app-office/1C_Enterprise-client **

app-office/1C_Enterprise-server **

app-office/1C_Enterprise-common **

dev-db/postgresql-server ~amd64

sys-apps/hasp ~amd64

app-office/1C_Enterprise-ws **

app-office/1C_Enterprise-crs **

app-admin/eselect-postgresql **

Это мы разблокировали установку пакетов с «нестабильной» ветки (более подробно читайте документацию по OS Gentoo Linux), так как у нас дистрибутив со «стабильной» ветки, установку на него программного обеспечения с «нестабильной» ветки, возможно только таким образом.


2.Создаём файл в следующей директории /etc/portage/package.mask

# touch /etc/portage/package.mask/1С

Пропишем следующие строчки файле /etc/portage/package.mask/1C:

Пример:

# echo -e 'dev-db/postgresql-base::gentoo' >>/etc/portage/package.mask/1С

Вот весь список:

dev-db/postgresql-base::gentoo

dev-db/postgresql-docs::gentoo

dev-db/postgresql-server::gentoo

Мы таким образом, блокируем установку СУБД PostgreSQL с основной ветки «gentoo», так как для установки 1С сервера нам нужен про патченый СУБД PostgreSQL (патч от 1С).


3.Создаём файл в следующей директории /etc/portage/package.unmask

# touch /etc/portage/package.unmask/1С

Пропишем следующие строчки файле /etc/portage/package.unmask/1C:

Пример:

# echo -e '=dev-db/postgresql-server-9.2.4-r2::daks' >>/etc/portage/package.unmask/1С

Вот весь список:

=dev-db/postgresql-server-9.2.4-r2::daks

=dev-db/postgresql-base-9.2.4-r2::daks

Таким образом мы разрешаем установку про патченый СУБД PostgreSQL (патч от 1С) с оверлея «daks».


4.Создаём файл в следующей директории /etc/portage/package.use

# touch /etc/portage/package.use/1С

Пропишем следующие строчки файле /etc/portage/package.use/1C:

Пример:

# echo -e 'media-gfx/imagemagick corefonts' >>/etc/portage/package.use/1С

Вот весь список:

media-gfx/imagemagick corefonts

app-office/1C_Enterprise-server postgres

dev-db/postgresql-server 1c pg_legacytimestamp

dev-db/postgresql-base 1c pg_legacytimestamp threads

sys-apps/hasp net_hasp usb

Это ключи нужны для нормальной установки сервера (более подробно читайте документацию по OS Gentoo Linux).


5. Решим проблему: emerge: there are no ebuilds to satisfy ">=app-admin/eselect-postgresql-1.2.0".

По каким-то причинам при установки с оверлея «daks» СУБД PostgreSQL (с патчем от 1С), не находится это «ebuild» «app-admin/eselect-postgresql-1.2.0». Это «ebuild» находится в основной ветке тут:

# eix eselect-postgresql

* app-eselect/eselect-postgresql

Available versions: 1.2.1

Homepage: https://www.gentoo.org/

Description: Utility to select the default PostgreSQL slot

Это проблема решается просто, нам надо скопировать ebuild с основной ветки в наш локальный оверлей.

Создаём в локальном оверлеи папку app-admin

# mkdir -pv /var/calculate/portage/app-admin

и копируем туда всю папку eselect-postgresql с основной ветки:

# cp -Rva /usr/portage/app-eselect/eselect-postgresql/ /var/calculate/portage/app-admin/


6. Проблема с ядром Linux, решаем так:

sysctl -w kernel.shmmax=662020352

sysctl -w kernel.shmall=662020352

echo "kernel.shmmax = 662020352" >> /etc/sysctl.conf

echo "kernel.shmmall = 662020352" >> /etc/sysctl.conf

Эти настройки «shared memory» нужны для 1С сервера.

http://wiki.ayac.ru/skripty/nastrojka-shared-memory



Часть шестая. Ставим 1С сервер.


Теперь мы ставим сервер.

# emerge -av app-office/1C_Enterprise-server

Выйдет следующие сообщение:

These are the packages that would be merged, in order:


Calculating dependencies... done!

[binary N ] app-arch/cabextract-1.6::gentoo USE="-extras" 76 KiB

[ebuild N ] media-fonts/corefonts-1-r7::gentoo USE="-X -tahoma" 7460 KiB

[binary N ] dev-db/unixODBC-2.3.2-r1::gentoo USE="minimal unicode -odbcmanual -static-libs" ABI_X86="(64) -32 (-x32)" 303 KiB

[ebuild N ] app-text/ttf2pt1-3.4.4-r9::local 226 KiB

[binary N ] dev-libs/icu-55.1:0/55::gentoo USE="-debug -doc -examples -static-libs" ABI_X86="(64) -32 (-x32)" 11345 KiB

[binary NS ] media-libs/openjpeg-2.1.0:2/7::gentoo [1.5.2:0/5::gentoo] USE="-doc -static-libs {-test}" 228 KiB

[ebuild N f *] app-office/1C_Enterprise-common-8.3.6.2299:8.3::local USE="nls" 0 KiB

[ebuild N ] app-admin/eselect-postgresql-1.2.1::local 4 KiB

[ebuild N #] dev-db/postgresql-base-9.2.4-r2:9.2::daks USE="1c nls pam pg_legacytimestamp readline ssl threads zlib -doc -kerberos -ldap -python" LINGUAS="de en es fr it pl pt_BR ro ru -af -cs -fa -hr -hu -ko -nb -sk -sl -sv -tr -zh_CN -zh_TW" PYTHON_SINGLE_TARGET="python2_7 -python3_3" PYTHON_TARGETS="python2_7 -python3_3" 16058 KiB

[ebuild N #] dev-db/postgresql-server-9.2.4-r2:9.2::daks USE="1c nls pam pg_legacytimestamp -doc -kerberos -perl -python (-selinux) -tcl {-test} -uuid -xml" LINGUAS="de en es fr it pl pt_BR ro ru -af -cs -fa -hr -hu -ko -nb -sk -sl -sv -tr -zh_CN -zh_TW" PYTHON_SINGLE_TARGET="python2_7 -python3_3" PYTHON_TARGETS="python2_7 -python3_3" 4 KiB

[ebuild N ~] media-gfx/imagemagick-6.9.2.0:0/6.9.2.0::gentoo USE="bzip2 corefonts cxx jpeg jpeg2k openmp png tiff truetype zlib -X -autotrace -djvu -fftw -fontconfig -fpx -graphviz -hdri -jbig -lcms -lqr -lzma -opencl -openexr -pango -perl -postscript -q32 -q64 -q8 -raw -static-libs -svg {-test} -webp -wmf -xml" 8049 KiB

[ebuild N ] gnome-extra/libgsf-1.14.34:0/114::gentoo USE="bzip2 introspection -gtk" 596 KiB

[ebuild N f *] app-office/1C_Enterprise-server-8.3.6.2299:8.3::local USE="fontconfig nls postgres -pax_kernel" 0 KiB


Total: 13 packages (12 new, 1 in new slot, 4 binaries), Size of downloads: 44344 KiB

Fetch Restriction: 2 packages


Would you like to merge these packages? [Yes/No]


Как видим что по зависимости с «ebuild-ом» app-office/1C_Enterprise-server-8.3.6.2299:8.3 «вытягиваются» и другие «пакеты» программ, это нормально, продолжаем установку. Нажимаем «Yes».

Получаем вот такой результат:

>>> Verifying ebuild manifests

>>> Emerging binary (1 of 13) app-arch/cabextract-1.6::gentoo

>>> Emerging binary (2 of 13) dev-db/unixODBC-2.3.2-r1::gentoo

>>> Emerging (3 of 13) app-text/ttf2pt1-3.4.4-r9::local

>>> Emerging binary (4 of 13) dev-libs/icu-55.1::gentoo

>>> Installing (1 of 13) app-arch/cabextract-1.6::gentoo

>>> Emerging binary (5 of 13) media-libs/openjpeg-2.1.0::gentoo

>>> Installing (2 of 13) dev-db/unixODBC-2.3.2-r1::gentoo

>>> Emerging (6 of 13) app-admin/eselect-postgresql-1.2.1::local

>>> Installing (5 of 13) media-libs/openjpeg-2.1.0::gentoo

>>> Emerging (7 of 13) gnome-extra/libgsf-1.14.34::gentoo

>>> Installing (4 of 13) dev-libs/icu-55.1::gentoo

>>> Emerging (8 of 13) media-fonts/corefonts-1-r7::gentoo

>>> Installing (6 of 13) app-admin/eselect-postgresql-1.2.1::local

>>> Emerging (9 of 13) app-office/1C_Enterprise-common-8.3.6.2299::local

>>> Installing (3 of 13) app-text/ttf2pt1-3.4.4-r9::local

>>> Installing (8 of 13) media-fonts/corefonts-1-r7::gentoo

>>> Emerging (10 of 13) dev-db/postgresql-base-9.2.4-r2::daks

>>> Installing (9 of 13) app-office/1C_Enterprise-common-8.3.6.2299::local

>>> Emerging (11 of 13) media-gfx/imagemagick-6.9.2.0::gentoo

>>> Installing (7 of 13) gnome-extra/libgsf-1.14.34::gentoo

>>> Installing (10 of 13) dev-db/postgresql-base-9.2.4-r2::daks

>>> Emerging (12 of 13) dev-db/postgresql-server-9.2.4-r2::daks

>>> Installing (11 of 13) media-gfx/imagemagick-6.9.2.0::gentoo

>>> Installing (12 of 13) dev-db/postgresql-server-9.2.4-r2::daks

>>> Emerging (13 of 13) app-office/1C_Enterprise-server-8.3.6.2299::local

>>> Installing (13 of 13) app-office/1C_Enterprise-server-8.3.6.2299::local

>>> Recording app-office/1C_Enterprise-server in "world" favorites file...

>>> Jobs: 13 of 13 complete Load avg: 1.99, 2.41, 2.38


* Messages for package dev-db/postgresql-base-9.2.4-r2:


* If you need a global psqlrc-file, you can place it in:

* /etc/postgresql-9.2/


* Messages for package dev-db/postgresql-server-9.2.4-r2:


* Gentoo specific documentation:

* http://www.gentoo.org/doc/en/postgres-howto.xml

*

* Official documentation:

* http://www.postgresql.org/docs/9.2/static/index.html

*

* The default location of the Unix-domain socket is:

* /run/postgresql/

*

* Before initializing the database, you may want to edit PG_INITDB_OPTS

* so that it contains your preferred locale in:

* /etc/conf.d/postgresql-9.2

*

* Then, execute the following command to setup the initial database

* environment:

* emerge --config =dev-db/postgresql-server-9.2.4-r2


* Messages for package app-office/1C_Enterprise-server-8.3.6.2299:


* You can config fonts for 1C ERP system by exec

* /opt/1C/v8.3/x86_64/utils/config_server /path/to/font/dir/corefonts

* Perhaps you should add locale en_US in /etc/localegen and

* regenerate locales to use 1C with postgres.

>>> Auto-cleaning packages...


>>> No outdated packages were found on your system.


* GNU info directory index is up-to-date.


Как видите мне после сборки и установки выходят сообщения, что нужно потом сделать для настройки и запуска. Но этим мы займёмся во второй части этой статьи.


Конец.

ИТ аутсорсинг - это дёшево
Памятка по настройке копирования средствами програ...