1c+gentoo (от A до Z)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

n1kt0
Сообщения: 289
ОС: GNU/Gentoo

1c+gentoo

Сообщение n1kt0 »

в общем есть rpm пакеты 1с для линукса(тестировалось на федора, сус), хотелось бы узнать как его корректно рапаковать и написать ebuild чтобы потом всунуть в оверлей+нужно подробноеп описание установки постгреса(наложение патча и где этот патч брать). В общем делается это из-за того, что на федоре и сусе производительность неудовлетварительная т.е просто ужасная. Хочется все оптимизированное собрать и чтобы красиво работало. Помогайте:)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: 1c+gentoo

Сообщение serzh-z »

Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

serzh-z писал(а):
15.12.2008 14:21
FAQ



это проще всего так отправить человека: давайте разберем по полочкам т.е нужен цельный ответ
Спасибо сказали:
Аватара пользователя
Cianos
Сообщения: 343
Статус: ищу
ОС: Gentoo

Re: 1c+gentoo

Сообщение Cianos »

это проще всего написать 'то что я хочу' и сказать "Помогайте"
и как-то не видно, чтобы вы начали что-то делать
Моё Gentoo круче твоего!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: 1c+gentoo

Сообщение serzh-z »

n1kt0
Никто не будет делать конспект из существующего подробного руководства персонально для Вас. Заявки на создание ебилда - это тоже в другое место.
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

serzh-z писал(а):
15.12.2008 15:18
n1kt0
Никто не будет делать конспект из существующего подробного руководства персонально для Вас. Заявки на создание ебилда - это тоже в другое место.


куда обращаться по поводу ebuild'ov ?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: 1c+gentoo

Сообщение serzh-z »

n1kt0 писал(а):
15.12.2008 15:48
куда обращаться по поводу ebuild'ov ?
http://bugs.gentoo.org/ (для начала см. http://www.gentoo.org/doc/en/bugzilla-howto.xml).
Спасибо сказали:
modq
Сообщения: 4
ОС: Gentoo, FreeBSD

Re: 1c+gentoo

Сообщение modq »

искать ебилды постгреса с патчами 1с в svn://os-rostov.ru/overlay
layman -a rostov
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

в общем постгрес с патчем я поставил, потом распаковал саму платформу 1с, которая поставляется в rpm. получилось две папки: opt & etc

внутри etc: sysconfig/srv1cv81

Код:

#------------------------------------------------------------ # 1C:Enterprise server configuration parameters #------------------------------------------------------------ # 1C:Enterprise server keytab file. # default - usr1cv81.keytab file in 1C:Enterprise server # installation directory # #SRV1CV8_KEYTAB= # Number of the cluster port created by default during first # launch of ragent # # default - 1540 # #SRV1CV8_PORT= # Number of cluster agent main port. This port is used by the # cluster console to address the central server. Cluster agent # port is also specified as the IP port of the working server. # # default - 1541 # #SRV1CV8_REGPORT= # Port range for connection pool # example values: # 45:49 # 45:67,70:72,77:90 # # default - 1560:1691 # #SRV1CV8_RANGE= # 1C:Enterprise server configuration debug mode # 0 - default - off # 1 - on # #SRV1CV8_DEBUG= # Path to directory with claster data # default - $HOMEDIR/.1cv81/1C/1Cv81 # #SRV1CV8_DATA= # Security level: # 0 - default - unprotected connections # 1 - protected connections only for the time of user # authentication # 2 - permanently protected connections # #SRV1CV8_SECLEV= #------------------------------------------------------------ # end of config #------------------------------------------------------------ [code] внутри init.d: [code] # chkconfig: 35 74 36 # description: Starts and stops the 1C:Enterprise daemons #------------------------------------------------------------ # global macros. generated by install script #------------------------------------------------------------ G_CONF_STYLE=rpm G_VER_ARCH=i386 G_VER_MAJOR=8 G_VER_MINOR=1 G_VER_BUILD=12 G_VER_RELEASE=101 G_BINDIR="/opt/1C/v${G_VER_MAJOR}.${G_VER_MINOR}/${G_VER_ARCH}" #------------------------------------------------------------ G_VER_SHORT=${G_VER_MAJOR}.${G_VER_MINOR} G_TITLE="1C:Enterprise ${G_VER_SHORT} server" #------------------------------------------------------------ # this values can be passed from outside, so perform "z-check" #------------------------------------------------------------ [ -z "$SRV1CV8_USER" ] && SRV1CV8_USER=usr1cv${G_VER_MAJOR}${G_VER_MINOR} [ -z "$SRV1CV8_BINDIR" ] && SRV1CV8_BINDIR="$G_BINDIR" [ -z "$SRV1CV8_PIDFILE" ] && SRV1CV8_PIDFILE="/var/run/srv1cv${G_VER_MAJOR}${G_VER_MINOR}.pid" [ -z "$SRV1CV8_KEYTAB" ] && SRV1CV8_KEYTAB="$SRV1CV8_BINDIR/$SRV1CV8_USER.keytab" [ -z "$SRV1CV8_WAITSTART" ] && SRV1CV8_WAITSTART=5 [ -z "$SRV1CV8_WAITSTOP" ] && SRV1CV8_WAITSTOP=5 #------------------------------------------------------------ # builds ragent's command line from configuration parameters #------------------------------------------------------------ function buildCommandLine() { local cmdline="$SRV1CV8_BINDIR/ragent -daemon" [ ! -z "$SRV1CV8_PORT" ] && cmdline="$cmdline -port $SRV1CV8_PORT" [ ! -z "$SRV1CV8_REGPORT" ] && cmdline="$cmdline -regport $SRV1CV8_REGPORT" [ ! -z "$SRV1CV8_DATA" ] && cmdline="$cmdline -d \"$SRV1CV8_DATA\"" [ ! -z "$SRV1CV8_RANGE" ] && cmdline="$cmdline -range $SRV1CV8_RANGE" [ ! -z "$SRV1CV8_SECLEV" ] && cmdline="$cmdline -seclev $SRV1CV8_SECLEV" [ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug" echo $cmdline } #------------------------------------------------------------ # checks if process with passed pid exists #------------------------------------------------------------ function checkpid() { ps -p $* > /dev/null } #------------------------------------------------------------ # waits SRV1CV8_WAITSTOP seconds for process termination, # then kills it #------------------------------------------------------------ function delayedkill() { local mypid=$1 local delay=$2 kill $mypid 2>/dev/null checkpid $mypid && sleep $delay || return 0 if checkpid $mypid; then kill -9 $mypid logWarning "Process refused to die... So it was killed. May be you should increase SRV1CV8_WAITSTOP variable?"; fi return 0 } #------------------------------------------------------------ # extracts specified param from value from given command-line #------------------------------------------------------------ function extractParam() { local param=$1 shift local tmp=$* if [ ! -z "$*" ]; then if [ ${tmp:0:1} == "-" ]; then tmp=${tmp:1} local val=${tmp#*$param } # if old and new strings are equal # we don't have needed param in cmdline # so return [ "$val" == "$tmp" ] && return; val=${val%% -*} echo "$val" fi fi } #------------------------------------------------------------ # call it when something fails #------------------------------------------------------------ function failure() { [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo FAILED return 0 } #------------------------------------------------------------ # extracts data dir from ragent's command line or (if it's # empty), builds it from users's home dir #------------------------------------------------------------ function getDataDir() { local cmdline=`getRagentRealCmdLine` local datadir="$SRV1CV8_DATA" [ ! -z "$cmdline" ] && datadir=`extractParam d $cmdline` if [ -z "$datadir" ]; then local line=`grep ^$SRV1CV8_USER: /etc/passwd` local homedir=${line#*:*:*:*:*:} homedir=${homedir%:*} datadir="$homedir/.1cv${G_VER_MAJOR}${G_VER_MINOR}/1C/1Cv${G_VER_MAJOR}${G_VER_MINOR}" fi echo $datadir } #------------------------------------------------------------ # returns ragent configuration debug flag #------------------------------------------------------------ function getDebugStatus() { local cmdline=`getRagentRealCmdLine` local debugFlag="$SRV1CV8_DEBUG" echo "$cmdline" | grep "\-debug" >/dev/null && debugFlag="1" [ ! -z "$debugFlag" ] && echo $debugFlag || echo "0" } #------------------------------------------------------------ # returns ragent port range #------------------------------------------------------------ function getPortRange() { local cmdline=`getRagentRealCmdLine` local range="$SRV1CV8_RANGE" [ ! -z "$cmdline" ] && range=`extractParam range $cmdline` [ ! -z "$range" ] && echo $range || echo 1560:1591 } #------------------------------------------------------------ # returns ragent main port #------------------------------------------------------------ function getRagentPort() { local cmdline=`getRagentRealCmdLine` local port="$SRV1CV8_PORT" [ ! -z "$cmdline" ] && port=`extractParam port $cmdline` [ ! -z "$port" ] && echo $port || echo 1540 } #------------------------------------------------------------ # get's running ragent command-line #------------------------------------------------------------ function getRagentRealCmdLine() { local cmdline=`buildCommandLine` local mypid=`getRagentPid "$SRV1CV8_USER" "$cmdline"` local result="" [ ! -z "$mypid" ] && result=`ps --pid $mypid -o cmd= | sed -e "s/.*-daemon//"` echo "$result" } #------------------------------------------------------------ # tries to get pid of ragent process, started by this script #------------------------------------------------------------ function getRagentPid() { local user=$1 shift # remove quotes in passed CMDLINE because # command line of process doesn't contains'em # even if they were passed. local cmdline=`echo $* | sed -e "s/\"//g"` ps -C ragent -opid=,user=,cmd= | while read curline; do local curPID=`echo $curline | sed -e "s/ .*//"` local curline=`echo $curline | sed -e "s/$curPID //"` local curUSR=`echo $curline | sed -e "s/ .*//"` local curCMD=`echo $curline | sed -e "s/$curUSR //"` if [ "$curCMD" == "$cmdline" ] && [ "$curUSR" == "$user" ]; then echo $curPID fi done } #------------------------------------------------------------ # returns ragent reg port #------------------------------------------------------------ function getRegPort() { local cmdline=`getRagentRealCmdLine` local regport="$SRV1CV8_REGPORT" [ ! -z "$cmdline" ] && regport=`extractParam regport $cmdline` [ ! -z "$regport" ] && echo $regport || echo 1541 } #------------------------------------------------------------ # returns name of script #------------------------------------------------------------ function getScriptName() { local myname=`basename $0` [ ${myname:0:1} = "S" -o ${myname:0:1} = "K" ] && myname=${myname:3} echo $myname } #------------------------------------------------------------ # returns ragent security level #------------------------------------------------------------ function getSecLevel() { local cmdline=`getRagentRealCmdLine` local seclev="$SRV1CV8_SECLEV" [ ! -z "$cmdline" ] && seclev=`extractParam seclev $cmdline` [ ! -z "$seclev" ] && echo $seclev || echo 0 } #------------------------------------------------------------ # displays useful information about ragent #------------------------------------------------------------ function info() { echo "$G_TITLE info:" echo -n " Data dir: " && getDataDir echo -n " Main port: " && getRagentPort echo -n " RegPort: " && getRegPort echo -n "Port range: " && getPortRange echo -n "Debug mode: " && getDebugStatus echo -n "Sec. level: " && getSecLevel return 0 } #------------------------------------------------------------ # check if our ragent running #------------------------------------------------------------ function isRagentRunning() { local mypid=`getRagentPid $*` [ ! -z "$mypid" ] && checkpid "$mypid" } #------------------------------------------------------------ # talks to stderr, and then logs failure to stdout #------------------------------------------------------------ function logError() { echo -n " Error: " >&2 echo $* >&2 failure } #------------------------------------------------------------ # put some additional non-critical debug info to stderr #------------------------------------------------------------ function logWarning() { echo -n "Warning: " >&2 echo $* >&2 } #------------------------------------------------------------ # restarts server #------------------------------------------------------------ function restart() { stop start } #------------------------------------------------------------ # displays command-line help #------------------------------------------------------------ function showUsage() { local myname=$1 echo "Usage: $myname [-c config] start|stop|restart|status|info" } #------------------------------------------------------------ # starts ragent #------------------------------------------------------------ function start() { echo -n "Starting $G_TITLE: " if [ ! -z "$SRV1CV8_DATA" ]; then if [ -e "$SRV1CV8_DATA" ]; then [ ! -d "$SRV1CV8_DATA" ] && { logError "SRV1CV8_DATA \"$SRV1CV8_DATA\" is a file, not a directory!"; return 0; } fi fi [ ! -f "$SRV1CV8_BINDIR/ragent" ] && { logError "ragent file does not exists!"; return 0; } [ ! -x "$SRV1CV8_BINDIR/ragent" ] && { logError "ragent file is not executable!"; return 0; } local cmd2run=`buildCommandLine` if isRagentRunning "$SRV1CV8_USER" "$cmd2run"; then logWarning "already started!"; else # run our process if [ -z "$SRV1CV8_USER" ]; then export KRB5_KTNAME="$SRV1CV8_KEYTAB" $cmd2run else su -s /bin/bash - "$SRV1CV8_USER" -c "KRB5_KTNAME=\"$SRV1CV8_KEYTAB\" $cmd2run" fi sleep $SRV1CV8_WAITSTART # wait a bit before check ! isRagentRunning "$SRV1CV8_USER" "$cmd2run" && { logError "service failed to start!"; return 0; } # check if pidfile exists and remove it if neccessary [ -f "$SRV1CV8_PIDFILE" ] && logWarning "pid file existed on server start. it can mean that last run failed..." fi local mypid=`getRagentPid $SRV1CV8_USER $cmd2run` echo ${mypid} > "$SRV1CV8_PIDFILE" success return 0 } #------------------------------------------------------------ # displays ragent status #------------------------------------------------------------ function status() { echo "$G_TITLE status:" echo -n "Init script: " if [ -f "$SRV1CV8_PIDFILE" ]; then echo STARTED. local cmd2run=`buildCommandLine` echo -n " Ragent: " ! isRagentRunning "$SRV1CV8_USER" "$cmd2run" && echo -n "NOT " echo "RUNNING." else echo NOT STARTED. fi return 0 } #------------------------------------------------------------ # stops ragent #------------------------------------------------------------ function stop() { echo -n "Stopping $G_TITLE: " [ -f "$SRV1CV8_PIDFILE" ] && rm "$SRV1CV8_PIDFILE" local cmd2run=`buildCommandLine` if isRagentRunning "$SRV1CV8_USER" "$cmd2run"; then mypid=`getRagentPid $SRV1CV8_USER $cmd2run` if [ ! -z "$mypid" ]; then local childpids=`ps --ppid ${mypid} -o pid=` delayedkill $mypid $SRV1CV8_WAITSTOP for childpid in $childpids; do delayedkill $childpid $SRV1CV8_WAITSTOP done fi else logWarning "server not running!" fi success return } #------------------------------------------------------------ # functions says something succeded #------------------------------------------------------------ function success() { [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo OK return 0 } #------------------------------------------------------------ # script's main function #------------------------------------------------------------ function main() { local myname=`getScriptName` local dirname=`dirname $0` local realdir=$(cd "$dirname"; pwd) # check if someone passed different config throug command-line option local configFile= [ "$1" == "-c" ] && { configFile="$2"; shift 2; } local action= case $1 in '') showUsage $myname return 1 ;; --help) showUsage $myname return 0 ;; info) action=info ;; restart) action=restart ;; start) action=start ;; status) action=status ;; stop) action=stop ;; *) showUsage $myname return 1; ;; esac # check for config file existence if [ -z "$configFile" ]; then configFile="/etc/sysconfig/$myname" [ -e "$configFile" ] && source "$configFile" else [ -f "$configFile" ] && source "$configFile" fi $action } #invoke function main main $*


