@Arathom
Ας τα πάρουμε απ' την αρχή. Δεν έχω δει τα προηγούμενα μηνύματα, απαντώ μόνο στο τελευταίο. Υπάρχουν μικρές ανακρίβειες στα παρακάτω αλλά γίνεται χάριν συντομίας και για να το καταλάβεις πιο εύκολα.
Ας πούμε ότι εγώ είμαι ένας
developer και αναπτύσσω το super-duper project γραμμένο σε C. Αυτό που κάνω εγώ είναι να δημιουργώ τα source files (τον κώδικα C). Επειδή η C είναι μια compiled γλώσσα τα προγράμματα γραμμένα σε C θέλουν compile για να μπορούν να εκτελεστούν[ΥΓ3]. Αυτό που δίνω στον end-user είναι ένα tar.gz (δεν έχει σημασία η συμπίεση, το tar.gz συνηθίζεται) που περιέχει όλα τα sources. Οπότε για να τρέξει ο χρήστης το πρόγραμμα μου θα αποσυμπιέσει το πρόγραμμα μου και θα διαβάσει στο README πως να το κάνει εγκατάσταση (λογικά θα παρέχω ένα Makefile για να κάνω την διαδικασία πιο εύκολη). Ο τρόπος εγκατάστασης (μεταγλώττισης βασικά) όμως δεν είναι πάντα στάνταρ.
Μπορώ λοιπόν να τρέχω έτσι όσα λογισμικά θέλω. Που είναι το πρόβλημα; Κανείς δεν ελέγχει στο λειτουργικό μου τι software μπαίνει και τι software βγαίνει, κανείς δεν φροντίζει για τις εξαρτήσεις των προγραμμάτων μου κλπ. Επίσης σε κάθε software θα πρέπει να διαβάζω τις οδηγίες του developer για το πως να το μεταγλωττίσω. Την λύση έρχονται να δώσουν λοιπόν τα package management systems και οι package managers.
Πάει τώρα ο Γιάννης που είναι
packager παίρνει το tar.gz μου, κάνει αυτός το compile στο μηχάνημα του και μου παρέχει ένα .deb αρχείο το οποίο ουσιαστικά περιέχει binaries. Τώρα αυτό το deb μπορώ να το δώσω στον apt (ο package manager του ubuntu) και αναλαμβάνει να κάνει αυτός την εγκατάσταση στο σύστημα μου αυτόματα. Στην πραγματικότητα δεν θα το δώσω στον apt αλλά κατευθείαν στο dpkg αλλά να μην σε μπερδέψω για την ώρα.
Τι κέρδισα απ' τα παραπάνω; 1. Δεν ασχολήθηκα καθόλου με το να διαβάσω το README και να ακολουθήσω περίεργες διαδικασίες. 2. Δεν χρειάστηκε να χάσω χρόνο στη μεταγλώττιση, πήρα κατευθείαν binaries. 3. Ο apt ξέρει ανά πάσα στιγμή τι software υπάρχουν εγκατεστημένα στο σύστημα μου και ποιες εκδόσεις αυτών. 4.... (η λίστα είναι πολύ μεγάλη πίστεψε με

