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

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



2010/6/23 d.a.glynos <glynos@storm.cs.unipi.gr>:
> Καλημέρα σε όλους,
>
>  <warning>
>   Το παρόν email περιέχει κυρίως γκρίνια.
>   You have been warned..
>  </warning>
>
> Με ποιο σκεπτικό το apt εγκαθιστά *by default* τα recommended "dependencies"
> ενός πακέτου;
>
> Για πόσο καιρό ακόμη θα πρέπει να κάνουμε ειδικές ρυθμίσεις [1] σε
> default installs ώστε να μη μας γίνεται το σύστημα bloated με *άχρηστα*
> πακέτα;
>
> γκρρρρ..
>
> --
> Δημήτρης
> [1] http://bit.ly/beUTft

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

Αυτό που θέλω να τονίσω εδώ είναι ότι δεν είναι καλό να ρυθμίζει
κανείς τον apt να μην εγκαθιστά τα "recommends" αυτόματα χωρις να
γνωρίζει ακριβώς τι παρέχει το κάθε ένα απο αυτά στο πακέτο που θέλει
να εγκαταστήσει, καθώς εμείς οι maintainers συχνά στηριζόμαστε στο
γεγονός ότι τα "recommends" μπαίνουν αυτόματα και άρα είναι πιθανό να
αντιμετωπίσει κανείς προβλήματα.

Υπάρχουν διάφορες χρήσεις των recommends, που διαφέρουν αρκετά μεταξύ
τους. Θα αναφέρω μερικές με κάποια παραδείγματα από πακέτα που
συν-συντηρώ (co-maintain) για να γίνω κατανοητός.

Καταρχήν, μπορούν να χρησιμοποιηθούν για να εγκαταστήσουν επιπλέον
plugins για μια εφαρμογή, που ναι μεν δεν είναι απαραίτητα για να
τρέξει η εφαρμογή αλλά προσφέρουν σημαντικό τμήμα της λειτουργίας της.
Για παράδειγμα, το πακέτο konqueror έχει recommends:
konqueror-nsplugins, dolphin. Το πρώτο προσφέρει το plugin για να δείς
περιεχόμενο flash στον konqueror και το δεύτερο είναι ο file manager
του kde, που μεταξύ άλλων προσφέρει και το file browser plugin που
είναι απαραίτητο στον konqueror για να εμφανίσει φακέλους καθώς και
ftp, sftp και άλλων ειδών sites. Καταλαβαίνεις ότι και τα 2 είναι πολύ
σημαντικά, παρόλο που δεν είναι απολύτως αναγκαία. Παράλληλα το ίδιο
πακέτο έχει suggests: konq-plugins. Αυτά είναι επιπλεόν plugins που
προσφέρουν καλόυδια, ανάλογα με τα plugins του firefox ή του chrome,
και είναι suggests ακριβώς επειδή δεν είναι τόσο σημαντικά και
χρήσιμα, και άρα δεν χρειάζεται να μπαίνουν αυτόματα.

Μια άλλη χρήση τους είναι για runtime dependencies τα οποία είναι
απολύτως απαραίτητα για να τρέξει κάποια λειτουργία της εφαρμογής,
αλλά αν δεν χρησιμοποιείς την συγκεκριμένη λειτουργία, μπορείς να
κάνεις και χωρίς αυτά. Για παράδειγμα το πακέτο dolphin έχει
recommends την ruby. Ο λόγος είναι ότι μια λειτουργία (συγκεκριμένα το
vcs plugin) χρησιμοποιεί κάποια ruby scripts για να δουλέψει. Εάν δεν
έχεις την ruby, η συμπεριφορά αυτού του plugin είναι άγνωστη, και άρα
κανονικά θα έπρεπε να είναι dependency. Όμως επειδή ελάχιστος κόσμος
θα χρησιμοποίησει αυτό το plugin, προσφέρεται μέσω του recommend η
δυνατότητα να αφαιρέσει κανείς την ruby. Άλλο παράδειγμα στην ίδια
κατηγορία είναι το kdebase-workspace-bin που κάνει recommend το
polkit-kde-1 | policykit-1-gnome (ένα interface για το policykit
δηλαδή, άσχετα αν είναι του kde ή του gnome). Αυτό χρειάζεται για να
μπορείς να αλλάξεις την ώρα από το kde, που χρειάζεται άδειες του root
 (το interface αυτό απλά πετάει ένα διάλογο που ζητάει το password).
Εάν δεν έχεις interface για το policykit εγκατεστημένο, όταν πας να
αλλάξεις την ώρα παίρνεις ένα άκυρο μήνυμα του στυλ "permission
denied" (είναι λίγο πιο άκυρο απο αυτό, αλλά δεν θυμάμαι ακριβώς τι
γράφει), και άντε μετά να βρείς τι φταίει...

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

Στην τελευταία κατηγορία τα recommended πακέτα είναι κάπως πιο
"άχρηστα" και είναι πιθανό να μην θέλεις να τα εγκαταστήσεις,
παρόλαυτά, στις άλλες κατηγορίες (αλλά και στην τελευταία εν μέρει),
εάν δεν γνωρίζεις ακριβώς τι προσφέρει το κάθε πακέτο και γιατί είναι
recommended από κάποιο άλλο, τότε το πιο σωστό είναι να τα
εγκαταστήσεις για να μην τυχών αντιμετωπίσεις κάποιο πρόβλημα.

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

Φιλικά,
Γιώργος

Reply to: