|
| 1 | +#!/bin/sh |
| 2 | +# This script configures .deb based Linux repositories |
| 3 | +# License: public domain |
| 4 | +# Script https://github.com/open-eid/linux-installer |
| 5 | +# See wiki https://github.com/open-eid/linux-installer/wiki/Linux-Packages |
| 6 | +set -e |
| 7 | + |
| 8 | +# Key used for signing releases |
| 9 | +RIA_KEY="""-----BEGIN PGP PUBLIC KEY BLOCK----- |
| 10 | +Comment: GPGTools - https://gpgtools.org |
| 11 | +
|
| 12 | +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 |
| 58 | +K2czbpReKw== |
| 59 | +=aSyh |
| 60 | +-----END PGP PUBLIC KEY BLOCK----- |
| 61 | +""" |
| 62 | + |
| 63 | +add_key() { |
| 64 | + # keystring=`echo "$RIA_KEY" | gpg` # XXX: can't be automated, gpg always creates files on disk |
| 65 | + keystring= "0xC6C83D68 'RIA Software Signing Key <[email protected]>'" |
| 66 | + echo "Adding key to trusted key set" |
| 67 | + echo "$keystring" |
| 68 | + echo "$RIA_KEY" | gpg --dearmor | sudo tee /usr/share/keyrings/ria-repository.gpg > /dev/null |
| 69 | +} |
| 70 | + |
| 71 | +test_sudo() { |
| 72 | + if ! command -v sudo>/dev/null; then |
| 73 | + make_fail "You must have sudo and be in sudo group\nAs root do: apt install sudo && adduser $USER sudo" |
| 74 | + fi |
| 75 | +} |
| 76 | + |
| 77 | +test_root() { |
| 78 | + if test $(id -u) -eq 0; then |
| 79 | + echo "You run this script as root. DO NOT RUN RANDOM SCRIPTS AS ROOT." |
| 80 | + exit 2 |
| 81 | + fi |
| 82 | +} |
| 83 | + |
| 84 | +# add the given repository into /etc/apt/sources.list.d |
| 85 | +add_repository() { |
| 86 | + umask 0022 |
| 87 | + echo "Adding RIA repository to APT sources list (/etc/apt/sources.list.d/ria-repository.list)" |
| 88 | + echo "deb [signed-by=/usr/share/keyrings/ria-repository.gpg] https://installer.id.ee/media/ubuntu/ $1 main" | sudo tee /etc/apt/sources.list.d/ria-repository.list |
| 89 | +} |
| 90 | + |
| 91 | +make_install() { |
| 92 | + echo "Installing software (apt update && apt install web-eid)" |
| 93 | + sudo apt update |
| 94 | + sudo apt install "$@" |
| 95 | +} |
| 96 | + |
| 97 | +make_fail() { |
| 98 | + echo "$1" |
| 99 | + exit 3 |
| 100 | +} |
| 101 | + |
| 102 | +make_warn() { |
| 103 | + echo "### $1" |
| 104 | + echo "Press ENTER to continue, CTRL-C to cancel" |
| 105 | + read -r dummy |
| 106 | +} |
| 107 | + |
| 108 | +### Install Estonian ID card software |
| 109 | + |
| 110 | +# check for Debian derivative. |
| 111 | +if ! command -v lsb_release>/dev/null; then |
| 112 | + make_fail "# Not a Debian Linux :(" |
| 113 | +fi |
| 114 | + |
| 115 | +# we use sudo |
| 116 | +test_root |
| 117 | +test_sudo |
| 118 | + |
| 119 | +# version name LTS supported until |
| 120 | +# 20.04 focal LTS 2025-04 |
| 121 | +# 22.04 jammy LTS 2027-04 |
| 122 | +# 24.04 noble - 2029-04 |
| 123 | +LATEST_SUPPORTED_UBUNTU_CODENAME='noble' |
| 124 | + |
| 125 | +# check if Debian or Ubuntu |
| 126 | +distro=$(lsb_release -is | tr '[:upper:]' '[:lower:]') |
| 127 | +release=$(lsb_release -rs) |
| 128 | +codename=$(lsb_release -cs) |
| 129 | + |
| 130 | +case $distro in |
| 131 | + debian) |
| 132 | + make_warn "Debian is not officially supported" |
| 133 | + echo "### Installing possibly missing https support for APT (apt install apt-transport-https)" |
| 134 | + # Debian lacks https support for apt, by default |
| 135 | + sudo apt install apt-transport-https |
| 136 | + case "$codename" in |
| 137 | + bullseye) |
| 138 | + make_warn "Debian $codename is not officially supported" |
| 139 | + make_warn "Installing from ubuntu-focal repository" |
| 140 | + add_repository focal |
| 141 | + ;; |
| 142 | + bookworm) |
| 143 | + make_warn "Debian $codename is not officially supported" |
| 144 | + make_warn "Installing from ubuntu-jammy repository" |
| 145 | + add_repository jammy |
| 146 | + ;; |
| 147 | + *) |
| 148 | + make_fail "Debian $codename is not officially supported" |
| 149 | + ;; |
| 150 | + esac |
| 151 | + ;; |
| 152 | + ubuntu|neon|zorin) |
| 153 | + case $distro in |
| 154 | + neon) make_warn "Neon is not officially supported; assuming that it is equivalent to Ubuntu" ;; |
| 155 | + *) ;; |
| 156 | + esac |
| 157 | + case $codename in |
| 158 | + utopic|vivid|wily|trusty|artful|cosmic|disco|xenial|eoan|groovy|hirsute|impish|bionic|zorin|kinetic|lunar|mantic) |
| 159 | + make_fail "Ubuntu $codename is not officially supported" |
| 160 | + ;; |
| 161 | + focal|jammy|noble) |
| 162 | + add_repository $codename |
| 163 | + ;; |
| 164 | + *) |
| 165 | + make_warn "Ubuntu $codename is not officially supported" |
| 166 | + make_warn "Trying to install package for Ubuntu ${LATEST_SUPPORTED_UBUNTU_CODENAME}" |
| 167 | + add_repository ${LATEST_SUPPORTED_UBUNTU_CODENAME} |
| 168 | + ;; |
| 169 | + esac |
| 170 | + ;; |
| 171 | + linuxmint) |
| 172 | + case $release in |
| 173 | + 22*) |
| 174 | + make_warn "Linux Mint 22 is not officially supported" |
| 175 | + add_repository noble |
| 176 | + ;; |
| 177 | + 21*) |
| 178 | + make_warn "Linux Mint 21 is not officially supported" |
| 179 | + add_repository jammy |
| 180 | + ;; |
| 181 | + 20*) |
| 182 | + make_warn "Linux Mint 20 is not officially supported" |
| 183 | + add_repository focal |
| 184 | + ;; |
| 185 | + *) |
| 186 | + make_fail "Linux Mint $release is not officially supported" |
| 187 | + ;; |
| 188 | + esac |
| 189 | + ;; |
| 190 | + elementary*os|elementary) |
| 191 | + case $release in |
| 192 | + 7*) |
| 193 | + make_warn "Elementary OS 7 is not officially supported" |
| 194 | + add_repository jammy |
| 195 | + ;; |
| 196 | + *) |
| 197 | + make_fail "Elementary OS $release is not officially supported" |
| 198 | + ;; |
| 199 | + esac |
| 200 | + ;; |
| 201 | + pop) |
| 202 | + case $codename in |
| 203 | + artful|cosmic|disco|eoan|bionic) |
| 204 | + make_fail "Pop!_OS $codename is not officially supported" |
| 205 | + ;; |
| 206 | + focal|jammy) |
| 207 | + make_warn "Pop!_OS $codename is not officially supported" |
| 208 | + add_repository $codename |
| 209 | + ;; |
| 210 | + *) |
| 211 | + make_warn "Pop!_OS $codename is not officially supported" |
| 212 | + make_warn "Trying to install package for Pop!_OS ${LATEST_SUPPORTED_UBUNTU_CODENAME}" |
| 213 | + add_repository ${LATEST_SUPPORTED_UBUNTU_CODENAME} |
| 214 | + ;; |
| 215 | + esac |
| 216 | + ;; |
| 217 | + *) |
| 218 | + make_fail "$distro is not supported :(" |
| 219 | + ;; |
| 220 | +esac |
| 221 | + |
| 222 | +add_key |
| 223 | +make_install web-eid |
| 224 | + |
| 225 | +echo |
| 226 | +echo "Thank you for using Estonian ID card!" |
| 227 | +read -p "Would you like to read instructions on how to configure browsers for using ID-card? (Y/n): " instructions |
| 228 | +case $instructions in |
| 229 | + [Yy]*|"" ) xdg-open "https://www.id.ee/en/article/ubuntu-id-software-installation-updating-and-removal/#removing-mozilla-firefox";; |
| 230 | + * ) ;; |
| 231 | +esac |
0 commit comments