Ο παρακάτω οδηγός έχει δοκιμαστεί σε debian 8 και με τροποποιήσεις και σε ubuntu 14.04
Πριν ξεκινήσουμε κάνουμε backup τον φάκελο /etc κυρίως καθώς και τον φάκελο /var
Επίσης πολύ σημαντικό είναι να απενεργοποιήσουμε (βάζοντας σε σχόλια) όλα τα επιπλέον repositories μαζί και με official και security updates. Σε ubuntu π.χ. trusty-updates, trusty-security, trusty-proposed κτλ. Αν δεν το κάνουμε, θα εγκατασταθούν μεταγενέστερα πακέτα 32bit και δεν θα μπορούμε να εγκαταστήσουμε τα αντίστοιχα 64bit.. Τα repositories Θα ενεργοποιηθούν πάλι προς το τέλος.
Επίσης παίρνουμε full backup το root partition της εγκατάστασης και το boot partition καθώς και τα partitions /home και /var
Ακολουθούμε τον οδηγό από http://www.ewan.cc/?q=node/90
Αφορά Debian 7 και μεταγενέστερες εκδόσεις
Στο Βήμα 5 εάν είμαστε σε ubuntu 14
dpkg --add-architecture amd64 apt-get update apt-get install linux-generic-lts-trusty:amd64 debootstrap
Μετά το βήμα 5 και την επανεκκίνηση στο νέο πυρήνα ελέγχουμε ότι είμαστε σε πυρήνα 64bit με
arch
Κάνουμε τις φυσιολογικές αλλαγές όπου χρειάζεται π.χ. στο βήμα 6 jessie αντί για wheezy εφόσον μεταφέρουμε μία Debian 8 εγκατάσταση ή trusty εφόσον είμαστε σε ubuntu 14.
Πριν το βήμα 7 και εφόσον δουλεύουμε σε εικονική μηχανή είναι καλό σημείο να πάρουμε ένα snapshot
Στο βήμα 7 εάν αποτύχει η παρακάτω εντολή
cat dpkg-get-selections.base | dpkg --set-selections
Tροποποιούμε το αρχείο dpkg-get-selections.base διαγράφοντας ή βάζοντας σχόλια # μπροστά στις γραμμές που το εμποδίζουν να εκτελεστεί. Π.χ. εάν εμφανιστούν τα παρακάτω μηνύματα, θα βάλουμε σε σχόλια τα πακέτα libgcc1 και rsyslog
dpkg: error: μη αποδεκτό όνομα πακέτου στη γραμμή 58: ambiguous package name 'libgcc1' with more than one installed instance
ή
dpkg: warning: package not in database at line 127: rsyslog dpkg: warning: found unknown packages; this might mean the available database is outdated, and needs to be updated through a frontend method
Πριν το dselect-upgrade διαγράψει σχεδόν όλα τα πακέτα ας τα καταγράψουμε
apt-get dselect-upgrade > dselect-upgrade.txt n
Εάν έχουμε nfs mounts τα κάνουμε unmount πριν από το dpkg -i bootstrap-i386/var/cache/apt/archives/*.deb
Εάν έχουμε προβλήματα σε υπηρεσίες όπως rsyslog βλέπουμε τα errors με
journalctl -xn
Πρόβλημα σε εγκατάσταση πακέτου rsyslog δεν μπόρεσε να επιλυθεί παρόλο που το rsyslog φαινόταν να εκτελείται. Ετσι προσωρινά αφαιρέθηκε από την λίστα προς εγκατάσταση
mv bootstrap-i386/var/cache/apt/archives/rsyslog_8.4.2-1+deb8u2_i386.deb tmp/
Σε ubuntu 14.04 μετά από προβλήματα από το dselect-upgrade χρειάστηκε να εκτελέσουμε και
apt-get dselect-upgrade -f
Την 2η φορά ένα πακέτο (myspell-en-au) δεν μπορούσε να αφαιρεθεί και τροποποιήθηκε το /var/lib/dpkg/info/myspell-en-au.postrm, βάζωντας exit 0 μετά το #!/bin/bash. Στην συνέχεια εκτελέστηκε πάλι το dselect-upgrade
Σε ubuntu 14.04 το dpkg -i bootstrap-i386/var/cache/apt/archives/*.deb έβγαλε 2 πακέτα που δεν εγκαταστάθηκαν σωστά. Τα εγκαταστήσαμε ένα ένα ξεχωριστά με dpkg -i και μετά ξαναεκτελέσαμε
dpkg -i bootstrap-i386/var/cache/apt/archives/*.deb
Πριν το βήμα 8 και εφόσον δουλεύουμε σε εικονική μηχανή είναι καλό σημείο να πάρουμε ένα snapshot
Για trusty η επανεγκατασταση του πυρήνα γίνεται ως εξής
apt-get install locales lvm2 grub-pc linux-generic-lts-trusty
Σε trusty διορθώνουμε πρόβλημα σε πακέτο libnl-3
mv /etc/libnl-3/pktloc /etc/libnl-3/pktloc.old mv /etc/libnl-3/classid /etc/libnl-3/classid.old apt-get -f install
Εάν στο apt-get autoremove ή στο apt-get dselect-upgrade εμφανιστούν σφάλματα, εκτελούμε apt-get -f install προσέχοντας ποια πακέτα θα αφαιρεθούν. Εάν χρειαστεί επανεγκαθιστούμε κάποια από αυτό όπως openssh-server
Στο βήμα 9 εγκαθιστούμε πρώτα και ότι άλλα πακέτα θεωρούμε εμείς βασικά. Π.χ.
apt-get install bash-completion vim screen htop iftop iotop linuxinfo
Εγκαθιστούμε επίσης και το aptitude που θα χρειαστεί αργότερα
apt-get install aptitude
Εάν θέλουμε να βάλουμε gnome είναι πλέον
apt-get install gnome
Θα χρειαστεί πιθανόν να επιλύσουμε προβλήματα με το χέρι. Π.χ. εάν αποτυγχάνει στην προσπάθεια εγγραφής πάνω σε αρχεία στον φάκελο /etc ή στον φάκελο /var μπορούμε να τα μετονομάσουμε. Με προσοχή πάντα και καταγράφοντας τι μετονομάσαμε ώστε να κάνουμε τις απαραίτητες ενέργειες στην συνέχεια για την ομαλή επανεγκατάσταση. Π.χ. αρχεία της υπηρεσίας samba που μετονομάσαμε, θα χρειαστεί πιθανόν να τα μετονομάσουμε πίσω μετά, καθώς και να κάνουμε πιθανόν άλλες ενέργειες.
ΠΡΟΣΟΧΗ!! Στο βήμα 9 το να διαγράψουμε όλες τις ρυθμίσεις από τα πακέτα-βιβλιοθήκες είναι αρκετά επίφοβο σε έναν server. Πιθανόν να χρειαστεί να συγκρίνουμε με diff τα περιεχόμενα του παλιού φακέλου /etc και του νέου μετά την επανεγκατάσταση ώστε να διορθώσουμε τυχόν προβλήματα που θα προκύψουν στις υπηρεσίες και αλλού.
Την παραπάνω διαδικασία την κάνουμε επικολλώντας στην κονσόλα μαζί και τις παρακάτω 3 γραμμές.
aptitude l~clib _gg
Πριν από τις παρακάτω εντολές ξαναβάζουμε τα repositories που είχαμε βάλει σε σχόλια (updates, custom κτλ) και μετά εκτελούμε
dpkg --clear-selections dpkg --remove-architecture i386 dselect update
Εάν στο apt dselect-upgrade μας εμφανιστεί το παρακάτω πρόβλημα
Τα ακόλουθα πακέτα έχουν ανεπίλυτες εξαρτήσεις: virtualmin-base : Εξαρτάται από: webmin-virtual-server αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtual-server-theme αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtualmin-dav αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtualmin-svn αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtualmin-awstats αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtualmin-mailman αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-virtualmin-htpasswd αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: usermin-virtual-server-theme αλλά δεν πρόκειται να εγκατασταθεί Εξαρτάται από: webmin-security-updates αλλά δεν πρόκειται να εγκατασταθεί
Εκτελούμε
aptitude install webmin-virtual-server apt-get -f install
και συνεννούμε στην αφαίρεση του virtualmin-base
Για το πρόβλημα στην αφαίρεση του amavisd-new, χρειάστηκε να το εγκαταστήσουμε
apt-get install amavisd-new
Για προβλήματα με postfix, dovecot εγκαθιστούμε
apt-get install postfix dovecot-pop3d dovecot-imapd sasl2-bin bsd-mailx cp /etc.bak/procmailrc /etc/procmailrc
Δοκιμάζουμε με
service postfix restart service dovecot restart
ΠΡΟΣΟΧΗ! Θα πρέπει να εκτελέσουμε ξανά τις εντολές αυτές αφού ολοκληρωθεί το apt-get dselect-upgrade
Και για να ολοκληρωθεί το dselect-upgrade και να εγκατασταθούν τα webmin, usermin, virtualmin
apt-get dselect-upgrade
Επαναφέρουμε τα conf αρχεία
mv /etc/webmin/ /etc/webmin.default cp -rpf /etc.bak/webmin/ /etc/webmin/
Επανεκκινούμε
service webmin restart
και δοκιμάζουμε από ένα browser να συνδεθούμε π.χ. σε https://s2.weballdesign.gr:41041/
Επαναφέρουμε τα conf αρχεία
mv /etc/usermin/ /etc/usermin.default cp -rpf /etc.bak/usermin/ /etc/usermin/
Επανεκκινούμε
service usermin restart
και δοκιμάζουμε από ένα browser να συνδεθούμε π.χ. σε https://s2.weballdesign.gr:42042/
Για το nagios που δεν χρησιμοποιούμε πλέον εκτελούμε
a2disconf nagios3
Για το suexec
apt-get install apache2-suexec-custom libapache2-mod-fcgid php5-cgi apt-get install php5-curl php5-gd php5-imap php5-mcrypt php5-recode php5-tidy cp /etc.bak/apache2/mods-available/fcgid.conf /etc/apache2/mods-available/fcgid.conf cp /etc.bak/apache2/mods-available/php5.conf /etc/apache2/mods-available/php5.conf
Εγκαθιστούμε τον 64bit ioncube loader
Δοκιμάζουμε με
service apache2 restart
Επανεγκαθιστούμε με
apt-get install bind9
Δοκιμάζουμε με
service bind restart nslookup www.weballdesign.gr
Αφαιρούμε mariadb-client εάν χρειαστεί και επανεγκαθιστούμε με
aptitude install mysql-server
Δοκιμάζουμε με
service mysql restart
Εάν υπάρχουν προβλήματα με το nfs mount εκτελούμε
apt-get install nfs-common mount -a
Επανεκκινούμε και ελέγχουμε εάν προσαρτήθηκε στην εκκίνηση
Εκτελούμε
apt-get install quota virtualmin fix-domain-quota --all-domains
και ελέγχουμε με
quota -v linuxfanclub repquota -a | grep '+'
apt-get install lightdm xfce4 firefox-esr
apt-get -y install software-properties-common apt-get -y install python-certbot-apache -t jessie-backports
Η παρακάτω εντολή μας εμφανίζει και άλλα πακέτα που δεν έχουν εγκατασταθει
dpkg --get-selections "*:i386"|grep -v deinstall|cut -f1|cut -d: -f1|sed ':a;N;$!ba;s/\n/ /g'
Επιλέγουμε και εγκαθιστούμε
apt install anacron at gpm hardinfo ntpdate sudo xtightvncviewer courier-base courier-ssl dovecot-ldap dovecot-sieve gnupg-curl grub2 locate ntp openbsd-inetd php5-pgsql php5-pspell php5-xsl rdiff-backup reprepro ruby1.9.1 usermode webalizer
Mετά το dselect-upgrade είναι ένα καλό σημείο να εγκαταστήσουμε πάλι τον πυρήνα εάν απεγκαταστάθηκε και να επανεκκινήσουμε (Σε trusty και proxomox snapshots το quota έκανε corrupt και readonly το σύστημα αρχείων πιο μετά ) apt-get install locales lvm2 grub-pc linux-generic-lts-trusty
Στο βήμα 9 η παρακάτω εντολή και οι αντίστοιχες απέτυχαν επειδή κάποια από τα πακέτα δεν βρέθηκαν. Έτσι δεν εγκαταστάθηκαν και τα υπόλοιπα που υπήρχαν, τα οποία στο σύστημά μου ήταν περίπου τα μισά.
apt-get install `dpkg --get-selections "*:i386"|grep -v deinstall|cut -f1|cut -d: -f1|sed ':a;N;$!ba;s/\n/ /g'`
Δοκιμάζουμε να εγκαταστήσουμε έκτος από ότι δεν υπάρχει και το προβληματικό quota
apt-get install `dpkg --get-selections "*:i386"|grep -v deinstall|cut -f1|cut -d: -f1|sed ':a;N;$!ba;s/\n/ /g'| sed 's/quota //g'| sed 's/libclamav7 //g'| sed 's/liboxideqtquick0 //g'| sed 's/libqpdf21 //g'| sed 's/linux-image-3.13.0-147-generic //g'| sed 's/linux-image-extra-3.13.0-147-generic //g'| sed 's/teamviewer6 //g'`
ή για να παρακάμψουμε το πρόβλημα και λόγω του ότι το apt δεν επιτρέπει με switch την αγνήση του λάθους εγκαθιστούμε ένα ένα πακέτο. Αυτό έχει 2 μειονεκτήματα. 1ον είναι αρκετά αργό και 2ον και σημαντικότερο δεν επιλύει τυχόν συγκρούσεις μεταξύ των πακέτων. Οι εξαρτήσεις των επόμενων πακέτων που συγκρούονται θα υπερισχύσουν των προηγουμένων.
for arch in i386 all amd64; do allpackages=$(dpkg --get-selections "*:$arch"|grep -v deinstall|cut -f1|cut -d: -f1|sed ':a;N;$!ba;s/\n/ /g') for package in $allpackages; do apt-get -y install $package || break 2; done done
Εάν κάποιο πακέτο δημιουργήσει πρόβλημα τότε το βάζουμε στα problempackages script για το παρακάτω
for arch in i386 all amd64; do for package in $(dpkg --get-selections "*:$arch"|grep -v deinstall|cut -f1|cut -d: -f1|sed ':a;N;$!ba;s/\n/ /g' | sed 's/linux-image-3.13.0-147-generic //g' | sed 's/gdm //g' | sed 's/linux-image-extra-3.13.0-147-generic //g'| sed 's/lxdm //g'| sed 's/php5-fpm //g' ); do apt-get -y install $package || break 2; done; done
Λόγω πρόβληματος σε quota πακέτο έγινε επανεκκίνηση και συνεχίστηκε μετά η διαδικασία
quotacheck: lstat: Cannot stat `/var/lib/lightdm/.gvfs': Άρνηση πρόσβασης
Πριν κάνουμε reboot επιβεβαιώνουμε ότι υπάρχει πυρήνας και δεν έχει απεγκατασταθεί με
update-grub2
Εάν δεν βγάλει αποτελέσματα τότε εγκαθιστούμε πάλι
apt-get install linux-generic-lts-trusty:amd64
Τέλος, Θα χρειαστεί να επανεγκαταστήσουμε πακέτα που εγκαταστάθηκαν χειροκίνητα, όπως π.χ. java, google-earth, eclipse.
Πολλές φορές λόγω conflict των πακέτων μία γρήγορη λύση είναι διαγραφή κάποιων αρχείων που εμφανίζονται κοινά σε 2 πακέτα. Προσοχή να γίνεται καταγραφή. Η διαγραφή του αρχείου /etc/netconfig που δεν δημιουργήθηκε ξανά από το πακέτο libtirpc1 δημιούργησε το παρακάτω πρόβλημα
rpcinfo: can't contact portmapper: "RPC: Remote system error - No such file or directory"
Και σαν αποτέλεσμα είχε να μην λειτουργούν nis και nfs Το δημιουργήσαμε πάλι με τα περιεχόμενα που έχουν και οι άλλες εγκαταστάσεις