в opt: 1C/v8.1

я все это тестово(чтобы проверить работает или нет скопировал в идеинтичные папки и при запуске /etc/init.d/srv1cv81
выползает следующая ошибка: Starting 1C:Enterprise 8.1 server: Unknown id: usr1cv81
поможете решить ? ебилд я сам напишу, думаю сама платформа является самодостаточной и не думаю чтобы она зависила от каких то сторонних либ, думаю ей хватит того, что есть в /opt/1C/v8.1
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: 1c+gentoo

Сообщение yaleks »

n1kt0 писал(а):
13.02.2009 18:02
я все это тестово(чтобы проверить работает или нет скопировал в идеинтичные папки и при запуске /etc/init.d/srv1cv81
выползает следующая ошибка: Starting 1C:Enterprise 8.1 server: Unknown id: usr1cv81
поможете решить ? ебилд я сам напишу, думаю сама платформа является самодостаточной и не думаю чтобы она зависила от каких то сторонних либ, думаю ей хватит того, что есть в /opt/1C/v8.1

В оверлее rostov уже всё есть, незачем заниматься велосипедостроительством.
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

yaleks писал(а):
13.02.2009 21:06
n1kt0 писал(а):
13.02.2009 18:02
я все это тестово(чтобы проверить работает или нет скопировал в идеинтичные папки и при запуске /etc/init.d/srv1cv81
выползает следующая ошибка: Starting 1C:Enterprise 8.1 server: Unknown id: usr1cv81
поможете решить ? ебилд я сам напишу, думаю сама платформа является самодостаточной и не думаю чтобы она зависила от каких то сторонних либ, думаю ей хватит того, что есть в /opt/1C/v8.1

В оверлее rostov уже всё есть, незачем заниматься велосипедостроительством.



ну я чего-то саму платформу ненашел. где она там валяется, в какой папке ?
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

inherit eutils flag-o-matic multilib

DESCRIPTION="Базовые компоненты системы ERP от компании 1С"
HOMEPAGE="http://v8.1c.ru/"
REVISION="123"
SRC_URI="${P}-${REVISION}.i386.rpm"
SLOT="8.1"

LICENSE="1C"
KEYWORDS="~amd64 ~x86"
RESTRICT="fetch strip"


DEPEND="app-arch/rpm2targz
"
src_unpack() {
rpm2tar ${DISTDIR}/${A}
tar -xf ${P}-${REVISION}.i386.tar
}

src_compile() {
einfo "Компиляция не требуется. Устанавливаем..."
}

src_install() {
dodir /opt
mv "${WORKDIR}"/opt/* ${D}/opt
}


вопрос: куда и с каким именем положить rpm чтобы ебуилд распаковал рпм ?
потому что навскидку:

Код: Выделить всё

mybox 1C_Enterprise-common # emerge 1C_Enterprise-common-8.1.5-r1.ebuild

*** emerging by path is broken and may not always work!!!

Calculating dependencies -
!!! 1C_Enterprise-common-8.1.5-r1.ebuild is not in a valid portage tree hierarchy or does not exist
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: 1c+gentoo

Сообщение serzh-z »

n1kt0 писал(а):
16.02.2009 18:06
куда и с каким именем положить rpm чтобы ебуилд распаковал рпм
Например, в ${DISTDIR} с именем и версией ебилда ({P}-${REVISION}.i386.rpm).
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

serzh-z писал(а):
16.02.2009 18:15
n1kt0 писал(а):
16.02.2009 18:06
куда и с каким именем положить rpm чтобы ебуилд распаковал рпм
Например, в ${DISTDIR} с именем и версией ебилда ({P}-${REVISION}.i386.rpm).


переименовал 1C_Enterprise-common-8.1.5-r1.ebuild в 1C_Enterprise-common-8.1.12-101.ebuild
при условии что рпм имеет имя: 1C_Enterprise-common-8.1.12-101.i386.rpm
и скопировал 1C_Enterprise-common-8.1.12-101.i386.rpm в /usr/portage
и получил следующее:

Код: Выделить всё

mybox 1C_Enterprise-common # emerge 1C_Enterprise-common-8.1.5-r1.ebuild

*** emerging by path is broken and may not always work!!!

Calculating dependencies \
!!! 1C_Enterprise-common-8.1.5-r1.ebuild is not in a valid portage tree hierarchy or does not exist
Спасибо сказали:
yaleks
Сообщения: 2121
Статус: вне статуса
ОС: Gentoo ~

Re: 1c+gentoo

Сообщение yaleks »

Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: 1c+gentoo

Сообщение serzh-z »

n1kt0 писал(а):
16.02.2009 18:24
*** emerging by path is broken and may not always work!!!
Речь идёт о местоположении ебилда, а не о RPM. Его нужно правильно расположить в оверлее для emerge.
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: 1c+gentoo

Сообщение n1kt0 »

поставил, короче там получается /etc/init.d/1c... start незапустился, а вручную запустил в /opt/1C/i386/regent и он запустился, но там я ставил то, что было и была у меня 12 платформа а клиенты везде стоят 12 и поэтому несоответствие версий и не хочет создавать базу из-за этого=(

кто-то даст скелет простого /etc/init для того, чтобы вставить бинарь(regent) ? чтобы там был start;restart;stop ?
Спасибо сказали:
modq
Сообщения: 4
ОС: Gentoo, FreeBSD

Re: 1c+gentoo

Сообщение modq »

Тоже боролся со скриптом по умолчанию :)

Код: Выделить всё

/etc/init.d/1Cv81 start
Starting 1C:Enterprise 8.1 server:   Error: service failed to start!
FAILED

Вылечил добавлением прав на папку для пользователя 1С

Код: Выделить всё

chown -R usr1cv81:usr1cv81 /opt/1C

Переделал ебилды под себя из оверлея rostov, версия 1с 8.1.13-41.
Спасибо сказали: