# 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
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
}
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"
}
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
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."
}
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:
running_version=$( uname -v )
log "Running kernel: $running_release $running_version"
- if grep -q "$running_release .* $running_version" $default_kernel; then
+ if [ "$kernel_package" != "${kernel_package#linux-image-3.2.0-}" ] ||
+ grep -q "$running_release .* $running_version" $default_kernel
+ then
log "Latest kernel version is running."
return 1
else
# 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
}
local hostname domain config_new memtotal memlimit
# restore simple configs
- if pkg ntp-cn && pkg ntp lt 1:4.2.6.p2+dfsg-1+b1; then
+ if pkg ntp-cn && pkg ntp lt 1:4.2.6.p5+dfsg-2; then
if restore_file /etc/ntp.conf; then
postupgrade_reconfigure ntp-cn
fi
fi
- if pkg kernel-2.6-cn && pkg procps lt 1:3.2.8-9; then
- if restore_file /etc/sysctl.conf; then
- postupgrade_reconfigure kernel-2.6-cn
- fi
- fi
-
- if pkg kernel-2.6-cn && pkg libpam-modules lt 1.1.1-6.1; then
- if restore_file /etc/security/limits.conf; then
- postupgrade_reconfigure kernel-2.6-cn
- fi
- fi
-
- if pkg vsftpd-cn && pkg vsftpd lt 2.3.2-3+squeeze2; then
+ if pkg vsftpd-cn && pkg vsftpd lt 2.3.5-3; then
if restore_file /etc/vsftpd.conf; then
postupgrade_reconfigure vsftpd-cn
fi
fi
- if pkg squirrelmail-cn && pkg squirrelmail lt 2:1.4.21-2; then
- if restore_file /etc/squirrelmail/apache.conf; then
- postupgrade_reconfigure squirrelmail-cn
+ if pkg amavisd-cn && pkg amavisd-new lt 1:2.7.1-2; then
+ if restore_file /etc/cron.d/amavisd-new; then
+ rm -f /etc/cron.d/amavisd-new.$backup_ext
+ postupgrade_reconfigure amavisd-cn
fi
fi
- if pkg spamassassin-cn && pkg spamassassin lt 3.3.1-1; then
- if restore_file /etc/spamassassin/v310.pre; then
- postupgrade_reconfigure spamassassin-cn
+ if pkg ossec-hids lt 2.7-1; then
+ if restore_file /var/ossec/rules/local_rules.xml; then
+ postupgrade_reconfigure ossec-hids-cn
fi
fi
- if pkg amavisd-cn && pkg amavisd-new lt 1:2.6.4-3; then
- if restore_file /etc/cron.daily/amavisd-new; then
- rm -f /etc/cron.daily/amavisd-new.$backup_ext
- postupgrade_reconfigure amavisd-cn
- fi
-
- if restore_file /etc/amavis/conf.d/15-av_scanners; then
- rm -f /etc/amavis/conf.d/15-av_scanners.$backup_ext
- postupgrade_reconfigure amavisd-cn
+ if pkg sasl2-bin lt 2.1.25.dfsg1-6+deb7u1; then
+ if restore_file /etc/default/saslauthd; then
+ postupgrade_reconfigure postfix-cn
fi
fi
- if pkg amavisd-cn lt 3:2.6.5; then
- restore_file /etc/init.d/amavisd-cn
- rm -f /etc/init.d/amavisd-cn.$backup_ext
- fi
-
- if pkg console-tools lt 1:0.2.3dbs-69.1; then
- restore_file /etc/console-tools/config
- fi
-
- if pkg base-files lt 6.0squeeze2; then
+ if pkg base-files lt 7.1wheezy2; then
restore_file /etc/issue
restore_file /etc/issue.net
fi
- if pkg slapd lt 2.4.23-7.2; then
- restore_file /etc/default/slapd
- fi
-
- # dovecot won't start with these options
- if pkg dovecot-cn && pkg dovecot-common lt 1:1.2.15-7; then
- sed -i 's/^\( *\)\(sieve\(_storage\)\?=.*\)/\1#\2/' \
- /etc/dovecot/dovecot.conf
- fi
-
# check if monitrc is template based
if [ -e /etc/monit/monitrc ]; then # monit is removed at this point
# regenerate config from template
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
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 () {
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
- # start new packages
- /etc/init.d/amavisd-cn restart
-}
-
-# handle freerdius upgrade
-upgrade_freeradius () {
- local password
-
- pkg freeradius-aai lt 2.1.12~srce1 || return 0
-
- # aai team prevents a normal upgrade
- cp -av /etc/freeradius /etc/freeradius.$backup_ext
- pkgrm freeradius-aai freeradius-ldap freeradius
- rm -rf /etc/freeradius/certs
- pkgadd freeradius-aai
-
- # sync localhost passwords
- if pkg libpam-radius-auth && [ -f "/etc/pam_radius_auth.conf" ]; then
- pkgadd libpam-radius-auth
- password=$(
- sed -n '/^[[:space:]]*client[[:space:]]\+localhost/,/^[[:space:]]*}/ { /^[[:space:]]*secret[[:space:]]*=[[:space:]]*\([^[:space:]]*\)/s//\1/p }' /etc/freeradius/clients.conf
- )
- if [ "$password" ] \
- && ! grep -q "^127.0.0.1\(:[[:digit:]]\+\)\?[[:space:]]\+$password[[:space:]]\+" \
- /etc/pam_radius_auth.conf
- then
- sed -i.$backup_ext "s/^\(127.0.0.1\(:[[:digit:]]\+\)\?[[:space:]]\+\)[^[:space:]]\+\(.*\)/\1$password\3/" /etc/pam_radius_auth.conf
+ # 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
+ ### 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
}
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() {
+ # 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
+ if [ ! -f /etc/dovecot/dovecot.conf.$backup_ext ]; then
+ mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.$backup_ext
+ cp /usr/share/dovecot/dovecot.conf /etc/dovecot/dovecot.conf
+ fi
+
+ # copy SSL certificates
+ OLD_SSL_CERT="/etc/ssl/certs/dovecot.pem"
+ OLD_SSL_KEY="/etc/ssl/private/dovecot.pem"
+ SSL_CERT="/etc/dovecot/dovecot.pem"
+ SSL_KEY="/etc/dovecot/private/dovecot.pem"
+ if [ -f $OLD_SSL_CERT -a -f $OLD_SSL_KEY -a ! -f $SSL_CERT -a ! -f $SSL_KEY ]; then
+ if [ ! -e /etc/dovecot/private ]; then
+ install -d -o root -g root -m0700 /etc/dovecot/private
+ fi
+
+ cp -av $OLD_SSL_CERT $SSL_CERT
+ cp -av $OLD_SSL_KEY $SSL_KEY
+
+ chown root:dovecot $SSL_CERT
+ chmod 0644 $SSL_CERT
+ chown root:dovecot $SSL_KEY
+ chmod 0600 $SSL_KEY
+ fi
+
+ # install new version and restore local changes
+ pkgadd dovecot-core
+ 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
+}
+
# upgrade bind separately so DNS is not down for too long
# or breaks postinst scripts of other cn packages that depend on
# working resolver
pkgadd bind9-cn
}
+# handle fail2ban upgrade due to error:
+# trying to overwrite '/etc/fail2ban/filter.d/dovecot.conf', which is also in package fail2ban-cn
+upgrade_fail2ban() {
+ if pkg fail2ban-cn && dpkg -L fail2ban-cn | grep -qF dovecot.conf; then
+ pkgrm fail2ban-cn
+ pkgadd fail2ban
+ pkgadd fail2ban-cn
+ fi
+}
+
+# manual upgrade of mailman to avoid two copies of mailman running
+# first started by python upgrade and second started by mailman itself
+upgrade_mailman() {
+ if pkg mailman-cn lt 2:2.1.15~cn0; then
+ /etc/init.d/mailman stop || true
+ pkgadd python
+ pkgadd mailman mailman-cn
+ 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
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
dpkg-reconfigure munin-cn
}
-# try not to overwrite user modified issue files
-fix_issue () {
- if cmp /etc/issue $cnup/files/etc/issue.expect.new >/dev/null; then
- cp -av /etc/issue /etc/issue.$backup_ext
- cat > /etc/issue <<EOF
-Debian GNU/Linux 6.0 (CARNet Debian 6.0) \\n \\l
-
-EOF
- fi
-
- if cmp /etc/issue.net $cnup/files/etc/issue.net.expect.new >/dev/null; then
- cp -av /etc/issue.net /etc/issue.net.$backup_ext
- cat > /etc/issue.net <<EOF
-Debian GNU/Linux 6.0 (CARNet Debian 6.0) %h
-EOF
- fi
-}
-
check_archives_space() {
local available_disk_space archives_size
available_disk_space=$(free_space /var/cache/apt/archives/)
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: \
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