Εγκατάσταση προγραμμάτων με μεταγλώττιση του πηγαίου κώδικα και... απεγκατάσταση!

Simos Xenitellis simos.lists at googlemail.com
Thu Mar 13 00:25:21 GMT 2008


Τα παρακάτω τα έγραψα πριν λίγο καιρό ως οδηγίες για τον αδερφό μου· 
μπορείς να τα βρεις ότι βοηθούν.

=================
Παρακάτω είναι οδηγίες για τη μεταγλώττιση λογισμικού.
Α. Πριν την μεταγλώττιση, είναι καλό να δεις αν το πακέτο είναι 
διαθέσιμο έτοιμο. Για παράδειγμα, μπορεί να βρεθεί με αναζήτηση στο 
Synaptic.
Β. Γενικά, τα πακέτα πηγαίου κώδικα είναι συμπιεσμένα με δύο τρόπους, 
ανάλογα με την κατάληξη του αρχείου.
Έτσι,
   χχχχχχχχ.tar.gz          - συμπιεσμένο tar, gz
   χχχχχχχχ.tgz               - συμπιεσμένο tar, gz (το ίδιο)
   χχχχχχχχ.tar.bz2       - συμπιεσμένο tar, bzip

Για να επιβεβαιώσεις αν είναι έτσι, μπορείς πάντα να γράψεις π.χ.

 > file spcaview-20061208.tar.gz
spcaview-20061208.tar.gz: gzip compressed data, was "N0voYb.tar", from 
Unix, last modified: Fri Dec  8 17:02:18 2006, max compression
 > file rarian-0.7.0.tar.bz2
rarian-0.7.0.tar.bz2: bzip2 compressed data, block size = 900k

Εκτέλεσα την εντολή file πάνω στο αρχείο. Στην πρώτη περίπτωση λέει ότι 
το αρχείο είναι πράγματι tar, gz, στην δεύτερη λέει ότι είναι bzip2 (και 
μετά είναι tar).

Στην πρώτη περίπτωση, για την αποσυμπίεση,

 > tar xvfz <όνομα αρχείου>

στην δεύτερη περίπτωση,

 > tar xvfj <όνομα αρχείου>

Η εντολή tar παίρνει ως ορίσματα συγκεκριμένους χαρακτήρες. Εδώ, τα xvfz 
και xvfj είναι ορίσματα. Διαφέρουν στα z, j που σημαίνει ότι το ένα 
είναι για gz και το άλλο για συμπίεση bzip2.
To x κάνει εξαγωγή των επιμέρους αρχείων
Το v εμφανίζει τα ονόματα των αρχείων στην οθόνη
Το f επιδρά σε αρχείο (σε αντίθεση από συσκευή backup).

Γ. Τώρα, για τη μεταγλώττιση.
Μόλις μπεις στον νέο κατάλογο με τον πηγαίο κώδικα, τρέχεις ένα "ls" για 
να δεις τα περιεχόμενα. Ανάλογα με τα περιεχόμενα, κάνεις
α. Αν υπάρχει  αρχείο   autogen.sh   το εκτελείς (με ./autogen.sh) για 
να δημιουργήσει το αρχείο "configure".
β. Αν υπάρχει  αρχείο   configure      το εκτελείς (με ./configure) για 
να δημιουργήσει το αρχείο "Makefile".
γ. Αν υπάρχει  αρχείο   Makefile         κάνεις μεταγλώττιση τρέχοντας 
απλά "make".

Αν όλα πάνε καλά, δεν θα υπάρχει κάποιο πρόβλημα.
Ωστόσο, μπορεί να παρουσιαστούν πρόβλήματα, είτε στα βήματα α, β, είτε 
στο βήμα γ.
Αν το πρόβλημα είναι στα βήματα α, β, τότε βοηθάει πάρα πολύ, διότι θα 
σου πει ότι ότι λείπει το τάδε πακέτο, το οποίο μπορείς να εγκαταστήσεις.
Αν το πρόβλημα είναι στο βήμα γ, τότε είναι πιθανό να υπάρχει κάποια 
ασυμβατότητα. Εδώ θέλει αναζήτηση στο Διαδίκτυο για τυχόν εύκολες 
λύσεις, ή μου στέλνεις γράμμα με τα μηνύματα λάθους για συμβουλές.

Αρκετές φορές, τα πακέτα διαθέτουν μόνο ένα αρχείο Makefile, που 
σημαίνει ότι απαιτούν ο,τι εξαρτήσεις πακέτων να υπάρχουν ήδη στο 
σύστημα. Οπότε, εδώ μπορείς να δεις μηνύματα λάθους που στην 
πραγματικότητα χρειάζεται να μαντέψεις ποιο πακέτο λείπει.

Μόλις ολοκληρωθεί το make με επιτυχία, θα δημιουργήσει το εκτελέσιμο 
πρόγραμμα. Ανάλογα με το πακέτο, μπορείς να το εκτελέσεις απευθείας (με 
./mynewprogram), είτε να γράψεις "make install". Όταν γράψεις make 
install, πρέπει να είσαι διαχειριστής (root) για να πραγματοποιηθεί. 
Αυτό που προτείνω είναι να τρέξεις  make install ως απλός χρήστης για να 
δεις αν πάει να εγκαταστήσει το πρόγραμμα κάτω από το "/usr/local". Ό,τι 
νέα προγράμματα βάζεις, είναι καλό να μπαίνουν στο /usr/local/ για να 
μην επηρεάζουν το βασικό σύστημα. Αν δεις ότι όντως πάει στο /usr/local, 
τότε κάνε την εγκατάσταση με sudo make install.
Για να καταλάβει ο φλοιό σου (shell) ότι μπήκε νέο πρόγραμμα, τρέχεις 
"rehash" (είναι για το νέο φλοιό tcsh που έχω βάλει στο computer· αν 
έχεις κάνει δική σου εγκατάσταση, αυτό δεν χρειάζεται διότι το κάνει 
αυτόματα). Μετά εκτελείς το πρόγραμμα. Μπορείς να βρεις το όνομα του 
εκτελέσιμου από το ίδιο τον κατάλογο με τον πηγαίο κώδικα. Είναι ένα 
αρχείο με πράσιμο χρώμα (εκτελέσιμο).
=================

Σίμος

Nikos Alexandris wrote:
> On Thu, 2008-03-13 at 00:10 +0200, Konstantinos Togias wrote:
>
> Ευχαριστώ για την ανταπόκριση Κώστα (ή Κωνσταντίνε) ;-)
>
>   
>> 2008/3/12 Nikos Alexandris <nikos.alexandris at uranus.uni-freiburg.de>:
>>     
> [...]
>
>   
>> Πολλές φορές αρκεί ένα
>>
>> make uninstall
>>
>> από τον κατάλογο που βρίσκεται ο πηγαίος κώδικας. Έστω και αν δεν
>> αναφέρεται ρητά στο readme, πολλές φορές έχει οριστεί διαδικασία
>> uninstall στο makefile, που απλά διαγράφει από το σύστημα τα αρχεία
>> που αντιγράφηκαν με το make install.
>>     
> Η δική μου (μικρή μεν εμπειρία)  το αντίθετο μου έχει δείξει.
>
> Σε πειραματικό, και όχι μόνο επίπεδο, ασχολούμαι με λογισμικό Συστημάτων
> Γεωγραφικών Πληροφοριών, βλέπε:
>
> προγράμματα
> gdal/ogr
> grass
> qgis
> thuban
>
> βιβλιοιήκες/ οδηγοί
> ogdi
> hdf
>
> και άλλα διάφορα - και όλα αυτά σε 64bit όπου και υπάρχουν ακόμα διάφορα
> κολλήματα (π.χ. Java για το world wind *** παρεπιπτόντως, το
> συγκεκριμένο πρόγραμμα είναι πολύ δυνατό και "όμορφο", ίσως σε πολλά
> καλύτερα από το googleearth***)
>
> Τα περισσότερα αναφεόρονατι στο UbuntuGIS (για να αποφύγω να αντιγράψω
> διευθύνσεις HTML)
>
> Και χρειάζομαι πολλές φορές να σβήσω προγράμματα για διάφορους λόγους.
>   
>> Στην περίπτωση που το πρόγραμμα αποτελείται από ένα μόνο εκτελέσιμο
>> δυαδικό αρχείο (αρκετά συχνή περίπτωση), τότε είναι εύκολη και η
>> διαγραφή του αρχείου αυτού από το σύστημα με το χέρι (πχ. με rm
>> /usr/local/bin/lala). Το ίδιο ακριβώς θα έκανε και ένα uninstall
>> script.
>>
>> Τέλος από την εμπειρία μου σπάνια έχει χρειαστεί να απεγκαταστήσω
>> κάποιο πρόγραμμα που εγκατέστησα σε linux. Στο linux δεν υπάρχουν
>> registries και άλλα τέτοια περίεργα πράγματα που κάνουν άλλα
>> λειτουργικά πιο αργά και ασταθή όταν αυξάνεται ο αριθμός των
>> εγκατεστημένων εφαρμογών. Οι μόνοι βασικοί λόγοι να ενδιαφερθεί
>> κάποιος για uninstall κάποιου προγράμματος είναι είτε για να
>> ελευθερώσει χώρο στο δίσκο, είτε για ασφάλεια να μην θέλει να έχει
>> εκτελέσιμα που δεν χρειάζονται και θα μπορούσαν να χρησιμοποιηθούν από
>> έναν υποτιθέμενο εισβολέα.
>>
>>     




More information about the Ubuntu-gr mailing list