signer/3party/okular/install.sh

171 lines
6.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# CREDITS: https://github.com/MidnightRocket/posix-colors
if [ -z "${NO_COLOR+x}" ] && { [ -t 1 ] && [ -t 2 ] || [ -n "${CLICOLOR_FORCE+x}" ];} ; then readonly T_USE_COLOR=true; else unset T_USE_COLOR; fi
T_ESC="\033[" # ¯\_(ツ)_/¯
readonly T_ESC="${T_USE_COLOR+"$T_ESC"}"
readonly TR="${T_ESC}${T_USE_COLOR+"0m"}"
readonly TR_F="${T_ESC}${T_USE_COLOR+"39m"}" TR_B="${T_ESC}${T_USE_COLOR+"49m"}"
readonly TF_BLACK="${T_ESC}${T_USE_COLOR+"30m"}" TF_WHITE="${T_ESC}${T_USE_COLOR+"97m"}"
readonly TF_RED="${T_ESC}${T_USE_COLOR+"31m"}" TF_BRIGHT_RED="${T_ESC}${T_USE_COLOR+"91m"}"
readonly TF_GREEN="${T_ESC}${T_USE_COLOR+"32m"}" TF_BRIGHT_GREEN="${T_ESC}${T_USE_COLOR+"92m"}"
readonly TF_YELLOW="${T_ESC}${T_USE_COLOR+"33m"}" TF_BRIGHT_YELLOW="${T_ESC}${T_USE_COLOR+"93m"}"
readonly TF_BLUE="${T_ESC}${T_USE_COLOR+"34m"}" TF_BRIGHT_BLUE="${T_ESC}${T_USE_COLOR+"94m"}"
readonly TF_MAGENTA="${T_ESC}${T_USE_COLOR+"35m"}" TF_BRIGHT_MAGENTA="${T_ESC}${T_USE_COLOR+"95m"}"
readonly TF_CYAN="${T_ESC}${T_USE_COLOR+"36m"}" TF_BRIGHT_CYAN="${T_ESC}${T_USE_COLOR+"96m"}"
readonly TF_DARK_GRAY="${T_ESC}${T_USE_COLOR+"90m"}" TF_BRIGHT_GRAY="${T_ESC}${T_USE_COLOR+"37m"}"
print() { printf "%b%b" "${1-""}" "${2-"${TR}\\n"}"; }
stderr() { print "$@" 1>&2; }
if [ -f /etc/os-release ]; then
. /etc/os-release
else
print 'Операционная система не поддерживается.'
exit 1
fi
packages=
type=
distrib="${VERSION_CODENAME}"
if [ $(id -u) -ne 0 ]; then
print "${TF_BRIGHT_RED}Установка требует запуска с правами суперпользователя (root).${TR}"
exit 1
fi
check_package_rpm()
{
if rpm --quiet --query $1>/dev/null 2>&1; then
retval='установлен'
return 0
else
retval="${TF_WHITE}не установлен${TR}"
return 1
fi
}
check_package_deb()
{
if dpkg-query -W -f='${Status}' $1>/dev/null 2>&1; then
retval='установлен'
return 0
else
retval="${TF_WHITE}не установлен${TR}"
return 1
fi
}
check_cryptopro()
{
status=0
print 'Проверка КриптоПро:'
for pkg in lsb-cprocsp-base cprocsp-pki-cades-64 lsb-cprocsp-capilite-64 lsb-cprocsp-rdr-64; do
if [ "$type" = 'apt' ]; then
check_package_deb $pkg
status=$((status+$?))
else
check_package_rpm $pkg
status=$((status+$?))
fi
print " пакет $pkg: $retval"
done
return $status
}
case "${ID}_${VERSION_ID}" in
debian_12)
print "Установка для ${TF_GREEN}Debian 12${TR} «Bookworm»"
type=apt
;;
ubuntu_20.04)
print "Установка для ${TF_GREEN}Ubuntu 20.04${TR} «Focal Fossa»"
type=apt
;;
ubuntu_22.04)
print "Установка для ${TF_GREEN}Ubuntu 22.04${TR} «Jammy Jellyfish»"
type=apt
;;
ubuntu_24.04)
print "Установка для ${TF_GREEN}Ubuntu 24.04${TR} «Noble Numbat»"
type=apt
;;
astra_1.7_x86-64)
print "Установка для ${TF_GREEN}Astra Linux Special Edition 1.7${TR} «Смоленск»"
type=apt
distrib=alse17
packages='libkf5js5=5.78.0-0ubuntu2+alse17 libkf5jsapi5=5.78.0-0ubuntu2+alse17'
;;
fedora_40)
print "Установка для ${TF_GREEN}Fedora 40${TR}"
type=dnf
distrib=fedora
;;
rosa_2021.1)
print "Установка для ${TF_GREEN}Росы 2021.1${TR}"
type=dnf
distrib=rosa
;;
redos_7.3*)
print "Установка для ${TF_GREEN}РОС 7.3${TR}"
type=dnf
distrib=redos
;;
redos_8.0)
print "Установка для ${TF_GREEN}РОС 8${TR}"
type=dnf
distrib=redos
;;
altlinux_10* | altlinux_p10)
print "Установка для ${TF_GREEN}Альт 10${TR}"
type=alt
distrib=p10
;;
altlinux_11* | altlinux_p11)
print "Установка для ${TF_GREEN}Альт 11${TR}"
type=alt
distrib=p11
;;
*)
print "Операционная система «$PRETTY_NAME» ${TF_BRIGHT_REF}не поддерживается.${TR}"
exit 1
;;
esac
if check_cryptopro; then
packages="$packages okular-csp"
else
packages="$packages okular-gost"
print "${TF_BRIGHT_RED}КриптоПро не установлен.${TR} Окуляр ГОСТ будет установлен без модуля КриптоПро."
print 'После установки недостающих пакетов вы можете перезапустить установку.'
fi
set -e
# Установка плагинов dnf для РЕД ОС.
if [ "$distrib" = 'redos' ]; then
dnf install -y dnf-plugins-core
fi
if [ "$type" = 'apt' ]; then
echo "deb http://packages.lab50.net/okular $distrib main non-free" > /etc/apt/sources.list.d/okulargost.list
if [ ! -f /etc/apt/trusted.gpg.d/lab50.gpg ]; then
wget -q -O /etc/apt/trusted.gpg.d/lab50.gpg http://packages.lab50.net/lab50.gpg > /dev/null
chmod 0644 /etc/apt/trusted.gpg.d/lab50.gpg
fi
apt-get update > /dev/null
apt-get install -y $packages
elif [ "$type" = 'dnf' ]; then
dnf config-manager --add-repo http://packages.lab50.net/okular/$distrib/okularcsp.repo
dnf install -y $packages
else
echo "rpm http://packages.lab50.net/okular/alt $distrib/x86_64 okulargost" > /etc/apt/sources.list.d/okulargost.list
apt-get update > /dev/null
apt-get install -y $packages
fi
print "${TF_WHITE}Окуляр ГОСТ успешно установлен.${TR}"