From 317f744d28adc76381335093f10faa4d43ad9a53 Mon Sep 17 00:00:00 2001 From: Matthias Lisin Date: Fri, 10 Jan 2020 23:40:56 +0100 Subject: [PATCH 1/4] Add massive change without any changelog --- linux_mint.sh | 217 +++++++++++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 92 deletions(-) mode change 100644 => 100755 linux_mint.sh diff --git a/linux_mint.sh b/linux_mint.sh old mode 100644 new mode 100755 index c5c92db..36ee598 --- a/linux_mint.sh +++ b/linux_mint.sh @@ -3,84 +3,147 @@ ### # Set variables ### +export DEBIAN_FRONTEND=noninteractive + +# Color of prefix (>>>) to distinguish user and root echos +color_prefix=32 # green # Linux distro script_distro='Linux Mint 19.x' # Additional packages -more_packages="" +more_packages=( + # Graphics + cheese + inkscape + + # Office + libreoffice + + # Security + keepassxc + + # Games + 0ad + beneath-a-steel-sky + billard-gl + blobby + blockout2 + flight-of-the-amazon-queen + freeciv + frozen-bubble + gbrainy + gnome-games + gweled + hedgewars + lincity-ng + lure-of-the-temptress + openttd + pingus + pipewalker + pokerth + supertux + supertuxkart + teeworlds + wesnoth + widelands + + # Gaming platforms + playonlinux + steam + wine-stable + winetricks + + # System management + gparted + + # Tools + hardinfo + shutter + vim + + # Management + calibre + + # Knowledge + goldendict + ubuntu-edu-preschool + ubuntu-edu-primary + ubuntu-edu-secondary + ubuntu-edu-tertiary +) ### # Functions ### -function _addToDefaultPackages() { - more_packages="${more_packages} ${1}" +is_root() { + [[ $UID -eq 0 ]] } +# $*: message to echo +e() { + printf "\e[%sm>>>\e[0m %s\n" "$color_prefix" "$*" +} + +# It's a pain to stop (ctrl+c, kill) execution with all the Python applications +# so we catch SIGINT and SIGTERM and exit immediately +handle_signal() { + e "Ausführung abgebrochen! Script wird beendet..." + exit 1 +} +trap handle_signal SIGINT SIGTERM + +pkg() { + apt-get install "$@" --quiet --yes +} ### -# Define additional software packages +# Root setup ### +if is_root; then + color_prefix=31 # red + if [[ $1 != "root-setup" ]]; then + e "Dieses Script sollte nicht direkt als Root ausgeführt werden!" >&2 + e "Privilegien werden automatisch eskaliert sobald es notwendig ist." >&2 + exit 1 + fi -# Graphics -_addToDefaultPackages "cheese" -_addToDefaultPackages "inkscape" + e "Automatische Installation empfohlener Pakete aktivieren ..." + sed -i 's/false/true/g' /etc/apt/apt.conf.d/00recommends -# Office -_addToDefaultPackages "libreoffice" + e "Besten Spiegelserver für '${script_distro}' auswählen ..." + mint-switch-to-local-mirror -# Security -_addToDefaultPackages "keepassxc" + e "Paketquellen aktualisieren ..." + apt update --yes --quiet -# Games -_addToDefaultPackages "0ad" -_addToDefaultPackages "beneath-a-steel-sky" -_addToDefaultPackages "billard-gl" -_addToDefaultPackages "blobby" -_addToDefaultPackages "blockout2" -_addToDefaultPackages "flight-of-the-amazon-queen" -_addToDefaultPackages "freeciv" -_addToDefaultPackages "frozen-bubble" -_addToDefaultPackages "gbrainy" -_addToDefaultPackages "gnome-games" -_addToDefaultPackages "gweled" -_addToDefaultPackages "hedgewars" -_addToDefaultPackages "lincity-ng" -_addToDefaultPackages "lure-of-the-temptress" -_addToDefaultPackages "openttd" -_addToDefaultPackages "pingus" -_addToDefaultPackages "pipewalker" -_addToDefaultPackages "pokerth" -_addToDefaultPackages "supertux" -_addToDefaultPackages "supertuxkart" -_addToDefaultPackages "teeworlds" -_addToDefaultPackages "wesnoth" -_addToDefaultPackages "widelands" + e "System aktualisieren (apt) ..." + apt full-upgrade --yes --quiet -# Gaming platforms -_addToDefaultPackages "playonlinux" -_addToDefaultPackages "steam" -_addToDefaultPackages "wine-stable" -_addToDefaultPackages "winetricks" + e "System aktualisieren (mintupdate-cli) ..." + mintupdate-cli --yes upgrade -# System management -_addToDefaultPackages "gparted" + e "Proprietäre Treiber installieren (sofern verfügbar) ..." + ubuntu-drivers autoinstall -# Tools -_addToDefaultPackages "hardinfo" -_addToDefaultPackages "shutter" -_addToDefaultPackages "vim" + e "Zusätzliche Software installieren ..." + pkg "${more_packages[@]}" -# Management -_addToDefaultPackages "calibre" + e "Sprachpakete 'ar' und 'fa' installieren ..." + pkg language-pack-ar language-pack-gnome-ar language-pack-fa language-pack-gnome-fa -# Knowledge -_addToDefaultPackages "goldendict" -_addToDefaultPackages "ubuntu-edu-preschool" -_addToDefaultPackages "ubuntu-edu-primary" -_addToDefaultPackages "ubuntu-edu-secondary" -_addToDefaultPackages "ubuntu-edu-tertiary" + e "Sprachunterstützung vervollständigen ..." + pkg language-selector-common "$(check-language-support)" + pkg hunspell-de-at hunspell-de-ch hunspell-de-de openoffice.org-hyphenation + e "Unnötige Pakete entfernen und Cache bereinigen ..." + apt clean --yes --quiet + apt autoremove --yes --quiet + + e "Root Setup abgeschlossen." + # It's very important to exit here. We don't want to have run as root past this point + exit +fi ### # Greeting @@ -93,58 +156,28 @@ echo "\ ### # Maintainer: Computertruhe e. V. # Website: https://computertruhe.de/ -# Version: 0.1.4 +# Version: 0.2.0 # Repo: https://codeberg.org/Computertruhe/computertruhe-setup # Distro: ${script_distro} ### " -echo ">>> Starte initiales Setup für Rechner mit frisch installiertem \"${script_distro}\" ..." - +e "Starte initiales Setup für Rechner mit frisch installiertem '${script_distro}' ..." ### # Automatic installation ### -echo ">>> Automatische Installation empfohlener Pakete aktivieren ..." -sudo sed -i 's/false/true/g' /etc/apt/apt.conf.d/00recommends +e "Script wird als Root ausgeführt für privilegierte Aufgaben" +sudo ./"$0" root-setup -echo ">>> Besten Spiegelserver für \"${script_distro}\" auswählen ..." -mint-switch-to-local-mirror - -echo ">>> Paketquellen aktualisieren ..." -apt update - -echo ">>> System aktualisieren (apt) ..." -DEBIAN_FRONTEND=noninteractive apt full-upgrade --yes - -echo ">>> System aktualisieren (mintupdate-cli) ..." -DEBIAN_FRONTEND=noninteractive mintupdate-cli upgrade --yes - -echo ">>> Proprietäre Treiber installieren (sofern verfügbar) ..." -ubuntu-drivers autoinstall - -echo ">>> Zusätzliche Software installieren ..." -DEBIAN_FRONTEND=noninteractive apt install ${more_packages} --yes - -echo ">>> Sprachpakete 'ar' und 'fa' installieren ..." -apt install language-pack-ar language-pack-gnome-ar language-pack-fa language-pack-gnome-fa --yes -echo ">>> Sprachunterstützung vervollständigen ..." -apt install language-selector-common --yes -apt install $(check-language-support) --yes -apt install hunspell-de-at hunspell-de-ch hunspell-de-de openoffice.org-hyphenation --yes - -echo ">>> Richte arabisches und persisches Tastatur-Layout ein..." +e "Richte arabisches und persisches Tastatur-Layout ein..." gsettings set org.gnome.libgnomekbd.keyboard layouts "['de', 'ara', 'ir']" -echo ">>> Ändere Anzeigeoptionen für die Tastatur auf die richtigen Werte..." + +e "Ändere Anzeigeoptionen für die Tastatur auf die richtigen Werte..." gsettings set org.cinnamon.desktop.interface keyboard-layout-show-flags false gsettings set org.cinnamon.desktop.interface keyboard-layout-use-upper true gsettings set org.cinnamon.desktop.interface keyboard-layout-prefer-variant-names true -echo ">>> Unnötige Pakete entfernen ..." -apt clean -apt autoremove --yes - - ### # Finalisation ### -echo ">>> Initiales Setup beendet." +e "Initiales Setup beendet." From 0ed806753b2569dcab5b05885cf12a3aa74d2e30 Mon Sep 17 00:00:00 2001 From: Matthias Lisin Date: Sat, 11 Jan 2020 00:51:36 +0100 Subject: [PATCH 2/4] Rename more_packages to packages. Move some language packages to packages list. Revert apt-get to apt. Add info about install order --- linux_mint.sh | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/linux_mint.sh b/linux_mint.sh index 36ee598..617d5ab 100755 --- a/linux_mint.sh +++ b/linux_mint.sh @@ -12,7 +12,7 @@ color_prefix=32 # green script_distro='Linux Mint 19.x' # Additional packages -more_packages=( +packages=( # Graphics cheese inkscape @@ -71,6 +71,14 @@ more_packages=( ubuntu-edu-primary ubuntu-edu-secondary ubuntu-edu-tertiary + + # Language support + language-selector-common + openoffice.org-hyphenation + language-pack-ar + language-pack-gnome-ar + language-pack-fa + language-pack-gnome-fa ) ### @@ -94,7 +102,7 @@ handle_signal() { trap handle_signal SIGINT SIGTERM pkg() { - apt-get install "$@" --quiet --yes + apt install "$@" --quiet --yes } ### @@ -127,21 +135,19 @@ if is_root; then ubuntu-drivers autoinstall e "Zusätzliche Software installieren ..." - pkg "${more_packages[@]}" - - e "Sprachpakete 'ar' und 'fa' installieren ..." - pkg language-pack-ar language-pack-gnome-ar language-pack-fa language-pack-gnome-fa + pkg "${packages[@]}" e "Sprachunterstützung vervollständigen ..." - pkg language-selector-common "$(check-language-support)" - pkg hunspell-de-at hunspell-de-ch hunspell-de-de openoffice.org-hyphenation + pkg "$(check-language-support)" + # these packages have to be installed after "$(check-language-support)" + pkg hunspell-de-at hunspell-de-ch hunspell-de-de e "Unnötige Pakete entfernen und Cache bereinigen ..." apt clean --yes --quiet apt autoremove --yes --quiet e "Root Setup abgeschlossen." - # It's very important to exit here. We don't want to have run as root past this point + # It's very important to exit here. We don't want root past this point! exit fi From 59fa5b04c08ebb3ec2d34a5eb2a9ffee04a0d491 Mon Sep 17 00:00:00 2001 From: ml Date: Sat, 11 Jan 2020 05:04:18 +0100 Subject: [PATCH 3/4] Add vlc to packages. Closes #10 --- linux_mint.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/linux_mint.sh b/linux_mint.sh index 617d5ab..a75ed3e 100755 --- a/linux_mint.sh +++ b/linux_mint.sh @@ -65,6 +65,9 @@ packages=( # Management calibre + # Media + vlc + # Knowledge goldendict ubuntu-edu-preschool From effef413457b1a47520553860c622ff2306ff6fc Mon Sep 17 00:00:00 2001 From: ml Date: Sun, 12 Jan 2020 05:59:51 +0100 Subject: [PATCH 4/4] Add EXIT trap, ensure non-interactive upgrade --- linux_mint.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/linux_mint.sh b/linux_mint.sh index a75ed3e..c647a49 100755 --- a/linux_mint.sh +++ b/linux_mint.sh @@ -4,6 +4,7 @@ # Set variables ### export DEBIAN_FRONTEND=noninteractive +DPKG_CFG_FRAGMENT=/etc/dpkg/dpkg.cfg.d/non-interactive # Color of prefix (>>>) to distinguish user and root echos color_prefix=32 # green @@ -102,10 +103,18 @@ handle_signal() { e "Ausführung abgebrochen! Script wird beendet..." exit 1 } + +# always executed on shell exit regardless of reason. for cleanup tasks +handle_exit() { + # Remove temporary dpkg cfg if root + is_root && rm -f "$DPKG_CFG_FRAGMENT" +} + trap handle_signal SIGINT SIGTERM +trap handle_exit EXIT pkg() { - apt install "$@" --quiet --yes + apt install "$@" --yes --quiet } ### @@ -119,6 +128,12 @@ if is_root; then exit 1 fi + # place temporary dpkg configurations to ensure non-interactive upgrade + cat <<'DPKG' >"$DPKG_CFG_FRAGMENT" +force-confold +force-confdef +DPKG + e "Automatische Installation empfohlener Pakete aktivieren ..." sed -i 's/false/true/g' /etc/apt/apt.conf.d/00recommends