Reorganizando estrutura do instalador
This commit is contained in:
151
sig-installer
Normal file → Executable file
151
sig-installer
Normal file → Executable file
@@ -3,7 +3,7 @@
|
||||
set -euo pipefail
|
||||
self=$(basename ${0})
|
||||
self=${self/.*bash}
|
||||
version=2506.1
|
||||
version=2506.2
|
||||
|
||||
# == Funções Gerais ============================================================================== #
|
||||
|
||||
@@ -564,10 +564,17 @@ function produto.install {
|
||||
runuser -l ${PRODUTO} -- python -m pip install --upgrade --user pip
|
||||
runuser -l ${PRODUTO} -- python -m pip install --upgrade --user setuptools
|
||||
for _lib in ${_libs}; do
|
||||
[[ "${_lib}" == "stoqdrivers" ]] && continue
|
||||
_lbpv=$(parsers.yaml ${CACHEDIR}/versoes.yml libs.python${_pdpy/.*}.${_lib})
|
||||
runuser -l ${PRODUTO} -- python -m pip install --user \
|
||||
"${CACHEDIR}/${PRODUTO}/${_lib}-${_lbpv#*/}.tar.gz"
|
||||
if [[ "${_lib}" == "kiwi" ]]; then
|
||||
_f=/srv/sig/${PRODUTO}/.local/lib/python2.7/site-packages/kiwi/__installed__.py
|
||||
find $(dirname ${_f})/ -name *.pyc -delete
|
||||
download "installer/config/${PRODUTO}/__installed__.py" "${_f}" \
|
||||
&& chown -R ${PRODUTO}:${PRODUTO} "${_f}" \
|
||||
&& chmod 644 ${_f} \
|
||||
&& touch ${_f}
|
||||
fi
|
||||
done
|
||||
|
||||
case "${PRODUTO}" in
|
||||
@@ -664,12 +671,20 @@ function produto.install {
|
||||
;;
|
||||
sigpdv)
|
||||
_date=$(date +%Y%m%d%H%M%S)
|
||||
|
||||
# -- Faz o backup da pasta anterior do SigPDV
|
||||
[[ -d "/srv/sig/${PRODUTO}/sigpdv" ]] && \
|
||||
mv \
|
||||
/srv/sig/${PRODUTO}/sigpdv \
|
||||
/srv/sig/${PRODUTO}/sigpdv.${_date}.bak
|
||||
|
||||
# TODO: Simplificar essa baderna
|
||||
|
||||
# -- Cria a árvore de diretórios do SigPDV
|
||||
mkdir -p /srv/sig/${PRODUTO}/sigpdv
|
||||
mkdir -p /usr/local/sigext
|
||||
mkdir -p /recebe
|
||||
|
||||
# -- Instala pacotes necessários para rodar o programa
|
||||
SIGPV_PACKAGES="
|
||||
atop \
|
||||
libmysqlclient21 \
|
||||
@@ -684,109 +699,101 @@ function produto.install {
|
||||
"
|
||||
system.install_pkgs ${SIGPV_PACKAGES}
|
||||
|
||||
mkdir -p /srv/sig/${PRODUTO}/sigpdv
|
||||
mkdir -p /usr/local/sigext
|
||||
mkdir -p /recebe
|
||||
|
||||
download "installer/config/${PRODUTO}/${PRODUTO}-single-instance-fix.patch" \
|
||||
"${CACHEDIR}/sigpdv/${PRODUTO}-single-instance-fix.patch"
|
||||
|
||||
# -- Download e instalação dos addons e aplicação de correções
|
||||
tar -C /srv/sig/${PRODUTO}/ \
|
||||
-xzf ${CACHEDIR}/${PRODUTO}/${PRODUTO}-${_pdpv#*/}.tar.gz
|
||||
ln -snf \
|
||||
/srv/sig/${PRODUTO}/sigpdv \
|
||||
/srv/sig/sigpdv/.local/lib/python2.7/site-packages/
|
||||
ln -snf \
|
||||
/srv/sig/${PRODUTO}/sigpdv \
|
||||
/usr/local/
|
||||
# Correção para erro "Dois frentes em execução"
|
||||
download "installer/config/${PRODUTO}/${PRODUTO}-single-instance-fix.patch" \
|
||||
"${CACHEDIR}/sigpdv/${PRODUTO}-single-instance-fix.patch"
|
||||
patch -d /srv/sig/${PRODUTO}/sigpdv \
|
||||
-p0 < "${CACHEDIR}/sigpdv/${PRODUTO}-single-instance-fix.patch"
|
||||
|
||||
ln -snf /srv/sig/${PRODUTO}/sigpdv /usr/local/
|
||||
|
||||
ln -snf \
|
||||
/srv/sig/${PRODUTO}/sigpdv \
|
||||
/srv/sig/sigpdv/.local/lib/python2.7/site-packages/
|
||||
|
||||
mkdir /srv/sig/sigpdv/.local/lib/python2.7/site-packages/share \
|
||||
&& mv /srv/sig/${PRODUTO}/.local/share/kiwi \
|
||||
/srv/sig/sigpdv/.local/lib/python2.7/site-packages/share/ \
|
||||
&& ln -snf \
|
||||
/srv/sig/sigpdv/.local/lib/python2.7/site-packages/share/kiwi \
|
||||
/srv/sig/${PRODUTO}/.local/share/ \
|
||||
|
||||
tar --transform="s|stoqdrivers/||" \
|
||||
-C /srv/sig/sigpdv/.local/lib/python2.7/site-packages/ \
|
||||
-xzf ${CACHEDIR}/${PRODUTO}/stoqdrivers-0.9.11.tar.gz \
|
||||
stoqdrivers/stoqdrivers
|
||||
|
||||
# -- Instalação dos módulos python de dependências
|
||||
download "installer/config/${PRODUTO}/requirements.txt" \
|
||||
"/srv/sig/${PRODUTO}/sigpdv/requirements.txt"
|
||||
[[ -f "/srv/sig/${PRODUTO}/sigpdv/requirements.txt" ]] && \
|
||||
runuser -l ${PRODUTO} -- \
|
||||
python -m pip install -qq -r /srv/sig/${PRODUTO}/sigpdv/requirements.txt --user \
|
||||
&& rm -f /srv/sig/${PRODUTO}/sigpdv/requirements.txt
|
||||
|
||||
# -- Lançadores dos programas
|
||||
download "installer/config/${PRODUTO}/${PRODUTO}-wrapper.sh" \
|
||||
"/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" \
|
||||
&& chmod +x "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-comanda \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-consulta-cda \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-pdvconfig \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-sigpdv \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-sigpve
|
||||
|
||||
ln -snf /srv/sig/${PRODUTO}/${PRODUTO}/debian/icons/* \
|
||||
&& chmod +x "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-comanda \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-consulta-cda \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-pdvconfig \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-sigpdv \
|
||||
&& ln -snf "/srv/sig/${PRODUTO}/${PRODUTO}-wrapper.sh" /usr/local/bin/start-sigpve
|
||||
ln -snf \
|
||||
/srv/sig/${PRODUTO}/${PRODUTO}/debian/icons/* \
|
||||
/usr/share/pixmaps/
|
||||
mkdir /usr/local/share/applications/ \
|
||||
&& ln -snf \
|
||||
/srv/sig/${PRODUTO}/${PRODUTO}/debian/desktop-files/* \
|
||||
/usr/local/share/applications/ \
|
||||
&& sed -i 's|/usr/bin|/usr/local/bin|g' /usr/local/share/applications/*.desktop \
|
||||
&& update-desktop-database || :
|
||||
|
||||
download "installer/config/${PRODUTO}/${PRODUTO}.sudo" \
|
||||
"/etc/sudoers.d/${PRODUTO}" \
|
||||
&& chown root:root "/etc/sudoers.d/${PRODUTO}" \
|
||||
&& chmod 600 "/etc/sudoers.d/${PRODUTO}"
|
||||
/srv/sig/${PRODUTO}/${PRODUTO}/debian/desktop-files/* \
|
||||
/usr/local/share/applications/ \
|
||||
&& sed -i 's|/usr/bin|/usr/local/bin|g' /usr/local/share/applications/*.desktop \
|
||||
&& update-desktop-database || :
|
||||
|
||||
# -- Configuração padrão inicial
|
||||
download "installer/config/${PRODUTO}/pdvconfig.cfg" \
|
||||
"/usr/local/sigext/pdvconfig.cfg"
|
||||
|
||||
download "installer/config/${PRODUTO}/CliSiTef.ini" \
|
||||
"/usr/local/sigext/CliSiTef.ini"
|
||||
for amb in homologacao producao lib_ssl_antiga; do
|
||||
ln -snf \
|
||||
"/usr/local/sigext/CliSiTef.ini" \
|
||||
/srv/sig/${PRODUTO}/sigtef/lib_x86_64/${amb}/
|
||||
/srv/sig/${PRODUTO}/${PRODUTO}/sigtef/lib_x86_64/${amb}/
|
||||
done
|
||||
|
||||
# PostgreSQL user and database
|
||||
local _password=$(openssl rand -base64 32 | sed 's/\//|/g')
|
||||
${ui}.status info $"Criando/Atualizando usuário e banco de dados [%s]" ${PRODUTO}
|
||||
# -- Configurações de segurança e dos usuários
|
||||
local _app_user=${PRODUTO}
|
||||
local _app_group=${_app_user}
|
||||
# Acesso do usuário do desktop
|
||||
local _desktop_user=$(getent passwd | sed '/x:1000/!d;s/:.*//g')
|
||||
usermod -aG ${_app_group},pyenv ${_desktop_user}
|
||||
# Configuração do sudo
|
||||
download "installer/config/${PRODUTO}/${PRODUTO}.sudo" \
|
||||
"/etc/sudoers.d/${PRODUTO}" \
|
||||
&& chown root:root "/etc/sudoers.d/${PRODUTO}" \
|
||||
&& chmod 600 "/etc/sudoers.d/${PRODUTO}"
|
||||
# Permissões de usuários e grupos
|
||||
for dir in /srv/sig/${PRODUTO} /usr/local/sigext /recebe; do
|
||||
chown -R ${_app_user}:${_app_group} ${dir}
|
||||
chmod -R g+rw,o-rwx ${dir}
|
||||
done
|
||||
|
||||
# -- Configuração do banco de dados PostgreSQL
|
||||
local _db_name=${PRODUTO}
|
||||
local _db_user=${_db_name}
|
||||
local _db_pass=$(openssl rand -base64 32 | sed 's/\//|/g')
|
||||
${ui}.status info $"Configurando o banco de dados [%s]" ${_db_name}}
|
||||
sudo -iu postgres \
|
||||
psql -c \
|
||||
"CREATE USER ${PRODUTO} WITH \
|
||||
PASSWORD '${_password}' \
|
||||
"CREATE USER ${_db_user} WITH \
|
||||
PASSWORD '${_db_pass}' \
|
||||
CREATEDB;" \
|
||||
|| \
|
||||
sudo -iu postgres \
|
||||
psql -c \
|
||||
"ALTER USER ${PRODUTO} WITH \
|
||||
PASSWORD '${_password}' \
|
||||
"ALTER USER ${_db_user} WITH \
|
||||
PASSWORD '${_db_pass}' \
|
||||
CREATEDB;"
|
||||
|
||||
if [[ 0${?} -eq 0 ]]; then
|
||||
sed -i "s/.*db_pdv_pass.*/db_pdv_pass = ${_password}/g" \
|
||||
sed -i "s/.*db_pdv_pass.*/db_pdv_pass = ${_db_pass}/g" \
|
||||
"/usr/local/sigext/pdvconfig.cfg"
|
||||
sudo -i -u postgres createdb -O ${PRODUTO} ${PRODUTO} >/dev/null 2>&1 || :
|
||||
${ui}.status warn $"Senha de acesso ao banco de dados: %s" ${_password}
|
||||
sudo -i -u postgres createdb -O ${_db_user} ${_db_name} >/dev/null 2>&1 || :
|
||||
${ui}.status warn $"Senha de acesso ao banco de dados: %s" ${_db_pass}
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
chown -R ${PRODUTO}: /usr/local/sigext /recebe
|
||||
chmod -R g+rw /usr/local/sigext /recebe
|
||||
# End TODO
|
||||
|
||||
[[ -f "/srv/sig/${PRODUTO}/sigpdv/requirements.txt" ]] && \
|
||||
runuser -l ${PRODUTO} -- \
|
||||
python -m pip install -qq -r /srv/sig/${PRODUTO}/sigpdv/requirements.txt --user \
|
||||
&& rm -f /srv/sig/${PRODUTO}/sigpdv/requirements.txt
|
||||
chown -R ${PRODUTO}: /srv/sig/${PRODUTO}/
|
||||
|
||||
local _user=$(getent passwd | sed '/x:1000/!d;s/:.*//g')
|
||||
usermod -aG ${PRODUTO} ${_user}
|
||||
;;
|
||||
|
||||
sigvpn)
|
||||
${ui}.status warn $"Não implementado."
|
||||
# rm -f /etc/apt/trusted.gpg.d/openvpn*.gpg
|
||||
@@ -814,7 +821,7 @@ function produto.install {
|
||||
#system.remove_pkgs ${BUILD_PACKAGES}
|
||||
|
||||
${ui}.color none
|
||||
${ui}.status info $"Instalação concluída. Reinicie o computador."
|
||||
${ui}.status info $"Instalação concluída. REINICIE o computador."
|
||||
${ui}.prompt $"Pressione ENTER para continuar ... "
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user