1 # Ivan 'ico' Rako <irako@srce.hr>
2 # Zoran 'jelly' Dzelajlija <jelly@srce.hr>
5 LC_MESSAGES=hr_HR dialog --backtitle "$title" --msgbox "$*" 18 75
9 LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$msg_first_warning" 18 75
11 log "Upgrade canceled."
18 dpkg -l "$1" 2> /dev/null | egrep -q "^.i" || return 1
19 [ -z "$2" ] && return 0
20 version=$(dpkg -s "$1" | awk '/^Version:/ {print $2}')
21 dpkg --compare-versions "$version" "$2" "$3" 2>&1 > /dev/null
26 logfile=${logfile:=/var/log/carnet-upgrade.log}
31 echo "$(date +'%Y-%m-%d %H:%M:%S') $*" >> $logfile
40 [ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx
49 [ -e "$i" ] || continue
50 egrep -q "$s" "$i" || continue
51 [ -h "$i" ] && i=$(readlink -f "$i")
52 sed "$sedcmd" "$i" > "$i.dpkg-tmp"
53 chown --reference "$i" "$i.dpkg-tmp"
54 chmod --reference "$i" "$i.dpkg-tmp"
58 if [ "$ret" -eq 0 ]; then
59 log "Done \"$sedcmd\" to $*"
65 [ -n "$*" ] || return 0
66 log "Installing $* ..."
67 apt-get -y$s install $* || {
70 apt-get -y$s install $*
75 [ -n "$*" ] || return 0
77 apt-get -y$s --purge remove $* || {
80 apt-get -y$s --purge remove $*
85 [ -n "$*" ] || return 0
87 apt-get -y$s remove $* || {
90 apt-get -y$s remove $*
96 log "Running apt-get update ..."
97 apt-get -y$s update || {
105 log "Running apt-get download ..."
106 apt-get -dy$s dist-upgrade
110 log "Running upgrade ..."
111 apt-get -y$s upgrade || {
116 log "Running dist-upgrade ..."
117 apt-get -y$s dist-upgrade || {
119 apt-get -y$s dist-upgrade
124 log "Running autoremove ..."
125 apt-get -y$s --purge autoremove || {
132 LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$msg_remove_x" 18 75
133 if [ $? -eq 0 ]; then
134 log "Removing X Window System"
137 log "Skipping X Window System removal"
142 local to_remove add_this i j n text to_show cmd tmpfile installed
143 local update_selections pkgs_to_deselect pkgs_to_remove oldifs pkglist
144 text="$msg_remove_bloat"
146 [ "$DEBUG" ] && set -x
148 pkglist=$(mktemp /var/lib/carnet-upgrade/pkglist.XXXXXX)
149 COLUMNS=200 dpkg -l | awk '$1 ~ /^.i/ { print $2 }' > $pkglist
150 for i in $(echo "$bloats" | sed 's/ */ /g'| awk -F' ' '{print $2}')
152 if grep -q "^$i$" $pkglist; then
153 installed="$installed $i"
154 add_this="$(echo "$bloats" | egrep " .*\b${i}\b" | sed 's/ */ /g'| awk -F' ' '{print $1}')"
155 if ! echo "$to_show" | grep -q "$add_this"; then
156 to_show="$to_show \"$add_this\" \"\" on"
161 [ "$DEBUG" ] || rm -f $pkglist
162 [ -z "$to_show" ] && return 0
164 tmpfile=$(mktemp /var/lib/carnet-upgrade/dialog-tmp.XXXXXX)
165 cmd="LC_MESSAGES=hr_HR dialog --nocancel --backtitle \""$title"\" --checklist \""$text"\" 20 75 $n $to_show"
166 [ "$DEBUG" ] && set +x
167 eval $cmd 2> $tmpfile
168 [ "$DEBUG" ] && set -x
169 to_remove="$(cat $tmpfile | sed 's/\"\ \"/ /g; s/\"\ *//g; s/\\//g')"
170 [ "$DEBUG" ] || rm -f $tmpfile
171 [ "$DEBUG" ] && echo "DEBUG: to_remove=$to_remove" 1>&2
174 for i in $(echo "$to_remove")
177 for j in $(echo "$bloats" | grep "^$i" | sed 's/ */ /g'| awk -F' ' '{print $2}')
179 # hopefully this will tell apt not to reinstall them at upgrade time
180 update_selections="${update_selections}
182 pkgs_to_deselect="$pkgs_to_deselect $j"
183 # only remove those that really are installed
184 if echo "$installed" | grep -q "$j"; then
185 pkgs_to_remove="$pkgs_to_remove $j"
189 [ "$DEBUG" ] && echo "DEBUG: pkgs_to_remove=$pkgs_to_remove" 1>&2
190 # Finally, remove those
191 if [ -n "$update_selections" ]; then
192 echo "$update_selections" | dpkg --set-selections
193 log "Deselected:${pkgs_to_deselect}"
195 eval pkgrm $pkgs_to_remove
199 local installed pkg cn_pkgs dialog_list selection cn_del to_del del_pkgs
201 # get installed packages
202 installed=$(mktemp /var/lib/carnet-upgrade/pkglist.XXXXXX)
203 COLUMNS=200 dpkg -l | awk '$1 ~ /^.i/ { print $2 }' >$installed
205 # detect installed CN packagees
206 for pkg in $(echo "$cn_bloats" | cut -d' ' -f1); do
207 if grep -qx $pkg $installed; then
208 cn_pkgs="$cn_pkgs $pkg"
209 dialog_list="$dialog_list $pkg '' off"
214 # report status or finish if no CN packages found
215 if [ "$cn_pkgs" ]; then
216 log "Found CN packages:$cn_pkgs"
218 log "No CN packages found."
222 # user selects the packages to delete
223 selection=$(mktemp /var/lib/carnet-upgrade/selection.XXXXXX)
224 eval LC_MESSAGES=hr_HR dialog --nocancel --backtitle \""$title"\" \
225 --checklist \""$msg_remove_cn_bloat"\" 20 75 6 $dialog_list 2>$selection
227 # expand the package list to include the services
228 for pkg in $(cat $selection); do
231 cn_del="$cn_del $pkg"
232 to_del=$(echo "$cn_bloats" | grep ^$pkg)
233 del_pkgs="$del_pkgs $to_del"
237 # report selection or finish if no service selected
238 if [ "$cn_del" ]; then
239 log "Removing CN services:$cn_del"
241 log "No CN services selected for removal."
245 # delete the cn packages and relevant services
250 touch "$post_upgrade_queuetab"
251 if ! grep -q "true $*" "$post_upgrade_queuetab"; then
252 echo "true $*" >> "$post_upgrade_queuetab"
257 if [ -f "$post_upgrade_queuetab" ]; then
258 run_actions post_upgrade "$post_upgrade_queuetab"
259 mv "$post_upgrade_queuetab" "${post_upgrade_queuetab}.done.$(date '+%Y-%m-%d.%H:%M:%S')"
266 local line lineno lineno2 f n name action checkmsg check
267 [ "$DEBUG" ] && set -vx
270 [ -f "$f" ] || return 2 # no such file
271 n=$(wc -l "$f" | awk '{print $1}')
272 [ "$n" -lt 1 ] && return 1 # no lines to process
273 log "run_actions ($name) started, processing $n lines from \"$f\"."
277 while [ "$lineno" -lt "$n" ]
279 lineno=$(($lineno+1))
281 line=$(head -$lineno "$f" | tail -1)
282 if echo $line | grep -q '^#'; then # comment
285 while echo "$line" | egrep -q '\\$' # continuation
287 lineno2=$(($lineno2+1))
288 line=$(echo -n "$line"| sed 's/\\$//'; head -$lineno2 "$f" | tail -1)
290 check=$(echo "$line" | sed 's/ */ /g'| awk -F' ' '{print $1}')
291 action=$(echo "$line" | sed 's/ */ /g'| awk -F' ' '{print $2}')
293 [ "$check" != "true" ] && checkmsg="if '$check'"
295 log "$(printf 'action %02d' $lineno) starting: '${action}' $checkmsg "
296 if ! eval $action; then
297 log "$(printf 'action %02d' $lineno) failed: '${action}' $checkmsg "
298 display_action_failure "$action"
301 log "$(printf 'action %02d' $lineno) finished: '${action}' $checkmsg"
304 log "$(printf 'action %02d' $lineno) skipping: '${action}' $checkmsg"
306 [ "$lineno2" -gt "$lineno" ] && lineno=$lineno2
308 log "run_actions ($1) finished"
312 # report action failure
313 display_action_failure () {
317 Doslo je do greske prilikom izvrsavanja akcije '$action'. Detalje problema moguce je vidjeti u log datotekama:
319 /var/log/carnet-upgrade.log
320 /var/log/carnet-upgrade.typescript
322 Da bi dovrsili zapocete operacije nad paketima pokrenite:
324 # dpkg --configure -a
327 Nakon toga ponovno pozovite carnet-upgrade skriptu."
330 # funkcija vraca popis paketa koje treba upgradeati
332 local IFSOLD name version package
334 for package in `echo "$needed_versions" | awk '{print $1}'| grep -v ^$`; do
337 read name version <<-EOPTS
338 $(echo "$needed_versions" | sed 's/ */ /g' | grep ^$package)
341 if pkg "$name" lt "$version"; then
347 # funkcija za ispis paketa koje treba upgradeati
350 upgrade=${1:-"`what_upgrade`"}
352 if [ "$upgrade" ]; then
354 Prije prelaska na Debian Squeeze potrebno je napraviti nadogradnju ovih paketa:
359 # apt-get dist-upgrade
362 # apt-get install${upgrade}
364 Nakon toga ponovno pozovite ovu skriptu."
365 log "carnet-upgrade aborted, upgrade of$upgrade needed."
370 # try to check if we are using the latest version of carnet-upgrade script
371 check_my_version () {
372 local packages latest_version
374 packages=$(mktemp /var/lib/carnet-upgrade/Packages.XXXXXX)
375 if wget -q -O$packages $packages_uri; then
376 latest_version=$(sed -ne \
377 '/Package: carnet-upgrade/,/Description:/{ /Version: /s///p }' \
381 if [ "$latest_version" ]; then
382 log "Running carnet-upgrade version is $version"
383 log "Latest carnet-upgrade version is $latest_version"
384 if dpkg --compare-versions "$version" lt "$latest_version"; then
385 check_upgrade " carnet-upgrade"
386 else log "Already using the latest carnet-upgrade version."; fi
387 else log "Failed to get latest version, skipping check."; fi
388 else log "Failed to download Packages file, skipping check."; fi
394 reboot_required || return 0
396 LC_MESSAGES=hr_HR dialog --backtitle "$title" --yesno "$reboot_warning" 18 +75
397 if [ $? -eq 0 ]; then
398 log "Reboot before continuing."
401 log "Proceed without reboot."
405 # check if the latest kernel is booted
407 local default_kernel kernel_package running_release running_version
409 # try to get default kernel from grub2
410 if [ -z "$default_kernel" -a -r "/boot/grub/grub.cfg" ]; then
411 default_kernel=$( awk '
412 $0 ~ /^set default=".*"/ {
413 def = gensub(/default="(.*)"/, "\\1", "1", $2);
414 if (def !~ /^[0-9]+$/) { exit }
416 $1 == "menuentry" { menuentry+=1 }
417 $1 == "linux" && menuentry==def+1 { print $2; exit }' \
418 /boot/grub/grub.cfg 2>/dev/null )
421 # try to get default kernel from grub-legacy
422 if [ -z "$default_kernel" -a -r "/boot/grub/menu.lst" ]; then
423 default_kernel=$( awk '
424 $1 == "default" { def = $2;
425 if (def !~ /^[0-9]+$/) { exit } }
426 $1 == "title" { title+=1 }
427 $1 == "kernel" && title==def+1 { print $2; exit }' \
428 /boot/grub/menu.lst 2>/dev/null )
431 # try to get default kernel from lilo
432 if [ -z "$default_kernel" ] && type lilo >/dev/null 2>&1; then
433 default_kernel=$( lilo -t -v 2>/dev/null \
435 | sed -n -e '/^Boot image: / { s///p; q; }' )
438 if [ -z "$default_kernel" ]; then
439 log "Could not find default kernel"
443 log "Default kernel image: $default_kernel"
445 if [ ! -e "$default_kernel" ]; then
446 # /boot prefix might be missing
447 default_kernel="/boot/${default_kernel#/}"
448 if [ ! -e "$default_kernel" ]; then
449 log "Default kernel image doesn't exist!?"
454 kernel_package=$( dpkg -S $default_kernel | cut -d: -f 1 )
456 if [ -z "$kernel_package" ]; then
457 log "Default kernel not installed from a package"
461 log "Default kernel package: $kernel_package"
463 running_release=$( uname -r )
464 running_version=$( uname -v )
465 log "Running kernel: $running_release $running_version"
467 if grep -q "$running_release .* $running_version" $default_kernel; then
468 log "Latest kernel version is running."
471 log "Reboot to latest version required."
480 packages="$packages_first"
483 packages="$packages_second"
492 # install packages introduced in this release
494 if [ "$new_packages" ]; then
499 # funkcija utrpa ispravan sources.list
500 create_sources_list () {
502 sl=/etc/apt/sources.list
503 sl_new=/usr/share/carnet-upgrade/files/etc/apt/sources.list
505 # check if already installed
506 if ! cmp $sl $sl_new >/dev/null; then
509 if [ -f $sl -a ! -f $sl.$backup_ext ]; then
510 cp -av $sl $sl.$backup_ext
513 # install new version
515 notice "Novi sadrzaj datoteke /etc/apt/sources.list:
517 `cat /etc/apt/sources.list`"
522 # funkcija koja brise grupu proc
523 remove_group_proc () {
524 if getent group proc > /dev/null; then
525 groupdel proc || true
526 log "groupdel proc (temporarily)"
527 post_upgrade add_group_proc
532 if ! getent group proc > /dev/null; then
533 # grsec uses gid 99 for /proc files
535 log "groupadd -g 99 proc"
537 # update oidentd so it uses the proc group
538 if [ -x /etc/init.d/oidentd ]; then
539 if gpasswd -a oident proc; then
540 /etc/init.d/oidentd restart
546 # backup ldap database
548 local ldap_backup=/var/backups/slapcat.$backup_ext.gz
549 local old_umask result
551 if [ ! -f $ldap_backup ]; then
552 [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius stop || true
554 if [ -x /etc/init.d/slapd -a -d /var/lib/ldap ]; then
555 /etc/init.d/slapd stop || true
557 umask 0077 # protect the backup file
558 slapcat | gzip --best > $ldap_backup
561 /etc/init.d/slapd start || true
563 if [ "$result" -eq 0 ]; then
564 log "$ldap_backup created"
565 notice "Napravljen backup slapd baze u $ldap_backup."
567 log "$ldap_backup was not created"
568 notice "Backup slapd baze u $ldap_backup nije uspio."
573 [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius start || true
575 log "slapd backup already at $ldap_backup, skipping."
576 #notice "Backup slapd baze u $ldap_backup vec postoji!"
580 # backup etc direktorija
582 local etc_backup=/var/backups/etc.$backup_ext.tar.gz
585 if [ ! -f $etc_backup ]; then
587 umask 0077 # protect the backup file
589 if tar cfz $etc_backup /etc 2> /dev/null; then
590 log "$etc_backup created"
591 notice "Napravljen backup /etc direktorija u $etc_backup."
593 log "$etc_backup was not created"
594 notice "Backup /etc direktorija u $etc_backup nije uspio."
599 log "/etc backup already present in $etc_backup, skipping."
600 #notice "Backup /etc direktorija u $etc_backup vec postoji!"
604 # restore a configuration file if it contains only CN modifications
606 local file file_expect file_restore file_backup
611 file_backup=$file.$backup_ext
613 [ "$file_expect" ] || file_expect=$cnup/files/$file.expect
614 [ "$file_restore" ] || file_restore=$cnup/files/$file.restore
616 # check if all required files are there
617 if ! [ -e $file -a -e $file_expect -a -e $file_restore ]; then
618 log "Required files missing, skipping $file restore."
623 if ! cmp $file_expect $file >/dev/null; then
624 log "Config doesn't match the template, skipping $file restore."
629 if [ ! -e $file_backup ]; then
630 log "Restoring config file $file."
632 # backup local changes
633 cp -av $file $file_backup
636 cp -v $file_restore $file
641 log "Backup file exists, skipping $file restore."
646 # force reconfiguration at the end if package is not upgraded automatically
647 postupgrade_reconfigure () {
648 local cn_package cn_version
651 cn_version=$( dpkg -s "$cn_package" | awk '/^Version:/ {print $2}' )
652 post_upgrade "pkg $cn_package gt $cn_version || dpkg-reconfigure $cn_package"
655 # copy template into a temporary file
657 local path file template config_new
660 file=$(basename $path)
661 template=$cnup/files/$path.template
662 config_new=$(mktemp /var/lib/carnet-upgrade/$file.XXXXXX)
663 cp $template $config_new
668 # restore modified config to their package defaults
669 # so the upgrade doesn't complain so much
671 local hostname domain config_new memtotal memlimit
673 # restore simple configs
674 if pkg ntp-cn && pkg ntp lt 1:4.2.6.p2+dfsg-1+b1; then
675 if restore_file /etc/ntp.conf; then
676 postupgrade_reconfigure ntp-cn
680 if pkg kernel-2.6-cn && pkg procps lt 1:3.2.8-9; then
681 if restore_file /etc/sysctl.conf; then
682 postupgrade_reconfigure kernel-2.6-cn
686 if pkg kernel-2.6-cn && pkg libpam-modules lt 1.1.1-6.1; then
687 if restore_file /etc/security/limits.conf; then
688 postupgrade_reconfigure kernel-2.6-cn
692 if pkg vsftpd-cn && pkg vsftpd lt 2.3.2-3+squeeze2; then
693 if restore_file /etc/vsftpd.conf; then
694 postupgrade_reconfigure vsftpd-cn
698 if pkg squirrelmail-cn && pkg squirrelmail lt 2:1.4.21-2; then
699 if restore_file /etc/squirrelmail/apache.conf; then
700 postupgrade_reconfigure squirrelmail-cn
704 if pkg spamassassin-cn && pkg spamassassin lt 3.3.1-1; then
705 if restore_file /etc/spamassassin/v310.pre; then
706 postupgrade_reconfigure spamassassin-cn
710 if pkg amavisd-cn && pkg amavisd-new lt 1:2.6.4-3; then
711 if restore_file /etc/cron.daily/amavisd-new; then
712 rm -f /etc/cron.daily/amavisd-new.$backup_ext
713 postupgrade_reconfigure amavisd-cn
716 if restore_file /etc/amavis/conf.d/15-av_scanners; then
717 rm -f /etc/amavis/conf.d/15-av_scanners.$backup_ext
718 postupgrade_reconfigure amavisd-cn
722 if pkg amavisd-cn lt 3:2.6.5; then
723 restore_file /etc/init.d/amavisd-cn
724 rm -f /etc/init.d/amavisd-cn.$backup_ext
727 if pkg console-tools lt 1:0.2.3dbs-69.1; then
728 restore_file /etc/console-tools/config
731 if pkg base-files lt 6.0squeeze2; then
732 restore_file /etc/issue
733 restore_file /etc/issue.net
736 if pkg slapd lt 2.4.23-7.2; then
737 restore_file /etc/default/slapd
740 # dovecot won't start with these options
741 if pkg dovecot-cn && pkg dovecot-common lt 1:1.2.15-7; then
742 sed -i 's/^\( *\)\(sieve\(_storage\)\?=.*\)/\1#\2/' \
743 /etc/dovecot/dovecot.conf
746 # check if monitrc is template based
747 if [ -e /etc/monit/monitrc ]; then # monit is removed at this point
748 # regenerate config from template
750 domain=$(hostname --domain)
751 config_new=$(copy_template /etc/monit/monitrc)
752 check_and_sed "@localhost" \
753 "s/@localhost/@$hostname.$domain/g" $config_new || true
754 restore_file /etc/monit/monitrc $config_new
759 # temporary disable listchanges packages to reduce clutter during upgrade
761 local file command=$1
763 for file in /etc/apt/apt.conf.d/20listchanges \
764 /etc/apt/apt.conf.d/20listchanges-cn
768 if [ -f $file ]; then
769 dpkg-divert --local --rename --divert $file.$backup_ext \
775 if [ -f $file.$backup_ext ]; then
776 dpkg-divert --remove $file || true
783 # make a silent installation of carnet and srce keyrings
784 install_keyrings () {
785 pkgadd carnet-keyring srce-keyring debian-archive-keyring
787 dpkg-reconfigure carnet-keyring srce-keyring debian-archive-keyring
791 # check if package is orphaned (nothing depends on it)
796 deps=$(apt-get remove -s $package | grep ^Remv | wc -l)
797 if [ "$deps" -eq 1 ]; then
804 # remove old and unused libraries
810 for package in $orphaned_packages; do
811 if is_orphaned $package; then
817 # monit it causing problems for postinst scripts
818 # restarting daemons so try to disable it
820 if pkg monit-cn; then
821 pkgrm monit-cn # disables monit in prerm
824 # if configured manually
826 # remove the binary but leave the config
827 apt-get remove --yes monit
829 pkill -9 monit || true
830 # move away init for insserv to work
831 mv /etc/init.d/monit /var/lib/carnet-upgrade/
835 # allow monit to run again
837 if [ -f /var/lib/carnet-upgrade/monit ]; then
838 mv /var/lib/carnet-upgrade/monit /etc/init.d/monit
843 # check which of the given packages are installed
845 local package installed
847 for package in $*; do
848 if pkg $package; then
849 installed="$installed $package"
856 # only upgrade packages if they are already installed
860 packages=$( grep_installed $* )
862 if [ "$packages" ]; then
863 eval pkgadd $packages
867 # make a silent upgrade to new libc6
869 DEBIAN_FRONTEND=noninteractive pkgupgrade libc6 libc6-dev tzdata
872 # upgrade apache2/php5
874 pkgrm apache-common # prevents installation of apache2-suexec
875 pkgupgrade libapache2-mod-php5 php5-cli php5-cn apache2-cn \
876 php5-odbc php5-suhosin php-suhosin-cn
882 # move old config aside
883 for conf in /etc/amavisd.conf /etc/amavis/amavisd.conf; do
884 if [ -e $conf -a ! -e $conf.$backup_ext ]; then
885 mv -v $conf $conf.$backup_ext
889 # install new packages
890 pkgadd amavisd-cn amavisd-new
893 /etc/init.d/amavisd-cn restart
896 # handle freerdius upgrade
897 upgrade_freeradius () {
898 pkg freeradius-aai lt 2.1.10-1 || return 0
900 # aai team prevents a normal upgrade
901 cp -av /etc/freeradius /etc/freeradius.$backup_ext
902 pkgrm freeradius-aai freeradius-ldap freeradius
903 rm -rf /etc/freeradius/certs
904 pkgadd freeradius-aai
907 # handle mysql 5.0 to 5.1 upgrade
909 if pkg mysql-server || pkg mysql-server-5.0; then
911 dpkg -P mysql-server-5.0
912 /etc/init.d/mysql restart
916 # fix postgresql deinstallation during upgrade
917 upgrade_postgresql () {
918 if check_services show 2>&1 | grep -qw postgresql; then
919 apt-get install -y postgresql || apt-get -yf install
925 pkgadd sasl2-bin postfix-cn
927 if pkg postgrey; then
928 pkgrm postgrey # not used by postfix-cn anymore
932 # upgrade bind separately so DNS is not down for too long
933 # or breaks postinst scripts of other cn packages that depend on
940 local name=$1 file=$2 val
942 if [ -f "$file" ]; then
943 val=$(sed -n "/^[[:space:]]*$name[[:space:]]*=/s/[[:space:]]*//gp" $file)
950 # restore munin configs for silent upgrade
952 local config backup hostname domain
954 # new htmldir location
955 if [ -d /var/www/munin -a ! -e /var/cache/munin/www ]; then
956 mkdir -p /var/cache/munin
957 mv /var/www/munin /var/cache/munin/www
960 for pkg_name in munin munin-node; do
961 pkg $pkg_name lt '1.4.5-3' || continue
963 config=/etc/munin/$pkg_name.conf
964 backup=$config.$backup_ext
965 if [ -f $config -a ! -f $backup ]; then
967 domain=$(hostname --domain)
969 cp -av $config $backup
970 check_and_sed "$hostname.$domain" \
971 "s/$hostname.$domain/localhost.localdomain/g" $config
976 # force localhost -> hostname replacement in config files
978 dpkg-reconfigure munin-cn
981 # try not to overwrite user modified issue files
983 if cmp /etc/issue $cnup/files/etc/issue.expect.new >/dev/null; then
984 cp -av /etc/issue /etc/issue.$backup_ext
985 cat > /etc/issue <<EOF
986 Debian GNU/Linux 6.0 (CARNet Debian 6.0) \\n \\l
991 if cmp /etc/issue.net $cnup/files/etc/issue.net.expect.new >/dev/null; then
992 cp -av /etc/issue.net /etc/issue.net.$backup_ext
993 cat > /etc/issue.net <<EOF
994 Debian GNU/Linux 6.0 (CARNet Debian 6.0) %h
999 check_archives_space() {
1000 local available_disk_space archives_size
1001 available_disk_space=$(free_space /var/cache/apt/archives/)
1002 archives_size=$(download_size dist-upgrade)
1004 if [ $? -ne 0 ]; then
1005 log "Failed to get download size, skipping check."
1009 log "Archives space: ${available_disk_space}MB"
1010 log "Download size: ${archives_size}MB"
1012 if [ $available_disk_space -lt $archives_size ]; then
1013 log "carnet-upgrade aborted: not enough space in /var/cache/apt/archives/ (have ${available_disk_space}MB, need ${archives_size}MB)"
1014 notice "Premalo slobodnog mjesta u /var/cache/apt/archives/ za skidanje paketa (potrebno je barem ${archives_size}MB). Procitajte poglavlje 'Izvanredne situacije' u dokumentaciji."
1019 check_kernel_space() {
1020 local available_disk_space kernel_size linux_images metapkg pkg ret
1021 available_disk_space=$(free_space /)
1022 linux_images=$(apt-cache show kernel-2.6-cn | grep ^Depends: \
1023 | grep -o 'linux-image[^, ]*')
1024 for metapkg in $linux_images; do
1025 pkg=$(apt-cache show $metapkg | grep ^Depends: \
1026 | grep -o 'linux-image[^, ]*' | head -1)
1027 [ "$pkg" ] || continue
1029 kernel_size=$(installed_size $pkg)
1031 [ $ret -eq 0 ] && break
1034 if [ $ret -ne 0 ]; then
1035 log "Failed to get installed size, skipping check."
1039 log "Free space in /: ${available_disk_space}MB"
1040 log "Kernel package: $pkg"
1041 log "Kernel size: ${kernel_size}MB"
1043 if LC_ALL=C apt-get -s install kernel-2.6-cn 2>/dev/null \
1044 | grep -q '^kernel-2.6-cn is already the newest version.$'
1046 log "Not checking free space in /: kernel-2.6-cn already installed"
1050 if [ $available_disk_space -lt $kernel_size ]; then
1051 log "carnet-upgrade aborted: not enough space in / (have ${available_disk_space}MB, need ${kernel_size}MB)"
1052 notice "Premalo mjesta u / za instalaciju kernela (potrebno je barem ${kernel_size}MB). Procitajte poglavlje 'Izvanredne situacije' u dokumentaciji."
1058 df --portability --block-size=1M "$1" | tail -1 | awk '{print $4}'
1063 size=$(LC_ALL=C apt-get --yes --print-uris "$@" | grep '^Need to get ')
1065 if [ $? -ne 0 ]; then
1066 log "Failed to get download size for 'apt-get $@'."
1070 size=${size#Need to get }
1073 size_to_mb "${size}B"
1079 size=$(apt-cache show $package | grep '^Installed-Size:')
1081 if [ $? -ne 0 ]; then
1082 log "Failed to get installed size for '$package'."
1088 size_to_mb "${size}kB"
1094 if [ -z "$size" ]; then
1098 if [ "${size%kB}" != "$size" ]; then
1099 size=$(round ${size%kB})
1100 size=$(($size/1024+1))
1101 elif [ "${size%MB}" != "$size" ]; then
1102 size=$(round ${size%MB})
1103 elif [ "${size%GB}" != "$size" ]; then
1104 size=$(round ${size%GB})
1105 size=$(($size*1024))
1106 elif [ "${size%[0-9]B}" != "$size" ]; then
1107 size=$(round ${size%B})
1108 size=$(($size/1024/1024+1))
1110 log "unrecognized size unit: $size"
1121 if [ "${num%.*}" != "$num" ]; then
1129 # make sure carnet-upgrade doesn't get upgraded until the end
1130 hold_carnet_upgrade() {
1131 echo carnet-upgrade hold | dpkg --set-selections
1134 release_carnet_upgrade() {
1135 echo carnet-upgrade install | dpkg --set-selections