[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ next ]


APT HOWTO (Obsolete Documentation)
Chapter 3 - Διαχείριση Πακέτων


3.1 Ανανεώνοντας τον κατάλογο των διαθέσιμων πακέτων

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

Για να ανανεώσετε αυτό τον κατάλογο, θα χρησιμοποιούσατε την εντολή apt-get update. Η εντολή αυτή ψάχνει τους καταλόγους των πακέτων στα αρχεία που βρίσκονται στο /etc/apt/sources.list· δείτε το Το αρχείο /etc/apt/sources.list, Section 2.1 για περισσότερες πληροφορίες σχετικά με το αρχείο αυτό.

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


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 (δείτε τον τομέα Προσθέτοντας ένα CD-ROM στο αρχείο sources.list, Section 2.4) για να προσθέσετε το 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 αφαιρεί μόνο τα παλιά αρχεία. Δείτε τον τομέα Πως να αναβαθμίσετε πακέτα από συγκεκριμένες εκδόσεις του Debian, Section 3.9 για περισσότερες πληροφορίες για την εντολή 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 packagename

Μην ξεχνάτε ότι για να εγκαταστήσετε πακέτα θα πρέπει να υπάρχει μια δήλωση στο αρχείο /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: <package>
     Pin: <pin definition>
     Priority: <pin's 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

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ next ]


APT HOWTO (Obsolete Documentation)

1.8.5 - July 2003

Gustavo Noronha Silva kov@debian.org
Aπόδοση στα Ελληνικά Στεφανάτος Κώστας costas@step.gr