Linux για αρχάριους/Εγκατάσταση Προγραμμάτων

Από Βικιβιβλία

Μία από τις βασικότερες διαφορές που υπάρχει μεταξύ του Linux και των Windows είναι το μοντέλο που ακολουθείται για την εγκατάσταση/απεγκατάσταση των διαφόρων προγραμμάτων. Όπως θα δούμε στη συνέχεια, το Linux, υιοθετώντας δύο στοιχεία που δεν υπάρχουν στα Windows, τα repositories (αποθετήρια) και τους package managers (διαχειριστές πακέτων), κατορθώνει αφ’ ενός να απλοποιήσει και αφ’ ετέρου να κάνει σημαντικά πιο ασφαλή τη διαδικασία της εγκατάστασης προγραμμάτων.

Εγκατάσταση προγραμμάτων[επεξεργασία]

Η διαδικασία της εγκατάστασης των προγραμμάτων στο Linux μπορεί να συνοψισθεί στους ακόλουθους δύο κανόνες:

  1. «ΠΟΤΕ δεν κατεβάζουμε προγράμματα από τυχαίες ιστοσελίδες στο διαδίκτυο (internet).»
  2. «Χρησιμοποιούμε ΠΑΝΤΑ τον package manager της διανομής μας.»

Τους κανόνες αυτούς τους αναφέρουμε πρώτους-πρώτους, πριν εξηγήσουμε τη λογική πίσω από αυτούς, διότι, καλώς ή κακώς πρέπει, αλλά βολεύει κιόλας, να τους τηρούμε ευλαβικά. Ας δούμε όμως λίγο πιο αναλυτικά τα πράγματα.

Πακέτα (packages)[επεξεργασία]

Κάθε πρόγραμμα στο Linux το κατεβάζουμε ως «πακέτο» (package). Κάθε πακέτο περιέχει όλα όσα χρειάζονται προκειμένου να γίνει σωστά η εγκατάσταση του προγράμματος στο σύστημά μας. Κατ’ ουσίαν τα πακέτα αυτά είναι κάτι αντίστοιχο των installers που υπάρχουν στα Windows. Η διαφορά τους είναι ότι ενώ τον installer τον φτιάχνει ο προγραμματιστής που έφτιαξε το πρόγραμμα, τα πακέτα στο Linux συνήθως τα φτιάχνουν άτομα από την κοινότητα της διανομής μας τα οποία είναι επιφορτισμένα με αυτόν το ρόλο. Με τον τρόπο αυτό, αφήνοντας δηλαδή τη δημιουργία των πακέτων σε ανθρώπους που ξέρουνε τη δουλειά, εξασφαλίζεται ότι τα προγράμματα θα εγκαθίστανται και θα απεγκαθίστανται σωστά και χωρίς προβλήματα.

Υπάρχουν διάφοροι τύποι πακέτων. Τα δύο βασικότερα είναι τα deb και τα rpm αλλά υπάρχουν και άλλοι τύποι. Κάθε διανομή επιλέγει και χρησιμοποιεί έναν συγκεκριμένο τύπο. Ο τύπος του πακέτου δεν επηρεάζει με κάποιον τρόπο εμάς, ως τελικούς χρήστες.

Αποθετήρια (Repositories ή Repos)[επεξεργασία]

Κάθε διανομή αποθηκεύει όλα της τα πακέτα σε κάποιον διακομιστή (server) στο διαδίκτυο (αν δεν ξέρετε τι είναι ο διακομιστής, σκεφθείτε τον σαν μία ιστοσελίδα). Ο διακομιστής αυτός ονομάζεται «αποθετήριο» (repository) αν και θα συναντήσετε συχνά να αναφέρεται και ως «repo». Κάθε διανομή έχει, κατά κανόνα, το δικό της αποθετήριο. Πέρα από το επίσημο αποθετήριο, το οποίο συντηρείται από τα άτομα που είναι επιφορτισμένα με την ανάπτυξη της διανομής μας, μπορεί να υπάρχουν και ανεπίσημα αποθετήρια, τα οποία τα συντηρούν τυχαίοι χρήστες και των οποίων η χρήση γίνεται με δική μας ευθύνη.

