Τρίτη, 30 Οκτωβρίου 2012

Google Earth 6, *buntu 12.04 και Ελληνικά

Τώρα που πρακτικά όλοι οι υπολογιστές της οικογένειας έχουν γυρίσει σε Linux (συγκεκριμένα σε μια παραλλαγή του kubuntu 12.04 που αναπτύσσουμε σιγά-σιγά) ένα από τα πράγματα που έλειπαν ήταν το Google Earth που το χρησιμοποιούμε μερικές φορές στην οικογένεια για το σχεδιασμό ορειβατικών διαδρομών κλπ.

Δυστυχώς η απλή εγκατάσταση της τελευταίας έκδοσης στο "οικογενειακό desktop" (64-bit) οδήγησε σε προβλήματα με τις ελληνικές γραμματοσειρές. Η εικόνα δηλαδή που παρουσίαζε το πρόγραμμα μετά την εγκατάσταση ήταν η ακόλουθη:





Υπάρχουν διάφορες συμβουλές στα interwebs για το πώς αντιμετωπίζεται αυτή η κατάσταση αλλά δυστυχώς μου φάνηκε πως οι πληροφορίες ήταν λίγο μπερδεμένες και γενικά αυτοί που έκαναν post δεν ανέφεραν με ακρίβεια την έκδοση της διανομής τους / αρχιτεκτονική και την ακριβή έκδοση του Google Earth που χρησιμοποίησαν με αποτέλεσμα να μην είναι εύκολο να βγουν συμπεράσματα. Γι αυτό αποφάσισα να μοιραστώ τη μέθοδο με την οποία λύθηκε το πρόβλημα για μένα σε *buntu 12.04.

Από ό,τι φαίνεται, η ρίζα του προβλήματος είναι ότι το google earth χρησιμοποιεί τη δική του έκδοση του Qt, στην οποία οι προγραμματιστές της Google μέσα στη σοφία τους αποφάσισαν να μην ενεργοποιήσουν την υποστήριξη για fontconfig και font antialiasing (ένα μεγάλο χειροκρότημα :P). Αυτό μπορεί να λυθεί αντικαθιστώντας τις Qt βιβλιοθήκες που συμπεριλαμβάνει το google earth με αυτές του συστήματος, αλλά to add insult to injury οι φίλοι μας προγραμματιστές της Google αποφάσισαν να τροποποιήσουν λίγο το Qt που ενσωματώνουν σε επίπεδο κώδικα με αποτέλεσμα αυτό να μην είναι δυνατόν. Αν κάποιος το προσπαθήσει το αποτέλεσμα είναι:
undefined symbol: _Z34QBasicAtomicInt_fetchAndAddOrderedPVii
Το πρώτο μας βήμα λοιπόν είναι να πετάξουμε την έκδοση 6.2:

sudo apt-get remove --purge google-earth-stable
rm -rf ~/.googleearth ~/.config/Google
(Τα rm -rf πάντα με προσοχή εννοείται. Σε αυτή την περίπτωση υποθέτοντας
ότι δεν είχαμε ακόμα χρησιμοποιήσει την προηγούμενη εγκατάσταση δεν
υπάρχει πρόβλημα.)

και να ξαναγυρίσουμε στην έκδοση 6.1 που δουλεύει. Ευτυχώς οι φίλοι μας του Linux Mint διαθέτουν το σχετικό πακέτο στο archive τους:

http://packages.linuxmint.com/pool/import/g/googleearth/googleearth_6.1.0.4857-r0_i386.deb (i386)

και

http://packages.linuxmint.com/pool/import/g/googleearth/googleearth_6.1.0.4857-r0_amd64.deb (amd64)

Έχοντας κατεβάσει το πακέτο που αντιστοιχεί στην αρχιτεκτονική μας μπορούμε να το εγκαταστήσουμε π.χ., με:
sudo gdebi googleearth_6.1.0.4857-r0_amd64.deb 
Το επόμενο βήμα είναι να φτιάξουμε το πρόβλημα με τα Ελληνικά (γενικά με τα fonts δηλαδή). Πάμε στο φάκελο
/opt/google/earth/free
και απενεργοποιούμε ορισμένες βιβλιοθήκες:

for i in libQt* libcurl.so.4 libnss_mdns4_minimal.so.2
do
    sudo mv $i{,.old}
done
Αυτό θα έχει ως αποτέλεσμα να χρησιμοποιηθούν τα system versions αυτών των βιβλιοθηκών, δεν έχουμε τελειώσει όμως ακόμα.