πχ. αυτόματη επίλυση εξαρτήσεων των προγραμμάτων).
Να 'ναι καλά ο Γιάννης!Εκτός των άλλων ο Γιάννης είναι και πολύ καλό παιδί και πολύ αξιόπιστο άτομο και ξέρω ότι τα deb που φτιάχνει δεν περιέχουν μέσα κακόβουλο λογισμικό που μπορεί να προκαλέσει ζημιά στο σύστημα μου. Έτσι φτιάχνει η canonical ένα online ppa (αποθετήριο) το οποίο περιέχει πολλά πακέτα φτιαγμένα απ' τον Γιάννη και άλλα αξιόπιστα άτομα και έτσι αν πω στον apt να συμπεριλάβει αυτό το ppa στις πηγές του έχω πρόσβαση σε όλα αυτά τα πακέτα. Τα official ppas της Canonical περιέχονται by default στη λίστα με τις πηγές μου. Από κει και πέρα ένα ppa μπορεί να φτιάξει ο οποιοσδήποτε και είναι στην κρίση σου αν θα τον εμπιστευτείς (δεν είναι όλοι καλά παιδιά σαν τον Γιάννη) ώστε να προσθέσεις το ppa στα sources σου. Όταν ένα πρόγραμμα αποκτά κάποια δημοτικότητα τότε η Canonical φροντίζει να φτιάξει ένα πακέτο το οποίο περιέχεται στα official (trusted) ppas της.
Το software center και το synaptic δεν είναι τίποτα άλλο από γραφικά front-ends για τον apt. Σου εμφανίζουν όλα τα πακέτα που υπάρχουν στη λίστα με τα sources σου (official και μη). Μετά σκέψου ότι όταν επιλέξεις ένα πρόγραμμα στο soft center και πατήσεις install από κάτω θα εκτελεστεί η εντολή 'apt-get install packagename'. Με τη σειρά του ο apt αναλαμβάνει να κατεβάσει το deb και το δίνει στον dpkg για εγκατάσταση. Αυτά τα προγράμματα παρέχονται για διευκόλυνση των χρηστών που δεν θέλουν να μπλέκουν με command line.
Το packaging management model του Ubuntu όμως δεν είναι το μοναδικό που υπάρχει. Η Fedora πχ. χρησιμοποιεί rpm πακέτα και έχει σαν package manager τον yum, ενώ το Arch χρησιμοποιεί tar.gz πακέτα και έχει σαν package manager τον pacman.
Άρα τελικά ο developer παρέχει ένα .tar.gz πακέτο και έπειτα οι packagers της κάθε διανομής το παίρνουν αυτό και δημιουργούν πακέτα για την εκάστοτε διανομή. Όταν εγκαθιστώ ένα πρόγραμμα όχι μέσω του package manager μου αλλά κατευθείαν απ' τον πηγαίο κώδικα λέμε ότι κάνω install from source. Δεν προτείνεται γενικά παρά μόνο στις περιπτώσεις που δεν έχει πακεταριστεί ένα πρόγραμμα ή θέλω συγκεκριμένη έκδοση του προγράμματος.
Arathorn έγραψε:χρειάζονται μια "μεταγλώττιση" το λεγόμενο compile ή mount
Το mount είναι τελείως άλλο πράγμα απ' την μεταγλώττιση/compile και εντελώς άσχετο με την εγκατάσταση προγραμμάτων.
έγραψε:αυτά του είδους τα αρχεία (tar.gz) μπορούν να γίνουν convert σε .deb.
Δεν υφίσταται τέτοιο πράγμα. Για να δημιουργήσεις ένα .deb πρέπει να ακολουθήσεις τις συγκεκριμένες οδηγίες για τη δημιουργία deb.
Arathorn έγραψε: Άν και η εγκατάσταση "ολοκληρώθηκε", εν τούτοις δεν υπήρχε firefox στο σύστημά μου!
Προφανώς γιατί δεν ξέρουμε τι ήταν αυτό το και καλά "deb" που έφτιαξες.
Arathorn έγραψε:τα αρχεία με κατάληξη .tar.gz [2] απ' ότι κατάλαβα, χρειάζονται μια "μεταγλώττιση"
Όχι απαραίτητα. Πχ. ένα πρόγραμμα σε python δεν θέλει μεταγλώττιση αφού η python δεν είναι compiled γλώσσα αλλά interpreted. Έτσι μπορείς να τρέξεις κατευθείαν το πρόγραμμα from source. Και πάλι όμως χρησιμοποιείς τον package manager σου για όλους τους λόγους που είπαμε παραπάνω.
ΥΓ1.
Τώρα είδα το alien που λες.
Δεν ήξερα ότι έχει επιχειρηθεί τέτοιο πράγμα. Δεν θα το πρότεινα για κανένα λόγο όμως. Αν δεις την μορφή ενός deb και ενός rpm θα καταλάβεις γιατί.
ΥΓ2.
Ρίξε μια ματιά αν θες και σ' αυτό για να καταλάβεις τι είναι apt και τι είναι dpkg:
viewtopic.php?f=41&t=28916#p306484ΥΓ3.
Έτσι όπως το έγραψες δεν είμαι σίγουρος αν κατάλαβες και τι ακριβώς είναι η μεταγλώττιση γι' αυτό το αναφέρω κι αυτό στα γρήγορα.
Ένα πρόγραμμα σε C (πχ.) δεν είναι τίποτα άλλο παρά ένα text file που περιέχει μέσα κώδικα C. Τα text files ως γνωστόν δεν εκτελούνται. Ο compiler είναι ένα πρόγραμμα το οποίο διαβάζει το text file με τον κώδικα C και δημιουργεί ένα εκτελέσιμο, δηλαδή ένα αρχείο το οποίο ο υπολογιστής καταλαβαίνει (γλώσσα μηχανής) και μπορεί να εκτελέσει. Τα εκτελέσιμα στα Windows έχουν κατάληξη exe. Στο linux δεν έχουν κάποια κατάληξη. Μπορείς να βρεις τα εκτελέσιμα από σχεδόν όλα τα προγράμματα σου στον κατάλογο /usr/bin.
ΥΓ4.
Για να καταλάβεις λίγα περισσότερα για τα deb, δεν περιέχουν μόνο τα binaries του προγράμματος, αλλά και άλλες meta-πληροφορίες όπως την έκδοση, τις dependencies και τις opt-dependencies του προγράμματος, αν κάνει conflict με κάποιο άλλο πακέτο και πολλά άλλα.