if [ "$upgrade" ]; then
notice "
-Prije prelaska na Debian Etch potrebno je napraviti upgrade ovih paketa:
+Prije prelaska na Debian Etch potrebno je napraviti nadogradnju ovih paketa:
$upgrade
Pokrenite:
# funkcija utrpa ispravan sources.list
create_sources_list () {
- [ -f /etc/apt/sources.list -a ! -f /etc/apt/sources.list.cn4-upgrade ] && mv /etc/apt/sources.list /etc/apt/sources.list.cn4-upgrade
- cp /usr/share/carnet-upgrade/files/etc/apt/sources.list /etc/apt
- notice "Novi sadrzaj datoteke /etc/apt/sources.list:
+ local sl sl_new
+ sl=/etc/apt/sources.list
+ sl_new=/usr/share/carnet-upgrade/files/etc/apt/sources.list
+
+ # check if already installed
+ if ! cmp $sl $sl_new >/dev/null; then
+
+ # backup old version
+ if [ -f $sl -a ! -f $sl.$backup_ext ]; then
+ cp -a $sl $sl.$backup_ext
+ fi
+
+ # install new version
+ cp $sl_new $sl
+ notice "Novi sadrzaj datoteke /etc/apt/sources.list:
`cat /etc/apt/sources.list`"
+ fi
}
fi
}
-# backup_slapd_db
+# backup ldap database
backup_slapd_db () {
- local ldap_backup=/var/backups/slapcat.cn4-upgrade
+ local ldap_backup=/var/backups/slapcat.$backup_ext
+ local old_umask result
if [ ! -f $ldap_backup ]; then
[ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius stop || true
if [ -x /etc/init.d/slapd -a -d /var/lib/ldap ]; then
/etc/init.d/slapd stop || true
- if slapcat -l $ldap_backup; then
+ old_umask=`umask`
+ umask 0077 # protect the backup file
+ slapcat -l $ldap_backup
+ result=$?
+ umask $old_umask
+ /etc/init.d/slapd start || true
+
+ if [ "$result" eq 0 ]; then
log "$ldap_backup created"
notice "Napravljen backup slapd baze u $ldap_backup."
+ else
+ log "$ldap_backup was not created"
+ notice "Backup slapd baze u $ldap_backup nije uspio."
+ exit 1
fi
- /etc/init.d/slapd start || true
fi
[ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius start || true
else
- log "slapd backup already at $ldap_backup, skipping"
+ log "slapd backup already at $ldap_backup, skipping."
notice "Backup slapd baze u $ldap_backup vec postoji!"
fi
}
# backup etc direktorija
backup_etc_dir () {
- local etc_backup=/var/backups/etc.cn4-upgrade.tar.gz
+ local etc_backup=/var/backups/etc.$backup_ext.tar.gz
+ local old_umask
if [ ! -f $etc_backup ]; then
+ old_umask=`umask`
+ umask 0077 # protect the backup file
+
if tar cfz $etc_backup /etc 2> /dev/null; then
log "$etc_backup created"
notice "Napravljen backup /etc direktorija u $etc_backup."
+ else
+ log "$etc_backup was not created"
+ notice "Backup /etc direktorija u $etc_backup nije uspio."
+ exit 1
fi
+ umask $old_umask
else
log "/etc backup already present in $etc_backup, skipping."
notice "Backup /etc direktorija u $etc_backup vec postoji!"
# fixaj /etc/default/raid2
fix_etc_default_raid2 () {
if [ -f /etc/default/raid2 ]; then
- sed "s/^AUTOSTART.*/AUTOSTART=true/g" /etc/default/raid2 > /etc/default/raid2.cn4-upgrade.$$
- chown --reference=/etc/default/raid2 /etc/default/raid2.cn4-upgrade.$$
- chmod --reference=/etc/default/raid2 /etc/default/raid2.cn4-upgrade.$$
+ sed "s/^AUTOSTART.*/AUTOSTART=true/g" /etc/default/raid2 > /etc/default/raid2.$backup_ext.$$
+ chown --reference=/etc/default/raid2 /etc/default/raid2.$backup_ext.$$
+ chmod --reference=/etc/default/raid2 /etc/default/raid2.$backup_ext.$$
- if ! cmp -s /etc/default/raid2.cn4-upgrade.$$ /etc/default/raid2; then
+ if ! cmp -s /etc/default/raid2.$backup_ext.$$ /etc/default/raid2; then
log "Fixed /etc/default/raid2 AUTOSTART option."
- mv /etc/default/raid2.cn4-upgrade.$$ /etc/default/raid2
+ mv /etc/default/raid2.$backup_ext.$$ /etc/default/raid2
else
- rm /etc/default/raid2.cn4-upgrade.$$
+ rm /etc/default/raid2.$backup_ext.$$
fi
fi
}
# restore original config file (if the new package version is not
# installed already)
restore_config () {
- local file file_backup
+ local file file_backup file_orig
local pkg=$1 ver=$2
+ local old_umask
shift 2
# check package version
pkg $pkg lt $ver || return 0
+ # create new files safely
+ old_umask=`umask`
+ umask 0077
+
# restore package files
for file in $*; do
- file_backup=$file.cn4-upgrade
+ file_orig=/usr/share/carnet-upgrade/files/$file
+ file_backup=$file.$backup_ext
+
+ if cmp $file_orig $file >/dev/null; then
+ continue # original file is already in place
+ fi
if [ -e $file -a ! -e $file_backup ]; then
# backup file
# install original
log Restoring config file $file
- cp /usr/share/carnet-upgrade/files/$file $file
+ cp $file_orig $file
+ chown --reference $file_backup $file
+ chmod --reference $file_backup $file
fi
done
+
+ umask $old_umask
}
# restore modified config to their package defaults
/etc/cron.daily/aide \
/etc/default/aide;
do
- if [ ! -e "$file.cn4-upgrade" ]; then
- mv "$file" "$file.cn4-upgrade"
+ if [ ! -e "$file.$backup_ext" ]; then
+ mv "$file" "$file.$backup_ext"
fi
rm -f "$file"
fi
}
+# temporary disable listchanges packages to reduce clutter during upgrade
+apt_listchanges () {
+ local file command=$1
+
+ for file in /etc/apt/apt.conf.d/20listchanges \
+ /etc/apt/apt.conf.d/20listchanges-cn
+ do
+ case $command in
+ disable)
+ if [ -f $file ]; then
+ dpkg-divert --local --rename --divert $file.$backup_ext \
+ --add $file || true
+ fi
+ ;;
+
+ enable)
+ if [ -f $file.$backup_ext ]; then
+ dpkg-divert --remove $file || true
+ fi
+ ;;
+ esac
+ done
+}
+
# make a silent installation of carnet and srce keyrings
install_keyrings () {
pkgadd carnet-keyring srce-keyring
update
}
+# remove skey (not supported anymore)
+remove_skey () {
+ pkgrm skey-cn libpam-skey
+
+ if getent group skey > /dev/null; then
+ groupdel skey || true
+ log "groupdel skey"
+ fi
+}
+
# make a silent upgrade to new libc6
upgrade_libc () {
DEBIAN_FRONTEND=noninteractive pkgadd libc6
mkdir -p /etc/apache2
touch /etc/apache2/httpd.conf
+ # register cn changes in modules.conf
+ modules_conf=/etc/apache/modules.conf
+ if [ ! -e "$modules_conf.$backup_ext" ]; then
+ cp -a "$modules_conf" "$modules_conf.$backup_ext"
+ ucf $modules_conf $modules_conf
+ fi
+
# temporary remove packages conflicting with apache2
delpkg=""
for p in aosi-aai aosi-www-aai \
php4-cn php4-odbc php4-xslt \
squirrelmail-cn; do
- pkg p && delpkg="$delpkg $p"
+
+ # remember installed packages
+ if pkg $p; then
+ delpkg="$delpkg $p"
+ fi
done
- eval pkgrm $delpkg
+
+ # remove problematic stuff
+ if [ "$delpkg" ]; then
+ eval apt-get --yes remove $delpkg
+ fi
+
+ # remove old apache
pkgrm apache apache-common
# install new packages
# move old config aside
local conf=/etc/amavis/amavisd.conf
- if [ -e $conf -a ! -e $conf.cn4-upgrade ]; then
- mv $conf $conf.cn4-upgrade
+ if [ -e $conf -a ! -e $conf.$backup_ext ]; then
+ mv $conf $conf.$backup_ext
fi
# install new packages