Επίσης, τα αποθετήρια των περισσοτέρων διανομών Linux κατοπτρίζονται σε διάφορα σημεία του πλανήτη, σε διακομιστές με ακριβή αντίγραφα του περιεχομένου τους (mirrors), οι οποίοι ανήκουν συνήθως σε πανεπιστήμια, ερευνητικά κέντρα, οργανισμούς κ΄ παρόχους υπηρεσιών τηλεπικοινωνιών κ΄ διαδικτύου, κλπ. οργανισμούς, όπου διατίθεται χώρος φιλοξενίας στις διανομές ώστε να επιτυγχάνεται διαμοιρασμός κ΄ εξισορρόπηση του φορτίου (load balancing) της ταυτόχρονης διαμεταγωγής πακέτων από μεγάλο πλήθος χρηστών, καθώς και καλύτερες ταχύτητες διαμεταγωγής.

Κάθε φορά που θέλουμε να εγκαταστήσουμε ένα πρόγραμμα στο Linux μπορούμε να πάμε στο αποθετήριο της διανομής μας (κατά προτίμηση στο κοντινότερο γεωγραφικά, και, επομένως, κατά κανόνα ταχύτερο), να βρούμε το κατάλληλο πακέτο, να το κατεβάσουμε στον υπολογιστή μας και να το εγκαταστήσουμε. Αυτή τη διαδικασία όμως, δεν την κάνουμε ποτέ χειροκίνητα, αλλά χρησιμοποιούμε ΠΑΝΤΑ τον διαχειριστή πακέτων (package manager) της διανομής μας, ο οποίος, σημειωτέον, με τις κατάλληλες ρυθμίσεις, συνδέεται στον βέλτιστο κόμβο (mirror).

Διαχειριστής Πακέτων (Package Manager)[επεξεργασία]

Ο διαχειριστής πακέτων (package manager) είναι ένα εξειδικευμένο πρόγραμμα που έχει κάθε διανομή και του οποίου η λειτουργία είναι να (απ)εγκαθιστά προγράμματα στο σύστημά μας αλλά και να εξασφαλίζει ότι το σύστημά μας έχει πάντα τις τελευταίες εκδόσεις των προγραμμάτων που χρησιμοποιούμε. Υπάρχουν διάφοροι διαχειριστές πακέτων, αλλά κάθε διανομή επιλέγει και χρησιμοποιεί κάποιον συγκεκριμένο.

Πιο συγκεκριμένα, ο διαχειριστής πακέτων:

  1. Συνδέεται στο αποθετήριο και κατεβάζει έναν κατάλογο με τα ονόματα όλων των πακέτων που υπάρχουν σε αυτό, καθώς και περιγραφές τους, και λοιπά στατιστικά και άλλα στοιχεία και πληροφορίες (metadata).
  2. Μας εμφανίζει τον κατάλογο αυτόν, επιτρέποντάς μας να κάνουμε αναζήτηση πακέτων με λέξεις-κλειδιά (keywords) αλλά και εμφανίζοντάς μας τα πακέτα ανά κατηγορίες.
  3. Αναλαμβάνει να εγκαταστήσει/απεγκαταστήσει όποιο πρόγραμμα του πούμε με ένα και μόνο κλικ.
  4. Μας ειδοποιεί κάθε φορά που υπάρχει καινούργια έκδοση κάποιου πακέτου κάποιου προγράμματος που έχουμε εγκατεστημένο στο σύστημά μας και αναλαμβάνει την εγκατάσταση της νέας έκδοσης.

Όπως γίνεται εύκολα κατανοητό, στο Linux δεν χρειάζεται ούτε αναζήτηση στο διαδίκτυο προκειμένου να βρούμε τι εφαρμογές υπάρχουν διαθέσιμες, ούτε installers με άπειρες επιλογές, ούτε τίποτα. Απλά ανοίγεις τον διαχειριστή πακέτων, βρίσκεις το πρόγραμμα που θες και το εγκαθιστάς. Κυριολεκτικά, πρόκειται για 3 κλικ υπόθεση.

Συμβουλή: Πέρα από τα παραπάνω, πολλοί διαχειριστές πακέτων επιτρέπουν στους χρήστες των διανομών να δίνουν βαθμολογίες ή και κριτικές στα προγράμματα που χρησιμοποιούν, επιτρέποντάς μας με τον τρόπο αυτό να δούμε ποιες είναι οι πιο δημοφιλείς εφαρμογές και διευκολύνοντάς μας έτσι στην επιλογή κάποιου προγράμματος.
Σημείωση: Κάθε φορά που γίνεται εγκατάσταση ή απεγκατάσταση ενός προγράμματος, επειδή αλλάζουν τα αρχεία του συστήματος, χρειάζεται να δίνουμε τον κωδικό του επόπτη (ή υπερ-χρήστη) του συστήματος (administrator, ο οποίος, παραδοσιακά, στο Unix, και επομένως στο Linux, ονομάζεται root ή superuser). Η ανάγκη αυτή μπορεί να φαντάζει περιττή σε όσους χρήστες έρχονται από τα Windows, αλλά παίζει πολύ σημαντικό ρόλο στην ασφάλεια του συστήματός μας. Περισσότερες πληροφορίες σχετικά με τον υπερ-χρήστη μπορείτε να βρείτε [ΕΔΩ].
Προειδοποίηση: Ανεξαρτήτως λειτουργικού συστήματος, ένα από τα πιο σημαντικά θέματα όσον αφορά στην ασφάλεια του συστήματος και των αρχείων μας είναι να έχουμε πάντα τις πιο πρόσφατες εκδόσεις του λειτουργικού και των προγραμμάτων που χρησιμοποιούμε. Ο λόγος είναι ότι οι νέες εκδόσεις «κλείνουν» κενά ασφαλείας που υπάρχουν στις παλαιότερες. Ευτυχώς στο Linux είμαστε σε θέση να έχουμε πάντα πλήρως ανανεωμένο σύστημα, κυριολεκτικά με ένα κλικ.

Εξαρτήσεις (dependencies)[επεξεργασία]

Ίσως η πιο δύσκολη αλλά και η πιο σημαντική δουλειά που κάνει ο διαχειριστής πακέτων είναι κάτι στο οποίο δεν έχουμε αναφερθεί ακόμα και ονομάζεται «έλεγχος εξαρτήσεων» (dependency checking).

Πρακτικά, τα περισσότερα προγράμματα, για να τρέξουν, απαιτούν να υπάρχουν στον υπολογιστή άλλα προγράμματα και βιβλιοθήκες (program libraries). Αυτά τα απαιτούμενα προγράμματα, ονομάζονται «εξαρτήσεις» (dependencies) και η παρουσία τους στον υπολογιστή μας είναι απαραίτητη.

Ένα μεγάλο και περίπλοκο πρόγραμμα (π.χ. η σουΐτα εφαρμογών γραφείου LibreOffice) θα έχει πολλές εξαρτήσεις, οι οποίες με τη σειρά τους θα έχουν και άλλες εξαρτήσεις, οι οποίες μπορεί να έχουν άλλες εξαρτήσεις κτλ. κτλ. Όπως είναι εύκολα κατανοητό, η διαχείριση αυτού του συστήματος χειροκίνητα μόνο εύκολη δεν είναι. Ευτυχώς για εμάς, ο διαχειριστής πακέτων αναλαμβάνει αυτόματα τη διαχείριση των εξαρτήσεων, ελέγχοντας και εγκαθιστώντας τις απαραίτητες εξαρτήσεις κάθε προγράμματος.

Έλεγχος Ακεραιότητας Λήψεων κ΄ Γνησιότητας Πακέτων[επεξεργασία]

Εξ ίσου σημαντική λειτουργία του διαχειριστή πακέτων είναι ο έλεγχος της ακεραιότητας των πακέτων, καθώς και της γνησιότητάς τους. Το σύστημα διαχείρισης πακέτων εγκατάστασης, αφού κατεβάσει τα πακέτα από τους αντιστοίχους διακομιστές, και πριν ξεκινήσει την εγκατάσταση, ελέγχει:

  1. την ακεραιότητα των λήψεων, μέσω των ψηφιακών ταυτοτήτων (Message Digests: MD5Sums, SHA1Sums, ...) των πακέτων, εάν, δηλ., τα πακέτα έφθασαν αναλλοίωτα από το διακομιστή στον υπολογιστή μας, καθώς και
  2. τη γνησιότητά τους, με τη χρήση των ψηφιακών υπογραφών (με το σύστημα Κρυπτογραφίας Δημοσίων Κλειδών PGP/PKI) των υπευθύνων για την προετοιμασία τους, συγκρίνοντάς τες με αυτές τις οποίες έχει ήδη καταχωρημένες στην «κλειδοθήκη» του (keyring).

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

Προβλήματα από την εγκατάσταση προγραμμάτων εκτός διαχειριστή πακέτων[επεξεργασία]

Παρά τα όσα έχουμε πει μέχρι τώρα σχετικά με τα πλεονεκτήματα της χρήσης του διαχειριστή πακέτων, η χρήση του δεν είναι υποχρεωτική. Υπάρχουν τρόποι να γίνει εγκατάσταση προγραμμάτων και χωρίς αυτόν· υπάρχουν και περιπτώσεις όπου αυτό είναι απαραίτητο. Παραδείγματος χάρη, μπορεί να θέλουμε να εγκαταστήσουμε κάποιο πρόγραμμα που δεν βρίσκεται στο αποθετήριο της διανομής μας. Το τι κάνουμε στις περιπτώσεις αυτές το εξηγούμε παρακάτω. Όμως, κάθε φορά που παρακάμπτουμε τον διαχειριστή πακέτων, δημιουργούμε ορισμένα προβλήματα τα οποία δεν είναι πάντα εύκολο να λυθούν και τα οποία θα τα βρούμε μπροστά μας στο μέλλον.

Το βασικότερο και συνηθέστερο πρόβλημα είναι ότι εγκαθιστώντας κάποιο πρόγραμμα εκτός διαχειριστή πακέτων, αυτός δεν είναι ενήμερος για τη συγκεκριμένη εγκατάσταση, με αποτέλεσμα να μη μπορεί να την ανανεώσει όταν ανανεώνει (δηλ. ενημερώνει ή/και αναβαθμίζει) τα υπόλοιπα πακέτα του συστήματός μας. Αυτό σημαίνει ότι στο μέλλον, όταν θα ανανεωθούν τα υπόλοιπα πακέτα του συστήματός μας, θα ανανεωθούν και οι εξαρτήσεις του εν λόγω πακέτου, με αποτέλεσμα να υπάρχει το ενδεχόμενο να σταματήσει αυτό να δουλεύει.

Π.χ. έστω ότι έχουμε το πακέτο Α το οποίο εγκαταστήσαμε παρακάμπτοντας τον διαχειριστή πακέτων, και το οποίο εξαρτάται από την έκδοση 2.2 του πακέτου Β. Αν το πακέτο Β ανανεωθεί μέσω του διαχειριστή πακέτων στην έκδοση 3.1, τότε το πακέτο Α θα σταματήσει να δουλεύει και εμείς θα ψάχνουμε να καταλάβουμε τι έχει συμβεί και γιατί κάτι που δούλευε μέχρι χθες, σήμερα δεν λειτουργεί.

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

Το πρόγραμμα που θέλω δεν υπάρχει...[επεξεργασία]

Σε κάποιες περιπτώσεις, μπορεί το πρόγραμμα που θέλουμε να μην υπάρχει στη διανομή μας. Αν χρησιμοποιήσουμε μία μεγάλη και γνωστή διανομή, το ενδεχόμενο αυτό δεν είναι και τόσο σύνηθες. Εάν, παρ’ όλα αυτά, τύχει να μην υπάρχει πακέτο για το πρόγραμμα στα επίσημα αποθετήρια (official repositories) της διανομής μας, τότε η καλύτερη επιλογή είναι να ψάξουμε να βρούμε κάποιο εναλλακτικό πρόγραμμα που μας καλύπτει. Αυτό είναι συνήθως η ευκολότερη αλλά και η καλύτερη λύση. Αν όμως και πάλι για κάποιο λόγο τα αντίστοιχα προγράμματα δεν μας καλύπτουν τότε έχουμε 4 επιλογές:

  • ψάχνουμε και βρίσκουμε κάποιο ανεπίσημο αποθετήριο (στα Αγγλικά λέγονται unofficial repository ή 3rd party repository). Για Ubuntu υπάρχει πληθώρα τέτοιων αποθετηρίων που ονομάζονται ppa (περισσότερες πληροφορίες ΕΔΩ). Αν υπάρχει τέτοιο αποθετήριο, τότε αυτή είναι η προτεινόμενη λύση.
  • ψάχνουμε και βρίσκουμε αν υπάρχει έτοιμο πακέτο *.deb ή *.rpm ή ό,τι άλλο υποστηρίζει ο package manager της διανομής μας, το οποίο όμως θα πρέπει να ταιριάζει με τη διανομή και την έκδοσή της, ώστε να ταιριάζει με τις εξαρτήσεις του προγράμματος. Δεν είναι η καλύτερη λύση γιατί εφ’ όσον θα έχει δημιουργηθεί για άλλη διανομή δεν είμαστε σίγουροι αν θα παίξει σωστά στη δική μας διανομή.
  • δημιουργούμε μόνοι μας ένα πακέτο για τον package manager της διανομής μας. Ως διαδικασία είναι δύσκολη για έναν αρχάριο, γι’ αυτό και δε θα επεκταθούμε άλλο.
  • κάνουμε μεταγλώττιση και εγκατάσταση του προγραμμάτος κατ’ ευθείαν από τον πηγαίο κώδικα (compile and install from source), χωρίς δηλαδή να χρησιμοποιήσουμε τον package manager. H διαδικασία, συνήθως, δεν είναι ιδιαίτερα δύσκολη, αλλά, όπως είπαμε προηγουμένως, η εγκατάσταση προγραμμάτων εκτός package manager, κάποια στιγμή (σε βάθος χρόνου) και κατά πάσα πιθανότητα, θα προκαλέσει προβλήματα.

Απεγκατάσταση προγραμμάτων[επεξεργασία]

Η απεγκατάσταση προγραμμάτων (uninstall) στα Windows γίνεται μέσω της χρήσης ειδικών προγραμμάτων απεγκατάστασης τα οποία εγκαθίστανται μαζί με το κυρίως πρόγραμμα κατά τη διαδικασία της εγκατάστασης. Το πρόβλημα αυτού του τρόπου απεγκατάστασης είναι ότι τα περισσότερα από αυτά τα ειδικά προγράμματα δεν κάνουν καλά τη δουλειά τους και αφήνουν διάφορα «υπολείμματα» στον υπολογιστή μας. Τα υπολείμματα αυτά είναι συνήθως εγγραφές στο Μητρώο (Registry) των Windows οι οποίες με τη σειρά τους «φορτώνουν» τον υπολογιστή μας, υποβαθμίζοντας συνεχώς την απόδοσή του και οδηγώντας μας τελικά σε format και επανεγκατάσταση του λειτουργικού. Τα προβλήματα αυτά γέννησαν την ανάγκη να δημιουργηθεί μια ολόκληρη γενιά προγραμμάτων των οποίων ο μόνος ρόλος είναι η απεγκατάσταση προγραμμάτων και το «καθάρισμα» του Registry.

Στο Linux πάλι, το μόνο που έχουμε να κάνουμε είναι να αντιστρέψουμε τη διαδικασία της εγκατάστασης. Δηλαδή:

  • Αναζήτηση του προγράμματος στον διαχειριστή πακέτων (package manager) της διανομής μας.
  • Επιλογή του προγράμματος και κλικ στο κουμπί «Απεγκατάσταση» (uninstall).
  • Εισαγωγή του κωδικού υπερ-χρήστη.

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

Εγκατάσταση προγραμμάτων Windows σε Linux[επεξεργασία]

Wine/Crossover

Games & Steam[επεξεργασία]

Αν και όπως έχουμε ήδη πει, όσοι ενδιαφέρονται να μπορούν να παίζουν όλα τα καινούργια παιγνίδια που βγαίνουν για PC τότε είναι υποχρεωμένοι να κρατήσουν τουλάχιστον κάποια εγκατάσταση Windows στον υπολογιστή τους, αυτό όμως δε σημαίνει ότι δεν υπάρχουν παιγνίδια στο Linux