LinuxFanClub Wiki

Υπηρεσίες, Προγραμματισμός, Εκπαίδευση ..

User Tools

Site Tools


el:linux:debian:desktop:migrate_64bit

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

Εγκαθιστούμε τον 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 Το δημιουργήσαμε πάλι με τα περιεχόμενα που έχουν και οι άλλες εγκαταστάσεις

Πηγές

el/linux/debian/desktop/migrate_64bit.txt · Last modified: Y/m/d H:i by vagk