====== Μεταφορά από 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