[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: περιττά πακέτα



On Wed, 23 Jun 2010, George Kiagiadakis wrote:
Καταρχήν τα "recommends" δεν είναι άχρηστα.
...

Δεν έχω επι της αρχής πρόβλημα με την κατηγοριοποίηση των
πακέτων, και αντιλαμβάνομαι πολύ καλά τη σημασιολογική διαφορά
μεταξύ suggests, recommends και depends (χρησιμοποιώ Debian περίπου
10 χρόνια τώρα).

Το πρόβλημα κατά την ταπεινή μου άποψη έγγειται στο εξής:

Πρίν γίνει default η εγκατάσταση των recommends (γιατί παλιότερα
ΔΕΝ ήταν), οι maintainers ήταν αρκετά διαλακτικοί ως προς την πρόσθεση
πακέτων τύπου "recommendation". Αυτό είχε ως αποτέλεσμα, αν π.χ. το upstream έλεγε ότι η Α βιβλιοθήκη μπορούσε να χρησιμοποιηθεί πολύ ωραία
με τη Β βιβλιοθήκη, ο maintainer (που δε διαπίστωνε hard dependency)
έβαζε τη Β ως recommendation (καθώς υπήρχε upstream recommendation)
και όχι ως suggestion. Με τα σημερινά δεδομένα, όπου η Β εγκαθίσταται
αυτόματα, θα πρέπει αυτή να ορισθεί ως suggestion. Αυτή η αλλαγή φιλοσοφίας όμως δεν έχει γίνει propagated σε όλα τα πακέτα.

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

Μέχρι σήμερα εκτιμώ το γεγονός ότι όταν μου λείπει ένα feature
το βάζω με το χέρι ελέγχοντας τα recommends / suggests. Αν θεωρώ
ότι το feature είναι critical, τοτε γράφω bugreport ώστε να γίνει
hard dependency. Η φιλοσοφία που θέλει π.χ. το gnome να τραβάει ότι
πακέτο βρει προκειμένου να φαίνεται πιο όμορφο / λειτουργικό νομίζω
ότι ταιριάζει περισσότερο στο Ubuntu παρά στο Debian.

Η βασική διαφορά τους με τα "depends" είναι ότι σου δίνεται η δυνατότητα
να τα αφαιρέσεις αργότερα, εαν κρίνεις ότι όντως σου είναι άχρηστα,

Κάτι τέτοιο δεν είναι πρακτικό κατά την εγκατάσταση πολλών πακέτων
(βλ. dist-upgrade). Συνεχίζω να πιστεύω ότι κατά την εγκατάσταση
το apt θα πρέπει να "τραβάει" μόνο τα απολύτως απαραίτητα.

Μια άλλη χρήση τους είναι για runtime dependencies τα οποία είναι
απολύτως απαραίτητα για να τρέξει κάποια λειτουργία της εφαρμογής,
αλλά αν δεν χρησιμοποιείς την συγκεκριμένη λειτουργία, μπορείς να
κάνεις και χωρίς αυτά. Για παράδειγμα το πακέτο dolphin έχει
recommends την ruby. Ο λόγος είναι ότι μια λειτουργία (συγκεκριμένα το
vcs plugin) χρησιμοποιεί κάποια ruby scripts για να δουλέψει. Εάν δεν
έχεις την ruby, η συμπεριφορά αυτού του plugin είναι άγνωστη, και άρα
κανονικά θα έπρεπε να είναι dependency. Όμως επειδή ελάχιστος κόσμος
θα χρησιμοποίησει αυτό το plugin, προσφέρεται μέσω του recommend η
δυνατότητα να αφαιρέσει κανείς την ruby.

Αυτό συνήθως λύνεται προγραμματιστικά δίνοντας στο χρήστη να καταλάβει
ότι του λείπει η ruby.

Άλλο παράδειγμα στην ίδια
κατηγορία είναι το kdebase-workspace-bin που κάνει recommend το
polkit-kde-1 | policykit-1-gnome (ένα interface για το policykit
δηλαδή, άσχετα αν είναι του kde ή του gnome). Αυτό χρειάζεται για να
μπορείς να αλλάξεις την ώρα από το kde, που χρειάζεται άδειες του root
(το interface αυτό απλά πετάει ένα διάλογο που ζητάει το password).
Εάν δεν έχεις interface για το policykit εγκατεστημένο, όταν πας να
αλλάξεις την ώρα παίρνεις ένα άκυρο μήνυμα του στυλ "permission
denied" (είναι λίγο πιο άκυρο απο αυτό, αλλά δεν θυμάμαι ακριβώς τι
γράφει), και άντε μετά να βρείς τι φταίει...

Και αυτό επίσης αποτελεί προγραμματιστικό σφάλμα που πρέπει να λυθεί
στο upstream.

Τέλος μια άλλη χρήση τους είναι σε metapackages για να σου
εγκαταστήσουν εφαρμογές που τυπικά ταιριάζουν με αυτό που εγκαθιστά το
metapackage. Για παράδειγμα το πακέτο kdebase-workspace κάνει
recommend τον kdm, που τυπικά χρειάζεται εαν θέλεις να χρησιμοποιήσεις
το kde (γιατι πρέπει να έχεις έναν login manager προκειμένου να κάνεις
login στο περιβάλλον αυτό), κάτι που όμως δεν είναι απαραίτητο γιατι
μπορεί να έχεις ήδη τον gdm εγκατεστημένο και να θέλεις να συνεχίσεις
να χρησιμοποιείς αυτόν σαν login manager.

Αυτό λύνεται με dependency σε virtual πακέτο για graphical display manager
(αν πραγματικά το kde δε μπορεί να φορτωθεί μέσω startx.. :-)

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

Σ'ευχαριστώ για την αναλυτική σου απάντηση,

Δημήτρης

Reply to: