====== Μεταφορά από 32bit σε 64bit ====== Ο παρακάτω οδηγός έχει δοκιμαστεί σε **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 ==== s2,s1 specific ==== Εάν στο **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 === Για προβλήματα με 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 === webmin, usermin, virtualmin === Και για να ολοκληρωθεί το dselect-upgrade και να εγκατασταθούν τα webmin, usermin, virtualmin apt-get dselect-upgrade == webmin == Επαναφέρουμε τα conf αρχεία mv /etc/webmin/ /etc/webmin.default cp -rpf /etc.bak/webmin/ /etc/webmin/ Επανεκκινούμε service webmin restart και δοκιμάζουμε από ένα browser να συνδεθούμε π.χ. σε https://s2.weballdesign.gr:41041/ == usermin == Επαναφέρουμε τα conf αρχεία mv /etc/usermin/ /etc/usermin.default cp -rpf /etc.bak/usermin/ /etc/usermin/ Επανεκκινούμε service usermin restart και δοκιμάζουμε από ένα browser να συνδεθούμε π.χ. σε https://s2.weballdesign.gr:42042/ === apache === Για το 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 Εγκαθιστούμε τον [[el:linux:debian:server:apache#ioncube|64bit ioncube loader]] Δοκιμάζουμε με service apache2 restart === bind === Επανεγκαθιστούμε με apt-get install bind9 Δοκιμάζουμε με service bind restart nslookup www.weballdesign.gr === mysql === Αφαιρούμε mariadb-client εάν χρειαστεί και επανεγκαθιστούμε με aptitude install mysql-server Δοκιμάζουμε με service mysql restart === nfs === Εάν υπάρχουν προβλήματα με το nfs mount εκτελούμε apt-get install nfs-common mount -a Επανεκκινούμε και ελέγχουμε εάν προσαρτήθηκε στην εκκίνηση === quota === Εκτελούμε apt-get install quota virtualmin fix-domain-quota --all-domains και ελέγχουμε με quota -v linuxfanclub repquota -a | grep '+' === Γραφικό === apt-get install lightdm xfce4 firefox-esr === certbot=== 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 ====ubuntu==== 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 FIXME 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 Το δημιουργήσαμε πάλι με τα περιεχόμενα που έχουν και οι άλλες εγκαταστάσεις ===== Πηγές ===== * multiarch : http://www.ewan.cc/?q=node/90 * dpkg crossgrade : https://lists.debian.org/debian-devel-announce/2012/03/msg00005.html * old non-multiarch : https://wiki.debian.org/Migrate32To64Bit * ubuntu 14 migration to 64 bit * https://askubuntu.com/questions/543658/install-64-bit-kernel-in-32-bit-ubuntu