Υπάρχουν κάποιες βιβλιοθήκες που λείπουν και επίσης τα plugins της έκδοσης 6.2 από ότι φαίνεται δε δουλεύουν με το system Qt οπότε θα βάλουμε αυτά του 5.2. Ευτυχώς κάποια καλή ψυχή συγκέντρωσε τα αρχεία που χρειάζονται σε ένα download:

Για να χρησιμοποιήσουμε αυτό το αρχείο (υποθέτοντας ότι βρίσκεται στον τρέχοντα κατάλογο):
sudo apt-get install p7zip-full
7z x replacement.7z
sudo cp replacement/libfreeimage.so.3 /opt/google/earth/free
sudo cp replacement/libphonon.so.4 /opt/google/earth/free
sudo cp replacement/plugins/imageformats/* \
               /opt/google/earth/free/plugins/imageformats/
H βιβλιοθήκη libphonon.so.4 χρειάζεται μόνο σε 64-bit συστήματα γιατί πρόκειται για την 32-bit έκδοση της βιβλιοθήκης οπότε αυτή που υπάρχει ήδη στο σύστημα (64-bit) δε θα δουλέψει (τα παράπονά σας στη Google).

Τέλος κάνουμε edit ως root το /opt/google/earth/free/googleearth script και προσθέτουμε ακριβώς πριν τη γραμμή:

LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./googleearth-bin "$@"

τη γραμμή

export LD_PRELOAD=libfreeimage.so.3

Αν τώρα παρόλα αυτά το google-earth συνεχίζει να μην ξεκινάει:

 * Μπορεί να σας λείπουν κάποια πακέτα:
     sudo apt-get install libcurl4-openssl-dev libqtwebkit4

 * Στην περίπτωση που "σκάει" με segfault τώρα, έχοντάς σας προειδοποιήσει πρώτα ότι δεν μπορεί να γράψει στα συνηθισμένα μέρη κλπ, ίσως κατά λάθος το τρέξατε ως root σε κάποια δοκιμή οπότε το πιο εύκολο είναι να κάνετε chown (ή delete) τους φακέλους:

   *  ~/.config/Google/
και
   * ~/.googleearth

Αν όλα πήγαν καλά, το πρόγραμμα πρέπει τώρα να εμφανίζεται κάπως έτσι:






5 σχόλια:

  1. μπραβο που ανοιξες αυτο το θεμα για την επιλυση του προβληματος με το google earth αλλα απο το σημειο με τις βιβλιοθηκες και μετα, φαινονται λιγο....κινεζικα για εναν αρχαριο η και μετριο χρηστη!

    Φιλικα!

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Ναι αυτό το blog να πω την αλήθεια δεν προσανατολίζεται στους πιο αρχάριους χρήστες (κυρίως επειδή δεν υπάρχει ο απαραίτητος χρόνος και γράφω τα πράγματα κατευθείαν όπως τα σκέφτομαι με σχεδόν καθόλου editing).

      Για τους πιο αρχάριους χρήστες, μάλλον η καλύτερη λύση θα ήταν ένα πακέτο του google earth με όλες αυτές τις αλλαγές ενσωματωμένες ώστε να κάνεις apt-get install και "απλά να δουλεύει".

      Δυστυχώς λόγω του ότι το Google Earth δεν είναι open source και η google δεν έχει επιχειρήσει ακόμα να με προσλάβει :P δεν έχω αυτή τη δυνατότητα. Τα παράπονά σου λοιπόν σε αυτούς :)

      Διαγραφή
  2. Ή θα μπορουσες να γλυτώσεις το χρόνο σου εγκαθιστώντας το Marble! http://marble.kde.org/ που είναι ελεύθερο λογισμικό, έχει πολλές δυνατότητες όπως προβολή άλλων πλανητών και των αστερισμών και υποστηρίζει τους χάρτες της Google (αν και χρειάζονται κάποια απλά βήματα δες:http://nienhueser.de/blog/?p=495)

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Το ξέρω το Marble, πόσο μάλλον που το KDE είναι το αγαπημένο μου γραφικό περιβάλλον (δεν το έχω κρύψει ποτέ αυτό :) ). Το παραπάνω αφορούσε εγκατάσταση όχι σε δικό μου υπολογιστή αλλά για τους γονείς μου που ζήτησαν συγκεκριμένα Google Earth.

      Μια και έκανα που έκανα λοιπόν τη διαδικασία είπα να τη μοιραστώ :)

      Βtw, ευτυχώς νομίζω ότι το τελευταίο update που έκανε η Google διορθώνει όλα αυτά τα προβλήματα και δε χρειάζονται πια χακιές.

      Διαγραφή
  3. Αυτό το σχόλιο αφαιρέθηκε από τον συντάκτη.

    ΑπάντησηΔιαγραφή