APT HOWTO --------- Gustavo Noronha Silva Aπόδοση στα Ελληνικά Στεφανάτος Κώστας 1.8.5 - July 2003 ------------------------------------------------------------------------------- Abstract -------- Το έγγραφο αυτό, προσπαθεί να δώσει στον χρήστη τις βασικές γνώσεις για να κατανοήσει τη διαδικασία διαχείρισης πακέτων στο Debian, με το APT. Ο στόχος του είναι να κάνει πιο εύκολη τη ζωή των νέων χρηστών του Debian και να βοηθήσει εκείνους που επιθυμούν να κατανοήσουν ακόμα περισσότερο τη διαχείριση αυτού του συστήματος. Δημιουργήθηκε για το Debian, έτσι ώστε να βοηθήσει, να βελτιωθεί η διαθέσιμη υποστήριξη για τους χρήστες αυτής της διανομής. Copyright Notice ---------------- Copyright (C) 2001, 2002 Gustavo Noronha Silva Πνευματικά δικαιώματα (C) για την απόδοση στα Ελληνικά 2003 Κώστας Στεφανάτος Το εγχειρίδιο αυτό κυκλοφορεί υπό τους όρους τής GNU FDL (Free Documentation License). Γράφτηκε με την ελπίδα ότι θα είναι χρήσιμο στην κοινότητα αλλά δεν καλύπτεται από κανενός είδους εγγύηση· χρησιμοποιήστε το με δική σας ευθύνη. ------------------------------------------------------------------------------- Contents -------- 1. Εισαγωγή 2. Βασικές Ρυθμίσεις 2.1. Το αρχείο /etc/apt/sources.list 2.2. Πώς να χρησιμοποιήσετε το APT τοπικά 2.3. Αποφασίζοντας ποια πηγή είναι η καλύτερη ώστε να περιληφθεί στο αρχείο sources.list: netselect, netselect-apt 2.4. Προσθέτοντας ένα CD-ROM στο αρχείο sources.list 3. Διαχείριση Πακέτων 3.1. Ανανεώνοντας τον κατάλογο των διαθέσιμων πακέτων 3.2. Εγκαθιστώντας πακέτα 3.3. Αφαιρώντας πακέτα 3.4. Αναβαθμίζοντας πακέτα 3.5. Αναβαθμίζοντας σε μια νέα διανομή 3.6. Αφαιρώντας αχρησιμοποίητα αρχεία πακέτων: apt-get clean και autoclean 3.7. Χρησιμοποιώντας το APT με το dselect 3.8. Πώς να διατηρήσετε ένα ανάμικτο σύστημα 3.9. Πως να αναβαθμίσετε πακέτα από συγκεκριμένες εκδόσεις του Debian 3.10. Πως να διατηρήσετε συγκεκριμένα πακέτα, εγκατεστημένα(περίπλοκο) 4. Πολύ χρήσιμοι βοηθοί 4.1. Εγκατάσταση τοπικά μεταγλωττισμένων πακέτων: equivs 4.2. Αφαιρώντας αχρησιμοποίητα αρχεία τοπικοποίησης: localepurge 4.3. Πώς να γνωρίζετε ποια πακέτα μπορούν να αναβαθμιστούν 5. Παίρνοντας πληροφορίες για πακέτα. 5.1. Ανακαλύπτοντας ονόματα πακέτων 5.2. Χρησιμοποιώντας την dpkg για να βρούμε ονόματα πακέτων 5.3. Πως να εγκαταστήσετε πακέτα ¨κατά βούληση¨ 5.4. Πώς να ανακαλύψετε σε ποιό πακέτο ανήκει ένα αρχείο 5.5. Πως να παραμένετε ενημερωμένοι για τις αλλαγές στα πακέτα. 6. Δουλεύοντας με πακέτα κώδικα 6.1. Κατεβάζοντας πακέτα κώδικα 6.2. Πακέτα απαραίτητα για τη μεταγλώττιση ενός πηγαίου πακέτου 7. Πως να αντιμετωπίσετε σφάλματα 7.1. Συνηθισμένα σφάλματα 7.2. Που μπορώ να βρώ βοήθεια; 8. Ποιές διανομές υποστηρίζουν το APT; 9. Ευχαριστίες 10. Νέες εκδόσεις αυτού του εκπαιδευτικού κειμένου ------------------------------------------------------------------------------- 1. Εισαγωγή ----------- Αρχικά υπήρχε το .tar.gz. Οι χρήστες έπρεπε να συνθέτουν κάθε πρόγραμμα που ήθελαν να χρησιμοποιήσουν στα συστήματά τους με GNU/Linux. Όταν δημιουργήθηκε το Debian, θεωρήθηκε απαραίτητο η διανομή να περιέχει μία μέθοδο διαχείρισης των πακέτων που ήταν εγκατεστημένα στο μηχάνημα. Το σύστημα αυτό ονομάστηκε `dpkg'. Έτσι το διάσημο `πακέτο' εμφανίστηκε για πρώτη φορά στο GNU/Linux, λίγο πριν η Red Hat αποφασίσει να δημιουργήσει, αντίστοιχα, το δικό της σύστημα `rpm'. Ένα νέο δίλημμα απασχόλησε σύντομα τα μυαλά των δημιουργών του GNU/Linux. Χρειάζονταν ένα γρήγορο, πρακτικό, και αποτελεσματικό τρόπο για να εγκαθιστούν πακέτα ο οποίος θα διαχειριζόταν, αυτόματα, τις εξαρτήσεις τους και θα τακτοποιούσε τα αρχεία ρυθμίσεών τους κατά την αναβάθμιση. Εδώ πάλι, το Debian διατήρησε την ηγεσία στις νέες τεχνολογίες, δημιουργώντας το APT, το Advanced Packaging Tool, το οποίο έκτοτε η Conectiva το τροποποίησε για χρήση με το rpm και το έχουν υιοθετήσει και άλλες διανομές. Το εγχειρίδιο αυτό δεν καλύπτει το apt-rpm, την έκδοση APT της Conectiva αν βέβαια έχετε "διορθώσεις" που απευθύνονται σε αυτή την κατεύθυνση, τότε αυτές είναι ευπρόσδεκτες Το εγχειρίδιο αυτό είναι βασισμένο στην επόμενη έκδοση του Debian, τη `Sarge'. ------------------------------------------------------------------------------- 2. Βασικές Ρυθμίσεις -------------------- 2.1. Το αρχείο /etc/apt/sources.list ------------------------------------ Σαν μέρος της λειτουργίας του, το APT καταχωρεί σε αρχείο, ένα κατάλογο με τις 'πηγές', από τις οποίες μπορούν να αποκτώνται πακέτα. Αυτό το αρχείο είναι το `/etc/apt/sources.list'. Οι καταχωρήσεις σε αυτό το αρχείο συνήθως έχουν την ακόλουθη μορφή: deb http://host/debian distribution section1 section2 section3 deb-src http://host/debian distribution section1 section2 section3 Οι παραπάνω καταχωρήσεις είναι φυσικά φανταστικές και δεν θα πρέπει να χρησιμοποιούνται. Η πρώτη λέξη σε κάθε γραμμή, `deb' ή `deb-src' δείχνει το είδος της αρχείοθήκης: εάν δηλαδή περιέχει έτοιμα εκτελέσιμα πακέτα (`deb'), δηλαδή τα μεταγλωττισμένα πακέτα που χρησιμοποιούμε συνήθως, ή πηγαία πακέτα (`deb-src'), τα οποία αποτελούνται από τον πηγαίο κώδικα των προγραμμάτων, μαζί με το αρχείο ελέγχου του Debian (`.dsc') καθώς και το αρχείο `diff.gz' που περιέχει τις αλλαγές που χρειάζονται, για να γίνει το πρόγραμμα κατάλληλο για τη διανομή Debian. Συνήθως βρίσκουμε τα ακόλουθα στο προκαθορισμένο sources.list του Debian: # See sources.list(5) for more information, especialy # Remember that you can only use http, ftp or file URIs # CDROMs are managed through the apt-cdrom tool. deb http://http.us.debian.org/debian stable main contrib non-free deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free deb http://security.debian.org stable/updates main contrib non-free # Uncomment if you want the apt-get source function to work #deb-src http://http.us.debian.org/debian stable main contrib non-free #deb-src http://non-us.debian.org/debian-non-US stable/non-US Αυτές είναι οι γραμμές που χρειάζονται σε μία βασική εγκατάσταση του Debian. Η πρώτη γραμμή `deb' μας κατευθύνει στην επίσημη αρχειοθήκη, η δεύτερη στην αρχειοθήκη εκτός Αμερικής και η τρίτη στην αρχειοθήκη των ενημερώσεων ασφαλείας του Debian. Οι δύο τελευταίες γραμμές θεωρούνται σχόλια (έχουν ένα '#' μπροστά), έτσι το apt-get θα τις αγνοήσει. Αυτές είναι γραμμές `deb-src', πράγμα που σημαίνει ότι μας κατευθύνουν στα πηγαία πακέτα του Debian. Αν κατεβάζετε συχνά πηγαίο κώδικα προγραμμάτων για δοκιμαστικούς σκοπούς ή για επανασύνθεσή τους, αφαιρέστε το '#' μπροστά από αυτές. Το αρχείο `/etc/apt/sources.list' μπορεί να περιέχει διάφορους τύπους γραμμών. Το APT γνωρίζει πως να αντιμετωπίζει αρχειοθήκες τύπου `http', `ftp', `file' (τοπικά αρχεία π.χ. ένας φάκελος που περιέχει προσαρτημένο ένα σύστημα αρχείων ISO9660) και `ssh', απ` όσο γνωρίζω. Μην ξεχάσετε να εκτελέσετε την εντολή `apt-get update' αφού τροποποιήσετε το αρχείο `/etc/apt/sources.list'. Αυτή η ενέργεια πρέπει να γίνει για να μπορέσει το APT να αποκτήσει τον κατάλογο των διαθέσιμων πακέτων από τις πηγές που του έχετε καθορίσει. 2.2. Πώς να χρησιμοποιήσετε το APT τοπικά ----------------------------------------- Ας υποθέσουμε ότι έχετε αρκετά πακέτα .deb, τα οποία θέλετε να εγκαταστήσετε χρησιμοποιώντας το APT, έτσι ώστε οι εξαρτήσεις τους να επιλυθούν αυτόματα. Για να το κάνετε αυτό, δημιουργήστε έναν φάκελο και τοποθετείστε σε αυτόν όλα τα αρχεία .deb, για τα οποία θέλετε να δημιουργήσετε κατάλογο. Για παράδειγμα: # mkdir /root/debs Μπορείτε να τροποποιήσετε τους προσδιορισμούς που υπάρχουν στα αρχεία ελέγχου των πακέτων χρησιμοποιώντας ένα αρχείο `παράκαμψης'. Μέσα σε αυτό το αρχείο μπορείτε να καθορίσετε μερικές παραμέτρους, ώστε να παρακάμψετε αυτές που έρχονται με το πακέτο. Μοιάζει κάπως με το ακόλουθο: package priority section όπου package είναι το όνομα του πακέτου, η προτεραιότητα μπορεί να είναι χαμηλή(low), μεσαία (medium) ή υψηλή(high) και section ο τομέας στον οποίο ανήκει το πακέτο. Το όνομα του αρχείου δεν έχει σημασία, αφού θα πρέπει να το περάσετε ως ορισμό στο `dpkg-scanpackages' αργότερα. Αν δεν θέλετε να γράψετε ένα αρχείο `παράκαμψης', απλώς χρησιμοποιήστε την παράμετρο `/dev/null' κατά την εκτέλεση του `dpkg-scanpackages'. Ενώ βρίσκεστε στον κατάλογο /root δώστε την εντολή: # dpkg-scanpackages debs | gzip > debs/Packages.gz Όπου είναι το όνομα του αρχείου `παράκαμψης'. Η εντολή δημιουργεί το αρχείο `Packages.gz' το οποίο περιέχει διάφορες πληροφορίες σχετικά με τα πακέτα, οι οποίες χρησιμοποιούνται από το APT. Τελικά, για να χρησιμοποιήσετε τα πακέτα προσθέστε (στο sources.list): deb file:/root debs/ Μετά από αυτό, απλά χρησιμοποιήστε την εντολή APT ως συνήθως. Μπορείτε ακόμα να δημιουργήσετε έναν αποθηκευτικό χώρο για πηγαίο κώδικα. Για να το κάνετε αυτό, χρησιμοποιήστε την ίδια διαδικασία, αλλά θυμηθείτε ότι πρέπει να έχετε τα αρχεία `.orig.tar.gz', `.dsc' και `.diff.gz' στον κατάλογο και πρέπει να χρησιμοποιήσετε το `Sources.gz' αντί του `Packages.gz'. Το πρόγραμμα που χρησιμοποιείται είναι και αυτό διαφορετικό. Είναι το `dpkg-scansources'. Η εντολή θα μοιάζει κάπως έτσι: # dpkg-scansources debs | gzip > debs/Sources.gz Παρατηρείστε ότι η `dpkg-scansources' δεν χρειάζεται ένα αρχείο `παράκαμψης'. Η γραμμή του sources.list είναι: deb-src file:/root debs/ 2.3. Αποφασίζοντας ποια πηγή είναι η καλύτερη ώστε να περιληφθεί στο αρχείο sources.list: netselect, netselect-apt ---------------------------------------------------------------------------- Ένα πολύ συχνό ερώτημα που απασχολεί, κυρίως, τους νέους χρήστες, είναι: "ποιός καθεπτρισμός του Debian να περιληφθεί στο `sources.list';". Υπάρχουν πολλοί τρόποι να αποφασίσετε τον καθεπτρισμό. Οι πιο έμπειροι πιθανώς να έχουν κάποια δέσμη ενεργειών η οποία μετρά το χρόνο ping όλων των διαφορετικών mirrors. Αλλά υπάρχει ένα πρόγραμμα που το κάνει αυτό για εμάς: το _netselect_. Για να εγκαταστήσετε το netselect, δώστε: # apt-get install netselect Η εκτέλεση της εντολής αυτής χωρίς παραμέτρους, εμφανίζει την βοήθεια. Αν την τροφοδοτήσετε με ένα κατάλογο καθέπτρισμών διαχωρισμένο με κενά, θα επιστρέψει μια βαθμολογία και ένας από τους καθεπτρισμούς. Αυτή η βαθμολογία υπολογίζει τον εκτιμώμενο χρόνο ping και τον αριθμό των hops (τους υπολογιστές από τους οποίους θα περάσει μια αναζήτηση στο δίκτυο έως ότου να φτάσει στον προορισμό της) και είναι αντιστρόφως ανάλογη της εκτιμώμενης ταχύτητας 'κατεβάσματος' (όσο μικρότερη τόσο καλύτερη). Ο καθεπτρισμός που επιστρέφεται είναι αυτός με τη χαμηλότερη βαθμολογία (ολόκληρη η βαθμολογία μπορεί να εμφανιστεί εάν προσθέσετε την παράμετρο -vv). Δείτε αυτό το παράδειγμα: # netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br 365 ftp.debian.org.br # Αυτό σημαίνει ότι, από τους καθεπτρισμούς που καθορίσαμε ως παραμέτρους του netselect, το `ftp.debian.org.br' ήταν το καλύτερο, με βαθμολογία 365. (Προσοχή!! Αυτό έγινε στον υπολογιστή μου και καθώς η τοπολογία δικτύου είναι πολύ διαφορετική ανάλογα με το σημείο επαφής, η τιμή αυτή δεν είναι απαραίτητα η σωστή ταχύτητα και σε άλλους υπολογιστές). Τώρα, απλά βάλτε το πιο γρήγορο mirror που βρέθηκε από το netselect στο αρχείο `/etc/apt/sources.list' (δείτε και το Section 2.1, `Το αρχείο /etc/apt/sources.list') και ακολουθήστε τις συμβουλές στο Chapter 3, `Διαχείριση Πακέτων'. _Σημείωση:_ η λίστα με τα mirrors μπορεί πάντα να βρεθεί στο αρχείο http://www.debian.org/mirror/mirrors_full. Αρχίζοντας με την έκδοση 0.3, το πακέτο netselect περιλαμβάνει τη δέσμη ενεργειών _netselect-apt_, η οποία κάνει την παραπάνω διαδικασία αυτόματα. Απλώς εισάγετε το distribution tree ως παράμετρο (το προεπιλεγμένο είναι stable) και το αρχείο `sources.list' θα δημιουργηθεί με τα καλύτερα και μη Αμερικάνικα mirrors και θα σωθεί στον τρέχοντα κατάλογο. Το παρακάτω παράδειγμα δημιουργεί ένα αρχείο sources.list της σταθερής διανομής: # ls sources.list ls: sources.list: File or directory not found # netselect-apt stable (...) # ls -l sources.list sources.list # _Θυμηθείτε:_ το αρχείο sources.list δημιουργείται στον τρέχοντα κατάλογο και πρέπει να μεταφερθεί τον κατάλογο `/etc/apt'. Λοιπόν, ακολουθείστε τις συμβουλές στο Chapter 3, `Διαχείριση Πακέτων'. 2.4. Προσθέτοντας ένα CD-ROM στο αρχείο sources.list ---------------------------------------------------- Αν προτιμάτε να χρησιμοποιήσετε το CD-ROM σας για να εγκαταστήσετε πακέτα ή για να αναβαθμίσετε το σύστημά σας αυτόματα με τη χρήση του APT, μπορείτε να το βάλετε στο αρχείο σας `sources.list'. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το πρόγραμμα `apt-cdrom' με τον ακόλουθο τρόπο: # apt-cdrom add με το CD-ROM του Debian στο δίσκο. Θα προσαρτήσει το CD-ROM και αν είναι ένα έγκυρο CD του Debian θα ψάξει για πληροφορίες πακέτων στο δίσκο. Εαν η ρύθμιση του CD-ROM σας είναι λίγο ασυνήθιστη, μπορείτε ακόμα να χρησιμοποιήσετε τις παρακάτω επιλογές: -h - program help -d directory - CD-ROM mount point -r - Rename a recognized CD-ROM -m - No mounting -f - Fast mode, don't check package files -a - Thorough scan mode Για παράδειγμα: # apt-cdrom -d /home/kov/mycdrom add Μπορείτε ακόμα να αναγνωρίσετε ένα CD-ROM, χωρίς να προστεθεί στη λίστα σας: # apt-cdrom ident Σημειώστε ότι αυτό το πρόγραμμα δουλεύει μόνο εάν το CD-ROM σας είναι σωστά καθορισμένο στο `/etc/fstab' του συστήματός σας. ------------------------------------------------------------------------------- 3. Διαχείριση Πακέτων --------------------- 3.1. Ανανεώνοντας τον κατάλογο των διαθέσιμων πακέτων ----------------------------------------------------- Το σύστημα πακέτων χρησιμοποιεί μία ιδιωτική βάση δεδομένων για να παρακολουθεί ποια πακέτα είναι εγκατεστημένα, ποια όχι και ποια είναι διαθέσιμα για εγκατάσταση. Το πρόγραμμα `apt-get' χρησιμοποιεί αυτή τη βάση δεδομένων για να διαπιστώσει πως να εγκαταστήσει τα πακέτα που ζητά ο χρήστης και για να διαπιστώσει ακόμα ποια επιπλέον πακέτα χρειάζονται ώστε ένα συγκεκριμένο πακέτο να λειτουργεί σωστά. Για να ανανεώσετε αυτό τον κατάλογο, θα χρησιμοποιούσατε την εντολή `apt-get update'. Η εντολή αυτή ψάχνει τους καταλόγους των πακέτων στα αρχεία που βρίσκονται στο `/etc/apt/sources.list'· δείτε το Section 2.1, `Το αρχείο /etc/apt/sources.list' για περισσότερες πληροφορίες σχετικά με το αρχείο αυτό. Καλό είναι να εκτελείτε την εντολή αυτή συχνά για να είσθε εσείς και το σύστημά σας ενημερωμένοι για πιθανές ενημερώσεις πακέτων, ειδικά για πακέτα ασφαλείας. 3.2. Εγκαθιστώντας πακέτα ------------------------- Επιτέλους, η διεργασία που όλοι περιμένατε! Με το αρχείο σας sources.list έτοιμο και τον κατάλογο με τα διαθέσιμα πακέτα ενημερωμένο το μόνο που έχετε να κάνετε είναι να εκτελέσετε την `apt-get' για να εγκαταστήσετε τα επιθυμητά πακέτα. Για παράδειγμα, μπορείτε να εκτελέσετε: # apt-get install xchat Το APT θα ψάξει την βάση δεδομένων του για την τελευταία έκδοση του πακέτου αυτού και θα την ανακτήσει από το αντίστοιχο αρχείο όπως αυτό καθορίζεται στο `sources.list'. Σε περίπτωση που το πακέτο αυτό εξαρτάται από ένα άλλο -- όπως στη συγκεκριμένη περίπτωση -- το APT θα ελέγξει τις εξαρτήσεις του και θα εγκαταστήσει τα απαραίτητα πακέτα. Δείτε αυτό το παράδειγμα: # apt-get install nautilus Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 17.2MB will be used. Do you want to continue? [Y/n] Το πακέτο `nautilus' εξαρτάται από τις κοινόχρηστες βιβλιοθήκες που αναφέρονται, επομένως το APT θα τις ανακτήσει από το αρχείο. Εάν είχατε καθορίσει τα ονόματα αυτών των βιβλιοθηκών στη γραμμή εντολών του `apt-get', το APT δεν θα ρωτούσε εάν θέλετε να συνεχίσετε· θα δεχόταν αυτόματα ότι θέλετε να εγκαταστήσετε όλα αυτά τα πακέτα. Αυτό σημαίνει ότι το APT ρωτάει για επιβεβαίωση μόνο όταν πρέπει να εγκαταστήσει πακέτα τα οποία δεν είχαν καθοριστεί στην γραμμή εντολών. Οι ακόλουθες επιλογές για το apt-get μπορεί να είναι χρήσιμες: -h This help text. -d Download only - do NOT install or unpack archives -f Attempt to continue if the integrity check fails -s No-act. Perform ordering simulation -y Assume Yes to all queries and do not prompt -u Show a list of upgraded packages as well Πολλαπλά πακέτα μπορούν να επιλεγούν για εγκατάσταση σε μία γραμμή. Αρχεία τα οποία έχουν 'κατεβαστεί' από το δίκτυο τοποθετούνται στον κατάλογο `/var/cache/apt/archives' για να μπορούν να εγκατασταθούν αργότερα. Μπορείτε να καθορίσετε πακέτα τα οποία θα αφαιρεθούν στην ίδια γραμμή εντολών,επίσης. Απλά βάλτε ένα '-' αμέσως μετά το όνομα του πακέτου προς αφαίρεση, κάπως έτσι: # apt-get install nautilus gnome-panel- Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n] Δείτε τον τομέα Section 3.3, `Αφαιρώντας πακέτα' για λεπτομέρειες στην αφαίρεση πακέτων. Αν με κάποιο τρόπο προκαλέσετε ζημιά σε ένα εγκατεστημένο πακέτο ή απλά θέλετε τα αρχεία ενός πακέτου να επανεγκατασταθούν με τη νεότερη διαθέσιμη έκδοση, χρησιμοποιήστε την επιλογή `--reinstall' με τον ακόλουθο τρόπο: # apt-get --reinstall install gdm Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. Need to get 0B/182kB of archives. After unpacking 0B will be used. Do you want to continue? [Y/n] Η έκδοση του APT που χρησιμοποιήθηκε σε αυτό το εγχειρίδιο είναι η 0.5.3, η τρέχουσα έκδοση του `unstable' (`sid') κατά το χρόνο συγγραφής. Εάν έχετε αυτή την έκδοση εγκατεστημένη, τότε διαθέτετε επιπλέον δυνατότητες : μπορείτε να δίνετε εντολές της μορφής `apt-get install package/distribution' και να εγκαταστήσετε ένα πακέτο από μια συγκεκριμένη έκδοση, ή την εντολή `apt-get install package=version'. Για παράδειγμα: # apt-get install nautilus/unstable θα εγκαταστήσει το nautilus από την έκδοση `unstable' ακόμα και αν έχετε εγκατεστημένη την `stable'. Αποδεκτές ονομασίες για το 'distribution' είναι οι `stable', `testing', και `unstable'. Ίσως προτιμήσετε τη χρήση του `-t' για την επιλογή της έκδοσης προέλευσης, έτσι ώστε το `apt-get' να προτιμά αυτή την έκδοση όταν επιλύει εξαρτήσεις. _ΣΗΜΑΝΤΙΚΌ_: η έκδοση `unstable' του Debian είναι αυτή η οποία δέχεται πρώτη τις νεώτερες εκδόσεις των πακέτων. Εδώ γίνονται όλες οι αλλαγές από τις οποίες περνά ένα πακέτο, από τα πιό μικρά μέχρι τα πιό σημαντικά που επηρεάζουν πολλά άλλα ή και ολόκληρο το σύστημα. Έχοντάς υπόψιν σας τα παραπάνω να θυμάστε ότι αυτή η έκδοση της διανομής _δεν_ πρέπει να χρησιμοποιείται από άπειρους χρήστες ή από αυτούς που απαιτούν δοκιμασμένη σταθερότητα. Η έκδοση `testing' είναι σε ελαφρώς καλύτερη μοίρα σε σχέση με την `unstable' όσον αφορά την σταθερότητα τουλάχιστον, αλλά και πάλι για συστήματα παραγωγής καλύτερα να χρησιμοποιείτε την έκδοση stable. 3.3. Αφαιρώντας πακέτα ---------------------- Εάν δεν χρειάζεστε πλέον ένα πακέτο, μπορείτε να το αφαιρέσετε από το σύστημά σας χρησιμοποιώντας το APT. Για να το κάνετε αυτό απλώς πληκτρολογείστε: `apt-get remove package'. Για παράδειγμα: # apt-get remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n] Όπως μπορείτε να δείτε στο παραπάνω παράδειγμα, το APT αφαιρεί και τα πακέτα που εξαρτώνται από το πακέτο που ζητήσατε να αφαιρεθεί. Δεν υπάρχει τρόπος να αφαιρεθεί ένα πακέτο με το APT χωρίς να αφαιρεθούν και τα πακέτα που εξαρτώνται από αυτό. Εκτελώντας την `apt-get', όπως παραπάνω, θα αφαιρεθούν τα πακέτα αλλά τα αρχεία ρυθμίσεών τους, εάν υπάρχουν, θα παραμείνουν άθικτα στο σύστημα. Για μία ολοκληρωτική αφαίρεση του πακέτου, εκτελέστε: # apt-get --purge remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n] Προσέξτε το '*' μετά τα ονόματα. Δείχνει ότι τα αρχεία ρυθμίσεων του κάθε πακέτου θα αφαιρεθούν επίσης. Όπως και στην περίπτωση της μεθόδου `install', μπορείτε να χρησιμοποιήσετε ένα σύμβολο με την `remove' για να αντιστρέψετε το νόημά της για ένα συγκεκριμένο πακέτο. Στην περίπτωση της αφαίρεσης, αν προσθέσετε ένα `'+'' αμέσως μετά το όνομα του πακέτου, το πακέτο θα εγκατασταθεί αντί να αφαιρεθεί. # apt-get --purge remove gnome-panel nautilus+ Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 nautilus The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n] Παρατηρείστε ότι η `apt-get' παρουσιάζει σε λίστα τα επιπλέον πακέτα που θα εγκατασταθούν (δηλαδή, τα πακέτα που η εγκατάστασή τους είναι απαραίτητη για τη σωστή λειτουργία του πακέτου που ζητήθηκε η εγκατάσταση),και αυτά που θα αφαιρεθούν, και αυτά που θα εγκατασταθούν (συμπεριλαμβάνοντας τα επιπλέον πακέτα πάλι). 3.4. Αναβαθμίζοντας πακέτα -------------------------- Οι αναβαθμίσεις των πακέτων είναι μια μεγάλη επιτυχία του συστήματος APT. Μπορούν να επιτευχθούν με μία μόνο εντολή: `apt-get upgrade'. Μπορείτε να χρησιμοποιήσετε την εντολή αυτή για να αναβαθμίσετε πακέτα μέσα στην ίδια διανομή, καθώς και να αναβαθμίσετε σε μία νέα διανομή, αν και γι αυτό το τελευταίο προτιμάται η εντολή `apt-get dist-upgrade'· δείτε τον τομέα Section 3.5, `Αναβαθμίζοντας σε μια νέα διανομή' για περισσότερες λεπτομέρειες. Είναι χρήσιμο να εκτελείτε αυτήν την εντολή με την επιλογή `-u'. Η επιλογή αυτή κάνει το APT να εμφανίζει την ολοκληρωμένη λίστα των πακέτων που θα αναβαθμιστούν. Χωρίς αυτήν, θα κάνετε αναβάθμιση στα τυφλά. Το APT θα 'κατεβάσει' τις τελευταίες εκδόσεις του κάθε πακέτου και θα τις εγκαταστήσει στη σωστή σειρά. Είναι σημαντικό να εκτελείτε πάντα την `apt-get update' προτού δοκιμάσετε κάτι τέτοιο. Δείτε τον τομέα Section 3.1, `Ανανεώνοντας τον κατάλογο των διαθέσιμων πακέτων'. Δείτε αυτό το παράδειγμα: # apt-get -u upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back cpp gcc lilo The following packages will be upgraded adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded. Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used. Do you want to continue? [Y/n] Η διαδικασία είναι πολύ απλή. Παρατηρείστε ότι στις πρώτες γραμμές, η `apt-get' λέει ότι μερικά πακέτα έχουν γίνει `kept back'. Αυτό σημαίνει ότι υπάρχουν νέες εκδόσεις αυτών των πακέτων, οι οποίες δε θα εγκατασταθούν για κάποιο λόγο. Πιθανοί λόγοι είναι χαλασμένες εξαρτήσεις (ένα πακέτο από το οποίο εξαρτάται δεν έχει μια έκδοση διαθέσιμη για κατέβασμα) ή νέες εξαρτήσεις (το πακέτο πλέον εξαρτάται από νέα πακέτα μετά την τελευταία έκδοση). Δεν υπάρχει καθαρή λύση για την πρώτη περίπτωση. Για τη δεύτερη, αρκεί να εκτελέσετε την `apt-get install' για το συγκεκριμένο πακέτο, καθώς αυτό θα κατεβάσει τις εξαρτήσεις. Μία ακόμα πιο καθαρή λύση είναι να χρησιμοποιήσετε την `dist-upgrade'. Δείτε τον τομέα Section 3.5, `Αναβαθμίζοντας σε μια νέα διανομή'. 3.5. Αναβαθμίζοντας σε μια νέα διανομή -------------------------------------- Αυτό το χαρακτηριστικό του APT σας επιτρέπει να αναβαθμίσετε ένα ολόκληρο σύστημα Debian απ' ευθείας, είτε μέσω του Internet είτε μέσω ενός νέου CD (το οποίο αγοράσατε ή κατεβάσατε ως ISO image). Χρησιμοποιείται ακόμα όταν πραγματοποιούνται αλλαγές στις σχέσεις μεταξύ των εγκατεστημένων πακέτων. Με την `apt-get upgrade', αυτά τα πακέτα θα παρέμεναν άθικτα (`kept back'). Για παράδειγμα, υποθέστε ότι χρησιμοποιείτε την βελτιωμένη έκδοση 0 της σταθερής έκδοσης του Debian και αγοράζετε ένα CD με την βελτιωμένη έκδοση 3. Μπορείτε μέσω του APT να αναβαθμίσετε το σύστημά σας από αυτό το νέο CD. Για να το πετύχετε, χρησιμοποιήστε την `apt-cdrom' (δείτε τον τομέα Section 2.4, `Προσθέτοντας ένα CD-ROM στο αρχείο sources.list') για να προσθέσετε το CD στο αρχείο σας `/etc/apt/sources.list' και στη συνέχεια εκτελέστε την `apt-get dist-upgrade'. Είναι σημαντικό να σημειώσετε ότι το APT ψάχνει πάντα για τις πιο πρόσφατες εκδόσεις των πακέτων. Επομένως, αν το αρχείο σας `/etc/apt/sources.list' επρόκειτο να παρουσιάσει σε λίστα ένα αρχείο που είχε μια πιο πρόσφατη έκδοση ενός πακέτου από αυτή του CD, το APT θα κατέβαζε το πακέτο από εκεί. Στο παράδειγμα που δώσαμε στον τομέα Section 3.4, `Αναβαθμίζοντας πακέτα', είδαμε ότι μερικά πακέτα είχαν γίνει `kept back'. Θα λύσουμε αυτό το πρόβλημα τώρα με την μέθοδο `dist-upgrade': # apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following NEW packages will be installed: cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages have been kept back lilo The following packages will be upgraded adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded. Need to get 0B/7098kB of archives. After unpacking 3118kB will be used. Do you want to continue? [Y/n] Παρατηρείστε τώρα ότι τα πακέτα θα αναβαθμιστούν, και νέα πακέτα θα εγκατασταθούν (οι νέες εξαρτήσεις των πακέτων). Παρατηρείστε ακόμα ότι το lilo γίνεται ακόμα `kept back'. Μάλλον έχει σοβαρότερο πρόβλημα από μία νέα εξάρτηση. Μπορούμε να το διαπιστώσουμε εκτελώντας: # apt-get -u install lilo Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be REMOVED: debconf-tiny The following NEW packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be upgraded lilo 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded. Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used. Do you want to continue? [Y/n] Όπως σημειώθηκε ανωτέρω, το lilo έχει μια νέα σύγκρουση με το πακέτο `debconf-tiny', πράγμα που σημαίνει ότι δεν μπορούσε να εγκατασταθεί (ή αναβαθμιστεί) χωρίς να αφαιρεθεί το debconf-tiny. Για να γνωρίζετε τι κρατάει ή αφαιρεί ένα πακέτο μπορείτε να χρησιμοποιήσετε: # apt-get -o Debug::pkgProblemResolver=yes dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Starting Starting 2 Investigating python1.5 Package python1.5 has broken dep on python1.5-base Considering python1.5-base 0 as a solution to python1.5 0 Holding Back python1.5 rather than change python1.5-base Investigating python1.5-dev Package python1.5-dev has broken dep on python1.5 Considering python1.5 0 as a solution to python1.5-dev 0 Holding Back python1.5-dev rather than change python1.5 Try to Re-Instate python1.5-dev Done Done The following packages have been kept back gs python1.5-dev 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded. Με αυτόν τον τρόπο, παρατηρούμε εύκολα ότι το πακέτο python1.5-dev δεν μπορεί να εγκατασταθεί, λόγω μιας ανικανοποίητης εξάρτησης: python1.5. 3.6. Αφαιρώντας αχρησιμοποίητα αρχεία πακέτων: apt-get clean και autoclean -------------------------------------------------------------------------- Όταν εγκαθιστάτε ένα πακέτο το APT ανακτά τα απαραίτητα αρχεία από τους hosts που υπάρχουν στο /etc/apt/sources.list, τα αποθηκεύει σε μια τοπική αποθήκη (`/var/cache/apt/archives/'), και στη συνέχεια προχωρά στην εγκατάσταση, δείτε τον τομέα Section 3.2, `Εγκαθιστώντας πακέτα'. Με το χρόνο η αποθήκη αυτή μπορεί να μεγαλώσει και να φτάσει να καταλαμβάνει πολύ χώρο στο σκληρό δίσκο. Ευτυχώς, το APT παρέχει εργαλεία για τη διαχείριση της τοπικής αποθήκης του: τις μεθόδους `clean' και `autoclean' του `apt-get'. Η εντολή `apt-get clean' αφαιρεί τα πάντα εκτός από τα κλειδωμένα αρχεία που βρίσκονται στο `/var/cache/apt/archives/' και στο `/var/cache/apt/archives/partial/'. Επομένως, εάν θέλετε να επανεγκαταστήσετε ένα πακέτο, το APT θα το ανακτήσει και πάλι. Η εντολή `apt-get autoclean' αφαιρεί μόνο τα αρχεία πακέτων που δεν κατεβαίνουν. Το παρακάτω παράδειγμα δείχνει πως δουλεύει η εντολή apt-get autoclean: # ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm* logrotate_3.5.9-7_i386.deb logrotate_3.5.9-8_i386.deb gpm_1.19.6-11_i386.deb Στο /var/cache/apt/archives υπάρχουν δύο αρχεία για το πακέτο `logrotate' και ένα για το πακέτο `gpm'. # apt-show-versions -p logrotate logrotate/stable uptodate 3.5.9-8 # apt-show-versions -p gpm gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12 Η εντολή `apt-show-versions' δείχνει ότι το αρχείο `logrotate_3.5.9-8_i386.deb' παρέχει την ενημερωμένη έκδοση του πακέτου `logrotate', επομένως το `logrotate_3.5.9-7_i386.deb' είναι άχρηστο. Επίσης, το `gpm_1.19.6-11_i386.deb' είναι άχρηστο γιατί μια πιο πρόσφατη έκδοση του πακέτου μπορεί να ανακτηθεί. # apt-get autoclean Reading Package Lists... Done Building Dependency Tree... Done Del gpm 1.19.6-11 [145kB] Del logrotate 3.5.9-7 [26.5kB] Τέλος, η εντολή `apt-get autoclean' αφαιρεί μόνο τα παλιά αρχεία. Δείτε τον τομέα Section 3.9, `Πως να αναβαθμίσετε πακέτα από συγκεκριμένες εκδόσεις του Debian' για περισσότερες πληροφορίες για την εντολή apt-show-versions. 3.7. Χρησιμοποιώντας το APT με το dselect ----------------------------------------- Το `dselect' είναι ένα πρόγραμμα που βοηθάει τους χρήστες να επιλέγουν τα πακέτα του Debian που θέλουν να εγκαταστήσουν. Θεωρείται κάπως περίπλοκο και μάλλον βαρετό, αλλά με εξάσκηση μπορείτε να συνηθίσετε το console-based ncurses περιβάλλον διεπαφής του. Ένα χαρακτηριστικό του dselect είναι ότι γνωρίζει πως να εκμεταλλευτεί τη χωρητικότητα των πακέτων του Debian ώστε να "προτείνει" άλλα πακέτα για εγκατάσταση. Για να χρησιμοποιήσετε το πρόγραμμα, εκτελέστε `dselect' ως root. Επιλέξτε 'apt' ως μέθοδο πρόσβασης. Αυτό δεν είναι απαραίτητο, αλλά εάν δεν χρησιμοποιείτε ένα CD ROM και θέλετε να κατεβάζετε πακέτα από το Διαδίκτυο, είναι ο καλύτερος τρόπος για να χρησιμοποιήσετε το dselect. Για να κατανοήσετε καλύτερα την χρήση του dselect, διαβάστε τα σχετικά με το dselect έγγραφα που θα βρείτε στη σελίδα του Debian http://www.debian.org/doc/ddp. Αφού κάνετε τις επιλογές σας με το dselect, χρησιμοποιήστε: # apt-get -u dselect-upgrade όπως και στο παρακάτω παράδειγμα: # apt-get -u dselect-upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: lbxproxy The following NEW packages will be installed: bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0 gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy util-linux-locales vacation xbill xplanet-images The following packages will be upgraded debian-policy 1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded. Need to get 7140kB of archives. After unpacking 16.3MB will be used. Do you want to continue? [Y/n] Συγκρίνετε με αυτά που βλέπουμε όταν εκτελούμε την apt-get dist-upgrade στο ίδιο σύστημα: # apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following packages will be upgraded debian-policy 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 421kB of archives. After unpacking 25.6kB will be freed. Do you want to continue? [Y/n] Παρατηρείστε ότι πολλά από τα παραπάνω πακέτα εγκαθιστώνται διότι άλλα πακέτα τα "πρότειναν". Αλλά εγκαθίστανται ή αφαιρούνται (όπως π.χ. η περίπτωση του lbxproxy) σύμφωνα με τις επιλογές που κάναμε κατά την πλοήγησή μας στη λίστα πακέτων του dselect. Το dselect μπορεί να είναι ένα πανίσχυρο εργαλείο όταν χρησιμοποιείται σε συνεργασία με το APT. 3.8. Πώς να διατηρήσετε ένα ανάμικτο σύστημα -------------------------------------------- Κάποιοι, μερικές φορές, ενδιαφέρονται να χρησιμοποιήσουν μία από τις εκδόσεις του Debian ως κύριο σύστημα διακίνησης και ένα ή περισσότερα πακέτα από ένα άλλο σκέλος. Για να ρυθμίσετε ποια είναι η κύρια έκδοση του Debian για εσάς θα πρέπει να επεξεργαστείτε το αρχείο `/etc/apt/apt.conf' ώστε να περιέχει την παρακάτω γραμμή: APT::Default-Release "testing"; Για να εγκαταστήσετε πακέτα από το unstable, χρησιμοποιήσετε την επιλογή `-t': # apt-get -t unstable install Μην ξεχνάτε ότι για να εγκαταστήσετε πακέτα θα πρέπει να υπάρχει μια δήλωση στο αρχείο `/etc/apt/sources.list'. Στην περίπτωση μας θα πρέπει να υπάρχουν δηλώσεις τόσο για την έκδοση `testing' όσο και για την `unstable'. 3.9. Πως να αναβαθμίσετε πακέτα από συγκεκριμένες εκδόσεις του Debian --------------------------------------------------------------------- Η `apt-show-versions' παρέχει έναν ασφαλή τρόπο για τους χρήστες μικτών διανομών ώστε να αναβαθμίζουν τα συστήματά τους χωρίς να παίρνουν περισσότερο από τη λιγότερο σταθερή διανομή από αυτό που περίμεναν. Για παράδειγμα, είναι δυνατό να αναβαθμίσετε μόνο τα ασταθή πακέτα εκτελώντας, μετά την εγκατάσταση, το πακέτο apt-show-versions: # apt-get install `apt-show-versions -u -b | grep unstable` 3.10. Πως να διατηρήσετε συγκεκριμένα πακέτα, εγκατεστημένα(περίπλοκο) ---------------------------------------------------------------------- Μπορεί να έχετε τροποποιήσει κάτι σε ένα πακέτο και να μην έχετε χρόνο ή να μη θέλετε να μεταφέρετε τις αλλαγές αυτές σε μια νέα έκδοση του προγράμματος. Ή, για παράδειγμα, μπορεί να έχετε μόλις αναβαθμίσει τη διανομή του Debian σας στην 3.0, αλλά να θέλετε να συνεχίσετε με την έκδοση ενός συγκεκριμένου πακέτου από το Debian 2.2. Μπορείτε να 'καρφιτσώσετε' την έκδοση που έχετε εγκατεστημένη έτσι ώστε να μην αναβαθμιστεί. Η χρήση του πόρου αυτού είναι απλή. Απλώς χρειάζεται να επεξεργαστείτε το αρχείο `/etc/apt/preferences'. Η διαμόρφωση είναι απλή: Package: Pin: Priority: Για παράδειγμα, για να κρατήσω το πακέτο `sylpheed' που έχω τροποποιήσει για να χρησιμοποιεί το "reply-to-list" έκδοσης 0.4.99, προσθέτω: Package: sylpheed Pin: version 0.4.99* Παρατηρείστε ότι χρησιμοποίησα έναν `*' (αστερίσκο). Αυτό είναι ένας "μπαλαντέρ"· δηλώνει ότι θέλω αυτή η "καρφίτσα" να ισχύει για όλες τις εκδόσεις που ξεκινούν με 0.4.99. Και αυτό επειδή το Debian εκδίδει τα πακέτα του με μία "βελτιωμένη έκδοση Debian" και δε θέλω να αποφύγω την εγκατάσταση των βελτιωμένων αυτών εκδόσεων. Έτσι για παράδειγμα, οι εκδόσεις 0.4.99-1 και 0.4.99-10 θα εγκατασταθούν μόλις γίνουν διαθέσιμες. Παρατηρείστε ότι εάν τροποποιήσατε το πακέτο δεν θα θέλετε να κάνετε τα πράγματα έτσι. Το πεδίο `Priority' είναι προαιρετικό· αν δεν το καθορίσετε, θα έχει προκαθορισμένη τιμή το 989. Ας δούμε πως δουλεύουν οι pin priorities. Μία προτεραιότητα χαμηλότερη του 0 δηλώνει ότι το πακέτο δεν πρέπει ποτέ να εγκατασταθεί. Προτεραιότητες από 0 έως 100 δηλώνουν πακέτα που δεν είναι εγκατεστημένα και που δεν έχουν διαθέσιμες εκδόσεις. Αυτά δεν θα εισέλθουν στη διαδικασία επιλογής έκδοσης. Η προτεραιότητα 100 είναι αυτή που ανατίθεται σε ένα εγκατεστημένο πακέτο -για να αντικατασταθεί μία ήδη εγκατεστημένη έκδοση από μία διαφορετική, η νέα έκδοση πρέπει να έχει προτεραιότητα μεγαλύτερη του 100. Προτεραιότητες μεγαλύτερες του 100 δηλώνουν ότι το πακέτο πρέπει να εγκατασταθεί. Τυπικά, η ήδη εγκατεστημένη έκδοση αλλάζει μόνο για να αναβαθμιστεί σε νεότερη. Οποιαδήποτε προτεραιότητα μεταξύ 100 και 1000 (inclusive) υποδηλώνει αυτήν την συμπεριφορά. Ένα πακέτο με τέτοια προτεραιότητα δεν υποβαθμίζεται σε μια διαθέσιμη έκδοση με χαμηλότερο αριθμό έκδοσης. Για παράδειγμα, εάν έχω εγκατεστημένη την έκδοση 0.5.3 του sylpheed και καθορίσω 'καρφίτσα' για το sylpheed 0.4.99 με προτεραιότητα 999, το πακέτο 0.4.99 _δεν_ θα εγκατασταθεί για να ικανοποιήσει την 'καρφίτσα'. Για να "υποβαθμίσετε" ένα πακέτο και να ικανοποιήσετε την καρφίτσα η προτεραιότητα πρέπει να είναι άνω του 1000. Καρφίτσα σε ένα πακέτο μπορεί να προσδιοριστεί σε `version', `release' ή `origin' Καρφιτσώνοντας μία `version', όπως είδαμε υποστηρίζει διαφορετικές εκδοχές καθώς και μπαλαντέρ που που προσδιορίζει διαφορετικές εκδόσεις ταυτόχρονα Η εκδοχή `release' εξαρτάται από το Release αρχειο μιάς APT αποθήκης ή από ένα CD. Αυτό να είναι εντελώς άχρηστο αν χρησιμοποιείτε αποθήκες πακέτων που δεν τροφοδοτούν αυτό το αρχείο. Μπορείτε να δείτε τα περιεχόμενα των Release αρχείων που έχετε στο `/var/lib/apt/lists/'. Οι παραμετροι για μία έκδοση είναι: `a' (archive), `c' (components), `v' (version), `o' (origin) και `l' (label). Ένα παράδειγμα: Package: * Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian Priority: 1001 Σε αυτό το παράδειγμα, διαλέξαμε την έκδοση 2.2* του Debian (μπορεί να είναι η 2.2r2, ή η 2.2r3 -- αυτό αναφέρεται σε υποεκδόσεις που συνήθως περιέχουν διορθώσεις ασφαλείας και άλλες σημαντικές ενημερώσεις), την αποθήκη `stable', τον τομέα `main' (σε αντίθεση με τον `contrib' ή τον `non-free') και πηγή και ετικέτα το Debian. Η πηγή (o=) καθορίζει ποιός παρήγαγε αυτό το αρχείο έκδοσης, ενώ η ετικέτα (l=) καθορίζει το όνομα της διανομής: Debian για το ίδιο το Debian και Progeny για το Progeny, για παράδειγμα. Ένα δείγμα αρχείου έκδοσης: $ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release Archive: stable Version: 2.2r3 Component: main Origin: Debian Label: Debian Architecture: i386 ------------------------------------------------------------------------------- 4. Πολύ χρήσιμοι βοηθοί ----------------------- 4.1. Εγκατάσταση τοπικά μεταγλωττισμένων πακέτων: equivs -------------------------------------------------------- Μερικές φορές,κάποιοι θέλουν να χρησιμοποιήσουν μία συγκεκριμένη έκδοση ενός προγράμματος, διαθέσιμου μόνο σε πηγαίο κώδικα, χωρίς πακέτο Debian. Αλλά το σύστημα πακέτων μπορεί να αποτελεί πρόβλημα γι΄ αυτό.Υποθέστε ότι θέλετε να μεταγλωττίσετε μία νέα έκδοση του εξυπηρετητή ηλεκτρονικού ταχυδρομείου σας. Όλα βαίνουν καλώς, αλλά πολλά πακέτα στο Debian εξαρτώνται από ένα MTA (Mail Transport Agent). Αφού εγκαταστήσατε κάτι που μεταγλωττίσατε εσείς οι ίδιοι, το σύστημα πακέτων δεν γνωρίζει για αυτό. Εδώ μπαίνει στο παιγνίδι η εντολή `equivs'. Για να τη χρησιμοποιήσετε, εγκαταστήστε το πακέτο με αυτό το όνομα. Αυτό που κάνει είναι να δημιουργεί ένα άδειο πακέτο που έχει τη δυνατότητα να ικανοποιεί τις εξαρτήσεις, κάνοντας το σύστημα πακέτων να πιστεύει ότι οι εξαρτήσεις είναι ικανοποιημένες. Πριν αρχίσουμε, είναι καλό να σας θυμήσουμε ότι υπάρχουν ασφαλέστεροι τρόποι να μεταγλωττίσετε ένα πρόγραμμα, ήδη πακεταρισμένο, για το Debian με διαφορετικές παραμέτρους, και δεν θα πρέπει να χρησιμοποιείτε την εντολή equivs για να αντικαταστήσετε τις εξαρτήσεις εαν δεν ξέρετε. Δείτε τον τομέα Chapter 6, `Δουλεύοντας με πακέτα κώδικα' για περισσότερες πληροφορίες. Ας συνεχίσουμε με το παράδειγμα του MTA. Μόλις εγκαταστήσατε το νέο μεταγλωττισμένο `postfix', το οποίο συνεχίζει με την εγκατάσταση του πακέτου `mutt'. Ξαφνικά αντιλαμβάνεστε ότι το `mutt' θέλει να εγκαταστήσει ένα άλλο MTA. Αλλά εσείς έχετε ήδη το δικό σας. Πηγαίνετε σε κάποιο φάκελο (`/tmp', για παράδειγμα) και εκτελέστε: # equivs-control Αντικαταστήστε το με το όνομα του αρχείου ελέγχου που θέλετε να δημιουργήσετε. Το αρχείο θα δημιουργηθεί ώς εξής: Section: misc Priority: optional Standards-Version: 3.0.1 Package: Version: Maintainer: Pre-Depends: Depends: Recommends: Suggests: Provides: <(virtual)package> Architecture: all Copyright: Changelog: Readme: Extra-Files: Description: long description and info . second paragraph Για να κάνουμε αυτό που θέλουμε πρέπει να το τροποποιήσουμε. Ρίξτε μια ματιά στη διαμόρφωση των πεδίων και στις περιγραφές τους, δεν υπάρχει λόγος να εξηγήσουμε το καθετί εδώ, ας κάνουμε ότι χρειάζεται: Section: misc Priority: optional Standards-Version: 3.0.1 Package: mta-local Provides: mail-transport-agent Ναι, αυτό είναι όλο. Το πακέτο `mutt' εξαρτάται από το πακέτο `mail-transport-agent', που είναι ένα εικονικό πακέτο παρεχόμενο από όλους τους MTA, μπορούσαμε απλά να ονομάσουμε το πακέτο `mail-transport-agent', αλλά προτιμήσαμε να χρησιμοποιήσουμε το σχήμα του εικονικού πακέτου, χρησιμοποιώντας την εντολή Provides. Τώρα μένει μόνο να χτίσετε το πακέτο: # equivs-build dh_testdir touch build-stamp dh_testdir dh_testroot dh_clean -k # Add here commands to install the package into debian/tmp. touch install-stamp dh_testdir dh_testroot dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package `' in `../_1.0_all.deb'. The package has been created. Attention, the package has been created in the current directory, Και εγκαταστήστε το αρχείο `.deb' που προκύπτει. Όπως μπορείτε να δείτε, υπάρχουν αρκετοί τρόποι χρήσης της `equivs'. Μπορείτε να δημιουργήσετε ακόμα και ένα πακέτο `my-favorites', που εξαρτάται από τα προγράμματα που συνήθως κάνετε εγκατάσταση, για παράδειγμα. Απλά ελευθερώστε τη φαντασία σας, αλλά να είστε προσεκτικοί. Είναι σημαντικό να σημειώσετε ότι υπάρχουν παραδείγματα αρχείων ελέγχου στο αρχείο `/usr/share/doc/equivs/examples'. Δείτε τα. 4.2. Αφαιρώντας αχρησιμοποίητα αρχεία τοπικοποίησης: localepurge ---------------------------------------------------------------- Πολλοί χρήστες του Debian χρησιμοποιούν μία μόνο τοπικοποίηση. Ένας Βραζιλιάνος, χρήστης Debian για παράδειγμα, χρησιμοποιεί συνήθως την τοπικοποίηση `pt_BR' και δεν ενδιαφέρεται για την `es'. Το πακέτο `localepurge' είναι χρήσιμο για αυτούς τους χρήστες. Θα ελευθερώσετε πολύ χώρο έχοντας μόνο τις τοπικοποιήσεις που χρησιμοποιείτε πραγματικά. Απλά χρησιμοποιήστε την εντολή `apt-get install localepurge'. Η ρύθμιση είναι εύκολη, οι ερωτήσεις του debconf οδηγούν το χρήστη βήμα- βήμα. Απλά να είστε προσεκτικοί στην απάντηση της πρώτης ερώτησης, αφού λάθος απαντήσεις μπορεί να οδηγήσουν στην αφαίρεση όλων των αρχείων τοπικοποιήσεων, ακόμα και αυτών που χρησιμοποιείτε. Ο μόνος τρόπος να επανακτήσετε αυτά τα αρχεία είναι να επανεγκαταστήσετε όλα τα πακέτα που τα παρέχουν. 4.3. Πώς να γνωρίζετε ποια πακέτα μπορούν να αναβαθμιστούν ---------------------------------------------------------- Το `apt-show-versions' είναι ένα πρόγραμμα που δείχνει ποιά πακέτα στο σύστημα μπορούν να ανανεωθούν και άλλες χρήσιμες πληροφορίες. Η παράμετρος `-u' εμφανίζει μία λίστα των αναβαθμίσιμων πακέτων: $ apt-show-versions -u libeel0/unstable upgradeable from 1.0.2-5 to 1.0.2-7 libeel-data/unstable upgradeable from 1.0.2-5 to 1.0.2-7 ------------------------------------------------------------------------------- 5. Παίρνοντας πληροφορίες για πακέτα. ------------------------------------- Κάποια γραφικά περιβάλλοντα για το σύστημα APT κάνουν αισθητά ευκολότερη την παρουσίαση σε λίστα των διαθέσιμων πακέτων για εγκατάσταση ή είναι ήδη εγκατεστημένα, καθώς επίσης βρίσκουν τον τομέα όπου βρίσκεται ένα πακέτο, την προτεραιότητά του, την περιγραφή του, κτλ. Όμως... εδώ πρέπει να μάθουμε πως να χρησιμοποιούμε το ίδιο το APT. Πως βρίσκεις το όνομα ενός πακέτου που θέλεις να εγκαταστήσεις; Έχουμε ένα αριθμό μέσων για μια τέτοια λειτουργία. Αρχίζουμε με το `apt-cache'. Το πρόγραμμα αυτό χρησιμοποιείται από το σύστημα APT για τη διατήρηση της βάσης δεδομένων του. Θα ρίξουμε μόνο μια γρήγορη ματιά σε μερικές από τις πιο πρακτικές του εφαρμογές. 5.1. Ανακαλύπτοντας ονόματα πακέτων ----------------------------------- Ας υποθέσουμε ότι, θέλετε να θυμηθείτε τις παλιές καλές μέρες του Atari 2600. Θέλετε να χρησιμοποιήσετε το APT για να εγκαταστήσετε έναν εξομοιωτή Atari, για να κατεβάσετε μερικά παιχνίδια. Μπορείτε να εκτελέσετε: # apt-cache search atari atari-fdisk-cross - Partition editor for Atari (running on non-Atari) circuslinux - The clowns are trying to pop balloons to score points! madbomber - A Kaboom! clone tcs - Character set translator. atari800 - Atari emulator for svgalib/X/curses stella - Atari 2600 Emulator for X windows xmess-x - X binaries for Multi-Emulator Super System Βρίσκουμε μερικά πακέτα που σχετίζονται με αυτό που ψάχνουμε, μαζί με σύντομες περιγραφές. Για περισσότερες πληροφορίες για ένα συγκεκριμένο πακέτο, μπορείτε στη συνέχεια να εκτελέσετε: # apt-cache show stella Package: stella Priority: extra Section: non-free/otherosfs Installed-Size: 830 Maintainer: Tom Lear Architecture: i386 Version: 1.1-2 Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1) Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb Size: 483430 MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5 Description: Atari 2600 Emulator for X windows Stella is a portable emulator of the old Atari 2600 video-game console written in C++. You can play most Atari 2600 games with it. The latest news, code and binaries for Stella can be found at: http://www4.ncsu.edu/~bwmott/2600 Εδώ έχετε πολλές λεπτομέρειες για το πακέτο που θέλετε (ή δεν θέλετε) να εγκαταστήσετε, μαζί με την πλήρη περιγραφή του πακέτου. Αν το πακέτο είναι ήδη εγκατεστημένο στο σύστημά σας και υπάρχει νεότερη έκδοση διαθέσιμη, θα δείτε πληροφορίες και για τις δύο εκδόσεις. Για παράδειγμα: # apt-cache show lilo Package: lilo Priority: important Section: base Installed-Size: 271 Maintainer: Russell Coker Architecture: i386 Version: 1:21.7-3 Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate Suggests: lilo-doc Conflicts: manpages (<<1.29-3) Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb Size: 143052 MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e Description: LInux LOader - The Classic OS loader can load Linux and others This Package contains lilo (the installer) and boot-record-images to install Linux, OS/2, DOS and generic Boot Sectors of other OSes. . You can use Lilo to manage your Master Boot Record (with a simple text screen) or call Lilo from other Boot-Loaders to jump-start the Linux kernel. Package: lilo Status: install ok installed Priority: important Section: base Installed-Size: 190 Maintainer: Vincent Renardias Version: 1:21.4.3-2 Depends: libc6 (>= 2.1.2) Recommends: mbr Suggests: lilo-doc Description: LInux LOader - The Classic OS loader can load Linux and others This Package contains lilo (the installer) and boot-record-images to install Linux, OS/2, DOS and generic Boot Sectors of other OSes. . You can use Lilo to manage your Master Boot Record (with a simple text screen) or call Lilo from other Boot-Loaders to jump-start the Linux kernel. Σημειώστε ότι το πρώτο στη λίστα είναι το διαθέσιμο πακέτο και το δεύτερο είναι το ήδη εγκατεστημένο. Για περισσότερες γενικές πληροφορίες για ένα πακέτο, μπορείτε να χρησιμοποιήσετε: # apt-cache showpkg penguin-command Package: penguin-command Versions: 1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status) Reverse Depends: Dependencies: 1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3) Provides: 1.4.5-1 - Reverse Provides: Και για να βρείτε απλά τα πακέτα από τα οποία εξαρτάται: # apt-cache depends penguin-command penguin-command Depends: libc6 Depends: libpng2 Depends: libsdl-mixer1.1 Depends: libsdl1.1 Depends: zlib1g Συνοψίζοντας, έχουμε ένα εύρος όπλων τα οποία μπορούμε να χρησιμοποιήσουμε ώστε να βρούμε το όνομα ενός πακέτου που θέλουμε. 5.2. Χρησιμοποιώντας την dpkg για να βρούμε ονόματα πακέτων ----------------------------------------------------------- Ένας τρόπος για να εντοπίσετε το όνομα ενός πακέτου είναι να ξέρετε το όνομα ενός σημαντικού αρχείου που βρίσκεται μέσα στο πακέτο αυτό. Για παράδειγμα, για να βρείτε το πακέτο που παρέχει ένα συγκεκριμένο `".h"' αρχείο που χρειάζεστε για μεταγλώττιση μπορείτε να εκτελέσετε: # dpkg -S stdio.h libc6-dev: /usr/include/stdio.h libc6-dev: /usr/include/bits/stdio.h perl: /usr/lib/perl/5.6.0/CORE/nostdio.h ή: # dpkg -S /usr/include/stdio.h libc6-dev: /usr/include/stdio.h Για να βρείτε τα ονόματα των πακέτων που είναι εγκατεστημένα στο σύστημά σας, πράγμα χρήσιμο,αν θέλετε να καθαρίσετε τον σκληρό σας δίσκο, μπορείτε να εκτελέσετε: # dpkg -l | grep mozilla ii mozilla-browse 0.9.6-7 Mozilla Web Browser Το πρόβλημα με αυτήν την εντολή είναι ότι μπορεί να ¨σπάσει¨ το όνομα του πακέτου. Στο παραπάνω παράδειγμα, το πλήρες όνομα του πακέτου είναι `mozilla-browser'. Για να το διορθώσετε αυτό, μπορείτε να χρησιμοποιήσετε τη μεταβλητή περιβάλλοντος `COLUMNS' με τον ακόλουθο τρόπο: [kov]@[couve] $ COLUMNS=132 dpkg -l | grep mozilla ii mozilla-browser 0.9.6-7 Mozilla Web Browser - core and browser ή την περιγραφή ή μέρος της με αυτόν τον τρόπο: # apt-cache search "Mozilla Web Browser" mozilla-browser - Mozilla Web Browser 5.3. Πως να εγκαταστήσετε πακέτα ¨κατά βούληση¨ ----------------------------------------------- Μεταγλωττίζετε ένα πρόγραμμα και, ξαφνικά, μπουμ! Υπάρχει σφάλμα γιατί χρειάζεται ένα `.h' αρχείο που δεν έχετε. Το πρόγραμμα `auto-apt' μπορεί να σας σώσει από τέτοια σενάρια. Σας ζητάει να εγκαταστήσει πακέτα εάν αυτά χρειάζονται, σταματώντας την αντίστοιχη διαδικασία και συνεχίζοντας την όταν το πακέτο είναι εγκατεστημένο. Αυτό που κάνετε, βασικά, είναι να εκτελέσετε: # auto-apt run command Όπου `command' είναι η εντολή που θα εκτελεστεί και που πιθανώς να χρειαστεί κάποιο μη διαθέσιμο αρχείο. Για παράδειγμα: # auto-apt run ./configure Τότε θα σας ζητήσει να εγκαταστήσει τα απαραίτητα πακέτα και θα καλέσει το apt-get αυτόματα. Αν εκτελείτε το X, ένα γραφικό περιβάλλον θα αντικαταστήσει το προεπιλεγμένο περιβάλλον κειμένου. Το auto-apt διατηρεί βάσεις δεδομένων που χρειάζεται να είναι διαρκώς ενημερωμένες ώστε αυτό να λειτουργεί αποτελεσματικά. Αυτό επιτυγχάνεται με την εκτέλεση των εντολών `auto-apt update', `auto-apt updatedb' και `auto-apt update-local'. 5.4. Πώς να ανακαλύψετε σε ποιό πακέτο ανήκει ένα αρχείο -------------------------------------------------------- Αν θέλετε να εγκαταστήσετε ένα πακέτο, και δεν μπορείτε να βρείτε πώς λέγεται ψάχνοντας με την εντολή `apt-cache', αλλά ξέρετε το όνομα αρχείου του ίδιου του προγράμματος, ή κάποιο άλλο όνομα αρχείου που ανήκει στο πακέτο, τότε μπορείτε να χρησιμοποιήσετε την εντολή `apt-file' για να βρείτε το όνομα του πακέτου. Αυτό γίνεται με τον ακόλουθο τρόπο: $ apt-file search Δουλεύει όπως η `dpkg -S', αλλά θα σας δείξει ακόμα και πακέτα που δεν είναι εγκατεστημένα αλλά περιέχουν το αρχείο. θα μπορούσε ακόμα να χρησιμοποιηθεί για να βρείτε ποιά πακέτα περιέχουν απαραίτητα αρχεία που λείπουν όταν μεταγλωττίζετε προγράμματα, αν και η χρήση της `auto-apt' είναι μια πολύ καλύτερη μέθοδος για την επίλυση τέτοιων προβλημάτων, δείτε τον τομέα Section 5.3, `Πως να εγκαταστήσετε πακέτα ¨κατά βούληση¨'. Μπορείτε ακόμα να παρουσιάσετε σε λίστα τα περιεχόμενα ενός πακέτου, εκτελώντας: $ apt-file list Το `apt-file' διατηρεί μια βάση δεδομένων της οποίας τα αρχεία περιέχονται σε όλα τα πακέτα, όπως κάνει και το auto-apt και πρέπει να παραμένει ενημερωμένη. Αυτό γίνεται εκτελώντας: # apt-file update Από προεπιλογή, το `apt-file' χρησιμοποιεί την ίδια βάση δεδομένων που χρησιμοποιεί το auto-apt, δείτε τον τομέα Section 5.3, `Πως να εγκαταστήσετε πακέτα ¨κατά βούληση¨'. 5.5. Πως να παραμένετε ενημερωμένοι για τις αλλαγές στα πακέτα. --------------------------------------------------------------- Κάθε πακέτο εγκαθιστά στο δικό του κατάλογο τεκμηρίωσης (`/usr/share/doc/packagename') ένα αρχείο που λέγεται `changelog.Debian.gz' και περιέχει λίστα των αλλαγών που έχουν γίνει στο πακέτο από την τελευταία έκδοσή του. Μπορείτε να διαβάσετε τα αρχεία αυτά με τη βοήθεια του `zless', αλλά δεν είναι και πολύ εύκολο, μετά από μία ολοκληρωτική αναβάθμιση του συστήματος, να ψάχνετε τα αρχεία αλλαγών για κάθε αναβαθμισμένο πακέτο. Υπάρχει τρόπος να αυτοματοποιήσετε αυτή την εργασία με τη χρήση ενός εργαλείου που λέγεται `apt-listchanges'. Για να ξεκινήσουμε πρέπει να γίνει εγκατάσταση του πακέτου `apt-listchanges'. Κατά τη διάρκεια της εγκατάσταση, το Debconf θα ρυθμίσει το πακέτο. Απαντήστε στις ερωτήσεις όπως θέλετε. Η επιλογή "Should apt-listchanges be automatically run by apt?" είναι πολύ χρήσιμη επειδή παρουσιάζει λίστα των αλλαγών που γίνονται σε κάθε πακέτο που εγκαθίσταται από το apt κατά τη διάρκεια μιας αναβάθμισης και σας επιτρέπει να τις αναλύσετε πρίν συνεχίσετε. Η επιλογή "Should apt-listchanges prompt for confirmation after displaying changes?" είναι χρήσιμη γιατί σας ρωτάει αν θέλετε να συνεχίσετε την εγκατάσταση αφού διαβάσετε τη λίστα των αλλαγών. Αν δηλώσετε ότι δεν επιθυμείτε να συνεχίσετε το apt-listchanges θα βγάλει σφάλμα και το apt θα ματαιώσει την εγκατάσταση. Μόλις το apt-listchanges εγκατασταθεί, όποτε θα "κατεβάζονται"πακέτα από το διαδίκτυο (ή μέσω CD ή από mounted δίσκο) από το apt θα εμφανίζει τις λίστες των αλλαγών που γίνονται σε αυτά τα πακέτα προτού γίνει η εγκατάστασή τους. ------------------------------------------------------------------------------- 6. Δουλεύοντας με πακέτα κώδικα ------------------------------- 6.1. Κατεβάζοντας πακέτα κώδικα ------------------------------- Στο ελεύθερο λογισμικό συνηθίζεται η μελέτη πηγαίου κώδικα ή και η διόρθωση προβληματικού κώδικα. Για να το κάνετε, θα πρέπει να κατεβάσετε τον πηγαίο κώδικα του προγράμματος. Το σύστημα APT παρέχει έναν εύκολο τρόπο για να αποκτήσετε τον πηγαίο κώδικα των προγραμμάτων που περιέχονται στη διανομή, συμπεριλαμβάνοντας όλα τα αρχεία που χρειάζονται για τη δημιουργία ενός αρχείου .deb για το πρόγραμμα. Επίσης συνηθισμένη χρήση των πηγαίων κωδικών του Debian είναι η προσαρμογή μιας πιο πρόσφατης έκδοσης ενός προγράμματος, από την ασταθή διανομή, για παράδειγμα, για χρήση με την σταθερή διανομή. Η μεταγλώττιση ενός πακέτου που δεν ανήκει στην σταθερή διανομή θα δημιουργήσει πακέτα .deb με εξαρτήσεις προσαρμοσμένες ώστε να ταιριάζουν τα διαθέσιμα πακέτα της διανομής αυτής. Για να το πετύχετε αυτό, η καταχώρηση `deb-src' στο αρχείο σας `/etc/apt/sources.list' θα πρέπει να κατευθυνθεί στην ασταθή, καθώς και να είναι ενεργοποιημένη (να μην αποτελεί σχόλιο). Δείτε τον τομέα Section 2.1, `Το αρχείο /etc/apt/sources.list'. Για να κατεβάσετε ένα πηγαίο πακέτο, θα χρησιμοποιούσατε την ακόλουθη εντολή: $ apt-get source packagename Αυτή θα κατεβάσει τρία αρχεία: ένα `.orig.tar.gz', ένα `.dsc' και ένα `.diff.gz'. Σε περίπτωση που έχετε πακέτα που έχουν δημιουργηθεί ειδικά για το Debian, το τελευταίο αυτών των αρχείων δεν κατεβάζεται και το πρώτο συνήθως δε θα έχει το `"orig"' στο όνομά του. Το `.dsc' αρχείο χρησιμοποιείται από το dpkg-source για το ξεπακετάρισμα του πηγαίου πακέτου στον κατάλογο . Μέσα σε κάθε κατεβασμένο πηγαίο πακέτο υπάρχει ένας κατάλογος `debian/' που περιέχει τα αρχεία που είναι απαραίτητα για τη δημιουργία του πακέτου .deb. Για να χτίσετε αυτόματα το πακέτο όταν έχει κατέβει, απλά προσθέστε την παράμετρο `-b' στην γραμμή εντολής,ως εξής: # apt-get -b source packagename Αν αποφασίσετε να μην δημιουργήσετε το πακέτο .deb την ώρα του κατεβάσματος, μπορείτε να το δημιουργήσετε αργότερα εκτελώντας: # dpkg-buildpackage -rfakeroot -uc -b μέσα από τον κατάλογο που δημιουργήθηκε για το πακέτο μετά το κατέβασμα. Για να εγκαταστήσετε το πακέτο που χτίστηκε με τις παραπάνω εντολές θα πρέπει να χρησιμοποιήσετε το διαχειριστή πακέτων άμεσα, κάπως έτσι: # dpkg -i Υπάρχει διαφορά ανάμεσα στη μέθοδο `source' του `apt-get' και τις άλλες μεθόδους του. Η μέθοδος `source' μπορεί να χρησιμοποιηθεί από απλούς χρήστες, χωρίς να απαιτεί κάτι ιδιαίτερο από πλευράς διαχειριστή. Τα αρχεία κατεβάζονται στον κατάλογο από τον οποίο εκτελέστηκε η εντολή `apt-get source package'. 6.2. Πακέτα απαραίτητα για τη μεταγλώττιση ενός πηγαίου πακέτου --------------------------------------------------------------- Φυσιολογικά, συγκεκριμένες επικεφαλίδες και κοινόχρηστες βιβλιοθήκες πρέπει να είναι διαθέσιμες ώστε να είναι δυνατή η μεταγλώττιση ενός πηγαίου πακέτου. Όλα τα πηγαία πακέτα έχουν ένα πεδίο στα αρχεία ελέγχου τους που ονομάζεται 'Build-Depends:' το οποίο δηλώνει ποια επιπλέον πακέτα χρειάζονται ώστε να χτιστεί το πακέτο από τον πηγαίο κώδικα. Το APT έχει έναν απλό τρόπο για να κατεβάζει αυτά τα πακέτα. Απλώς εκτελέστε την εντολή `apt-get build-dep package', όπου `package' είναι το όνομα του πακέτου που που θα χτίσετε. Για παράδειγμα: # apt-get build-dep gmc Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev libgpmg1-dev 0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded. Need to get 1069kB of archives. After unpacking 3514kB will be used. Do you want to continue? [Y/n] Τα πακέτα που θα εγκατασταθούν είναι τα πακέτα που χρειάζονται ώστε το πακέτο `gmc' να χτιστεί σωστά. Είναι σημαντικό να παρατηρήσετε ότι η εντολή αυτή δεν ψάχνει για το πηγαίο πακέτο του προγράμματος προς μεταγλώττιση. Επομένως θα χρειαστεί να εκτελέσετε την εντολή `apt-get source' ξεχωριστά για να το αποκτήσετε. Αν το μόνο που θέλετε είναι να ελέγξετε ποια πακέτα χρειάζονται για να χτίσετε ένα δοθέν πακέτο, υπάρχει μια παραλλαγή της εντολής `apt-cache show' (δείτε τον τομέα Chapter 5, `Παίρνοντας πληροφορίες για πακέτα.'), η οποία θα παρουσιάσει, ανάμεσα σε άλλες πληροφορίες, την γραμμή `Build-Depends' που παρουσιάζει τα πακέτα αυτά σε λίστα. # apt-cache showsrc ------------------------------------------------------------------------------- 7. Πως να αντιμετωπίσετε σφάλματα --------------------------------- 7.1. Συνηθισμένα σφάλματα ------------------------- Σφάλματα θα συμβαίνουν πάντοτε, τα περισσότερα οφείλονται στην απροσεξία των χρηστών. Τα παρακάτω είναι μια λίστα με τα πιο συνηθισμένα σφάλματα και τον τρόπο αντιμετώπισής τους. Αν λαμβάνετε ένα μήνυμα που μοιάζει με το παρακάτω όταν προσπαθείτε να εκτελέσετε την εντολή `apt-get install package'... Reading Package Lists... Done Building Dependency Tree... Done W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory) W: You may want to run apt-get update to correct these missing files E: Couldn't find package penguineyes ξεχάσατε να εκτελέσετε την εντολή `apt-get update' μετά την τελευταία αλλαγή που κάνατε στο αρχείο `/etc/apt/sources.list'. Αν το σφάλμα έμοιαζε με αυτό: E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied) E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? όταν χρησιμοποιείτε οποιαδήποτε μέθοδο του `apt-get' εκτός από την `source', τότε δεν έχετε δικαιώματα διαχειριστή, πράγμα που σημαίνει ότι δουλεύετε ως απλός χρήστης. Υπάρχει ένα σφάλμα που μοιάζει με το παραπάνω το οποίο συμβαίνει όταν εκτελείτε δύο εντολές `apt-get' ταυτόχρονα, ή ακόμα και όταν προσπαθείτε να εκτελέσετε την `apt-get' ενώ μία διαδικασία `dpkg' είναι ενεργή. Η μόνη μέθοδος που μπορεί να χρησιμοποιηθεί ταυτόχρονα με άλλες είναι η `source'. Αν μια εγκατάσταση σταματήσει στη μέση της διαδικασίας και ανακαλύψετε ότι δεν είναι πια δυνατό να εγκαθιστάτε ή να αφαιρείτε πακέτα, δοκιμάστε να εκτελέσετε αυτές τις δύο εντολές: # apt-get -f install # dpkg --configure -a Και μετά δοκιμάστε ξανά. Ίσως να χρειαστεί να εκτελέσετε τη δεύτερη από τις παραπάνω εντολές πολλές φορές. Αυτό είναι ένα σημαντικό μάθημα για τους περιπετειώδεις τύπους που χρησιμοποιούν την ασταθή διανομή. Αν λαμβάνετε το σφάλμα "E: Dynamic MMap ran out of room" όταν εκτελείτε την εντολή `apt-get update', προσθέστε την ακόλουθη γραμμή στο αρχείο `/etc/apt/apt.conf': APT::Cache-Limit 10000000; 7.2. Που μπορώ να βρώ βοήθεια; ------------------------------ Αν ταλαιπωρείστε από αμφιβολίες, συμβουλευτείτε την εκτεταμένη τεκμηρίωση που είναι διαθέσιμη για το σύστημα διαχείρισης πακέτων του Debian. Οι εντολές `--help' και manpages μπορούν να αποτελέσουν μια τεράστια βοήθεια για σας, καθώς και η τεκμηρίωση που περιέχεται στους καταλόγους `/usr/share/doc' όπως ο `/usr/share/doc/apt'. Αν αυτή η τεκμηρίωση αποτύχει να διώξει τους φόβους σας, ψάξτε για απάντηση στις λίστες ταχυδρομείου του Debian. Μπορείτε να βρείτε περισσότερες πληροφορίες για συγκεκριμένες λίστες χρηστών στην ιστοσελίδα του Debian: http://www.debian.org. Θυμηθείτε ότι αυτές οι λίστες και οι πόροι πρέπει να χρησιμοποιούνται μόνο από τους χρήστες του Debian· οι χρήστες άλλων συστημάτων θα βρούν καλύτερη υποστήριξη από τους πόρους των κοινοτήτων των δικών τους διανομών. ------------------------------------------------------------------------------- 8. Ποιές διανομές υποστηρίζουν το APT; -------------------------------------- Εδώ είναι τα ονόματα μερικών από τις διανομές που χρησιμοποιούν το APT: Debian GNU/Linux (http://www.debian.org) - για αυτή τη διανομή αναπτύχθηκε το APT Conectiva (http://www.conectiva.com.br) - αυτή ήταν η πρώτη διανομή που έκανε port το APT ώστε να το χρησιμοποιήσει με το rpm Libranet (http://www.libranet.com) Mandrake (http://www.mandrake.com) PLD (http://www.pld.org.pl) Vine (http://www.vinelinux.org) APT4RPM (http://apt4rpm.sf.net) Alt Linux (http://www.altlinux.ru/) Red Hat (http://www.redhat.com/) Sun Solaris (http://www.sun.com/) SuSE (http://www.suse.de/) Yellow Dog Linux (http://www.yellowdoglinux.com/) ------------------------------------------------------------------------------- 9. Ευχαριστίες -------------- Ενα μεγάλο ευχαριστώ στους φίλους μου στο πρόγραμμα Debian-BR,αλλά και στο Debian, για την ανεκτίμητη βοήθεια τους και το κουράγιο που μου έδιναν ώστε να συνεχίζω άοκνα να εργάζομαι για το καλό της ανθρωπότητας και να επιτύχω τον στόχο μου να σώσω τον κόσμο. :) Θέλω να επίσης να ευχαριστήσω την CIPSGA για την τεράστια βοήθεια που έδωσε στο πρόγραμμα και σε όλα τα ελεύθερα λογισμικά που πηγάζουν από μεγάλες ιδέες. Ιδιαίτερα ευχαριστώ: Yooseong Yang Michael Bramer Bryan Stillwell Pawel Tecza Hugo Mora Luca Monducci Tomohiro KUBOTA Pablo Lorenzzoni Steve Langasek Arnaldo Carvalho de Melo Erik Rossen Ross Boylan Matt Kraai Aaron M. Ucko Jon Εslund ------------------------------------------------------------------------------- 10. Νέες εκδόσεις αυτού του εκπαιδευτικού κειμένου -------------------------------------------------- Αυτό το εγχειρίδιο δημιουργήθηκε από το Debian-BR (http://www.debian-br.org)πρόγραμμα με σκοπό να βοηθήσει την καθημερινή χρήση του Debian. Νέες εκδόσεις αυτού του κειμένου θα διατίθεται στις σελίδες του Debian Documentation Project, στο http://www.debian.org/doc/ddp. Σχόλια και κριτικές μπορούν να μου αποστέλλονται κατευθείαν με email στη διεύθυνση . ------------------------------------------------------------------------------- APT HOWTO Gustavo Noronha Silva Aπόδοση στα Ελληνικά Στεφανάτος Κώστας 1.8.5 - July 2003