Sve brisanje se događa u remove_bloat()
[carnet-upgrade.git] / src / functions.sh
index 2fbcacd..2b4d743 100644 (file)
@@ -1,5 +1,11 @@
 # Ivan 'ico' Rako <irako@srce.hr>
 # Zoran 'jelly' Dzelajlija <jelly@srce.hr>
+# Zeljko Boros <zelja@carnet.hr>
+
+PHPVER="7.4"
+MDB="10.5"
+PINFILE="/etc/apt/preferences.d/99-carnet"
+
 
 notice () {
   LC_MESSAGES=hr_HR dialog --backtitle "$title" --msgbox "$*" 18 75
@@ -13,6 +19,14 @@ first_warning () {
   fi
 }
 
+second_warning () {
+  LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$msg_second_warning" 18 75
+  if [ $? -ne 0 ]; then
+    log "Upgrade canceled."
+    exit 0
+  fi
+}
+
 pkg() {
   local version
   dpkg -l "$1" 2> /dev/null | egrep -q "^.i" || return 1
@@ -154,6 +168,17 @@ remove_x() {
 }
 
 remove_bloat() {
+### zelja 2023-07-06
+tempdelfile=$(mktemp /tmp/tempdelfile.XXXX)
+
+for a in $bloats; do echo apt-get -qq -y remove $a 2\> /dev/null ; done > $tempdelfile
+
+/bin/bash $tempdelfile
+rm $tempdelfile
+
+return 0
+
+
   local to_remove add_this i j n text to_show cmd tmpfile installed
   local update_selections pkgs_to_deselect pkgs_to_remove oldifs pkglist
   text="$msg_remove_bloat"
@@ -212,6 +237,9 @@ remove_bloat() {
 }
 
 remove_cn_bloat() {
+### Sve obrisano u remove_bloat()
+return 0
+
   local installed pkg cn_pkgs dialog_list selection cn_del to_del del_pkgs
 
   # get installed packages
@@ -338,7 +366,7 @@ Doslo je do greske prilikom izvrsavanja akcije '$action'. Detalje problema moguc
 Da bi dovrsili zapocete operacije nad paketima pokrenite:
 
   # dpkg --configure -a
-  # apt-get -f install
+  # apt -f install
 
 Nakon toga ponovno pozovite carnet-upgrade skriptu."
 }
@@ -367,7 +395,7 @@ check_upgrade () {
 
   if [ "$upgrade" ]; then
     notice "
-Prije prelaska na Debian Squeeze potrebno je napraviti nadogradnju ovih paketa:
+Prije prelaska na Debian bullseye potrebno je napraviti nadogradnju ovih paketa:
   $upgrade
 
 Pokrenite:
@@ -530,16 +558,18 @@ create_sources_list () {
 
         # backup old version
         if [ -f $sl -a ! -f $sl.$backup_ext ]; then
-            cp -av $sl $sl.$backup_ext
+            cp -v $sl $sl.$backup_ext
         fi
 
         # install new version
-        cp -av $sl_new $sl
+        cp -v $sl_new $sl
         notice "Novi sadrzaj datoteke /etc/apt/sources.list:
 
 `cat /etc/apt/sources.list`"
     fi
 
+    # make sure permissions are correct
+    chmod 0644 $sl
     rm $sl_new
 }
 
@@ -744,6 +774,11 @@ restore_configs () {
   fi
 }
 
+# load various debconf defaults
+debconf_preload () {
+  echo libc6 libraries/restart-without-asking boolean true | debconf-set-selections
+}
+
 # temporary disable listchanges packages to reduce clutter during upgrade
 apt_listchanges () {
   local file command=$1
@@ -861,17 +896,12 @@ pkgupgrade () {
   fi
 }
 
-# make a silent upgrade to new libc6
-upgrade_libc () {
-  DEBIAN_FRONTEND=noninteractive pkgupgrade libc6 libc6-dev tzdata
-}
-
-# upgrade apache2/php5
+# upgrade apache2/php
 upgrade_apache2 () {
-  pkgrm apache-common # prevents installation of apache2-suexec
-  pkgrm php5-suhosin # not available for wheezy
-  pkgupgrade libapache2-mod-php5 php5-cli php5-cn apache2-cn \
-    php5-odbc
+### ne treba od etcha
+### pkgrm apache-common # prevents installation of apache2-suexec
+  pkgupgrade libapache2-mod-php$PHPVER php$PHPVER-cli php$PHPVER-cn apache2-cn \
+    php$PHPVER-odbc mod-security-cn
 }
 
 upgrade_amavis () {
@@ -884,19 +914,37 @@ upgrade_amavis () {
     fi
   done
 
+  # workaround for insserv complaining
+  if [ -x /sbin/insserv ]; then
+    if [ -r /etc/init.d/amavis.amavisd-new ]; then
+      /sbin/insserv amavis.amavisd-new
+    fi
+  fi
+
   # install new packages
   pkgadd amavisd-cn amavisd-new
 
+  # workaround for insserv complaining
+  if [ -x /sbin/insserv ]; then
+    if [ -r /etc/init.d/amavis.amavisd-new ]; then
+      /sbin/insserv amavis.amavisd-new
+    fi
+  fi
+
   # start new packages
-  /etc/init.d/amavisd-cn restart
+  ### By zelja, nema vise amavisd-cn, vjerujemo systemd-u
+  ### /etc/init.d/amavisd-cn restart
+  /etc/init.d/amavis restart
 }
 
-# handle mysql 5.0 to 5.1 upgrade
+# handle mysql upgrade
 upgrade_mysql () {
-  if pkg mysql-server || pkg mysql-server-5.1; then
-     pkgadd mysql-server
-     dpkg -P mysql-server-5.1
-     /etc/init.d/mysql restart
+  if pkg mysql-server || pkg mysql-server-5.5 || \
+     pkg mariadb-server || pkg mariadb-server-$MDB
+  then
+     pkgadd default-mysql-server
+     dpkg -P mysql-server mysql-server-5.5 mariadb-server-$MDB
+     service mysql restart
   fi
 }
 
@@ -916,9 +964,74 @@ upgrade_postfix () {
   fi
 }
 
+
+# pinning za baculu da se ne nadogradi sa 7.4.4 na 9.* u busteru
+# istu stvar radi i bacula-cn.postinst
+
+fix_bacula() {
+
+   echo "CN: Dodajem pinning bacule na inačicu 7.4.4..."
+
+   test -f $PINFILE || touch $PINFILE
+
+   cp-update bacula-cn $PINFILE <<EOF
+   
+Package: bacula-fd
+Pin: version 7.4.4*
+Pin-Priority: 1001
+
+Package: bacula-common
+Pin: version 7.4.4*
+Pin-Priority: 1001
+
+Package: bacula-console
+Pin: version 7.4.4*
+Pin-Priority: 1001
+
+EOF
+
+}
+
+# pinning za ocsinventory da se ne nadogradi sa 2.0.5 na 2.4.2
+
+fix_ocsinventory() {
+
+   echo "CN: Dodajem pinning ocsinventory-agenta na inačicu 2.0.5..."
+   test -f $PINFILE || touch $PINFILE
+
+   cp-update ocsinventory-agent-cn $PINFILE <<EOF
+
+Package: ocsinventory-agent
+Pin: version 2:2.0.5*
+Pin-Priority: 1001
+
+EOF
+
+}
+
 # upgrade the IMAP server
 upgrade_dovecot() {
-  if [ ! -f /etc/dovecot/conf.d/95-local ]; then
+ # Funkcija koju je dodao Valentin da popravi propuste u dovecot-cn
+ # Mičem zaostale konfiguracije iz conf.d i izlazim prije njegovih akcija jer ubiju certifikate
+
+ test -f /etc/dovecot/conf.d/95-cn6-upgrade.conf && mv /etc/dovecot/conf.d/95-cn6-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn7-upgrade.conf && mv /etc/dovecot/conf.d/95-cn7-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn8-upgrade.conf && mv /etc/dovecot/conf.d/95-cn8-upgrade.conf* /var/backups || true
+ test -f /etc/dovecot/conf.d/95-cn9-upgrade.conf && mv /etc/dovecot/conf.d/95-cn9-upgrade.conf* /var/backups || true
+   
+ return 0
+
+# ostatak se nikada ne izvrši
+
+  local local_conf=/etc/dovecot/conf.d/95-${backup_ext}.conf
+
+  if [ -f /etc/dovecot/conf.d/95-local -a ! -f $local_conf ]; then
+     mv /etc/dovecot/conf.d/95-local $local_conf
+     sed -i 's/\/usr\/lib\/dovecot\/modules\/imap/\/usr\/lib\/dovecot\/modules/g' $local_conf
+     /etc/init.d/dovecot restart
+  fi
+
+  if [ ! -f $local_conf ]; then
      pkgrm dovecot-cn
 
      # restore config
@@ -948,7 +1061,8 @@ upgrade_dovecot() {
 
      # install new version and restore local changes
      pkgadd dovecot-core
-     doveconf -n -c /etc/dovecot/dovecot.conf.$backup_ext > /etc/dovecot/conf.d/95-local
+     doveconf -n -c /etc/dovecot/dovecot.conf.$backup_ext > $local_conf
+     sed -i 's/\/user\/lib\/dovecot\/modules\/imap/\/usr\/lib\/dovecot\/modules/g' $local_conf
 
      pkgadd dovecot-cn
   fi
@@ -981,6 +1095,19 @@ upgrade_mailman() {
   fi
 }
 
+# manual upgrade of kernel due to new packet name
+upgrade_kernel() {
+  if pkg kernel-2.6-cn; then
+    pkgrm kernel-2.6-cn
+
+    if pkg grub-pc; then
+      pkgadd kernel-cn grub-pc
+    else
+      pkgadd kernel-cn
+    fi
+  fi
+}
+
 get_variable () {
   local name=$1 file=$2 val
 
@@ -992,6 +1119,17 @@ get_variable () {
   echo $val
 }
 
+# switch to rsyslog
+upgrade_syslog() {
+  # libc6-dev prevents upgrade
+  if pkg libc6-dev; then
+     pkgrm libc6-dev
+  fi
+
+  pkgadd rsyslog
+  dpkg -P sysklogd klogd > /dev/null 2>&1
+}
+
 # restore munin configs for silent upgrade
 upgrade_munin () {
   local config backup hostname domain
@@ -1043,12 +1181,12 @@ check_archives_space() {
   fi
 }
 
-# calculate the list of linux-image packages from kernel-2.6-cn dependencies
+# calculate the list of linux-image packages from kernel-cn dependencies
 get_cn_kernels() {
   local cn_kernels linux_images metapkg pkg
 
   cn_kernels=
-  linux_images=$(apt-cache show kernel-2.6-cn | grep ^Depends: \
+  linux_images=$(apt-cache show kernel-cn | grep ^Depends: \
     | grep -o 'linux-image[^, ]*')
   for metapkg in $linux_images; do
     pkg=$(apt-cache show $metapkg | grep ^Depends: \
@@ -1080,10 +1218,10 @@ check_kernel_space() {
   log "Kernel package: $pkg"
   log "Kernel size: ${kernel_size}MB"
 
-  if LC_ALL=C apt-get -s install kernel-2.6-cn 2>/dev/null \
-     | grep -q '^kernel-2.6-cn is already the newest version.$'
+  if LC_ALL=C apt-get -s install kernel-cn 2>/dev/null \
+     | grep -q '^kernel-cn is already the newest version.$'
   then
-     log "Not checking free space in /: kernel-2.6-cn already installed"
+     log "Not checking free space in /: kernel-cn already installed"
      return
   fi