1c+gentoo (от A до Z)
Модератор: /dev/random
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
1c+gentoo
в общем есть rpm пакеты 1с для линукса(тестировалось на федора, сус), хотелось бы узнать как его корректно рапаковать и написать ebuild чтобы потом всунуть в оверлей+нужно подробноеп описание установки постгреса(наложение патча и где этот патч брать). В общем делается это из-за того, что на федоре и сусе производительность неудовлетварительная т.е просто ужасная. Хочется все оптимизированное собрать и чтобы красиво работало. Помогайте
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
-
Cianos
- Сообщения: 343
- Статус: ищу
- ОС: Gentoo
Re: 1c+gentoo
это проще всего написать 'то что я хочу' и сказать "Помогайте"
и как-то не видно, чтобы вы начали что-то делать
и как-то не видно, чтобы вы начали что-то делать
Моё Gentoo круче твоего!
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: 1c+gentoo
n1kt0
Никто не будет делать конспект из существующего подробного руководства персонально для Вас. Заявки на создание ебилда - это тоже в другое место.
Никто не будет делать конспект из существующего подробного руководства персонально для Вас. Заявки на создание ебилда - это тоже в другое место.
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
modq
- Сообщения: 4
- ОС: Gentoo, FreeBSD
Re: 1c+gentoo
искать ебилды постгреса с патчами 1с в svn://os-rostov.ru/overlay
layman -a rostov
layman -a rostov
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
Re: 1c+gentoo
в общем постгрес с патчем я поставил, потом распаковал саму платформу 1с, которая поставляется в rpm. получилось две папки: opt & etc
внутри etc: sysconfig/srv1cv81
в opt: 1C/v8.1
я все это тестово(чтобы проверить работает или нет скопировал в идеинтичные папки и при запуске /etc/init.d/srv1cv81
выползает следующая ошибка: Starting 1C:Enterprise 8.1 server: Unknown id: usr1cv81
поможете решить ? ебилд я сам напишу, думаю сама платформа является самодостаточной и не думаю чтобы она зависила от каких то сторонних либ, думаю ей хватит того, что есть в /opt/1C/v8.1
внутри 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
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
yaleks писал(а): ↑13.02.2009 21:06n1kt0 писал(а): ↑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
# 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 чтобы ебуилд распаковал рпм ?
потому что навскидку:
# 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
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
Re: 1c+gentoo
переименовал 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 ~
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
n1kt0
- Сообщения: 289
- ОС: GNU/Gentoo
Re: 1c+gentoo
поставил, короче там получается /etc/init.d/1c... start незапустился, а вручную запустил в /opt/1C/i386/regent и он запустился, но там я ставил то, что было и была у меня 12 платформа а клиенты везде стоят 12 и поэтому несоответствие версий и не хочет создавать базу из-за этого=(
кто-то даст скелет простого /etc/init для того, чтобы вставить бинарь(regent) ? чтобы там был start;restart;stop ?
кто-то даст скелет простого /etc/init для того, чтобы вставить бинарь(regent) ? чтобы там был start;restart;stop ?
-
modq
- Сообщения: 4
- ОС: Gentoo, FreeBSD
Re: 1c+gentoo
Тоже боролся со скриптом по умолчанию 
Вылечил добавлением прав на папку для пользователя 1С
Переделал ебилды под себя из оверлея rostov, версия 1с 8.1.13-41.
Код: Выделить всё
/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.