Προς το περιεχόμενο

Ένταξη compiled κώδικα σε package manager


nikolaos_

Προτεινόμενες αναρτήσεις

Με το dpkg -l μπορώ να έχω μια καλή λίστα με τα εγκατεστημένα στοιχεία του ubuntu 12.04 που χρησιμοποιώ.

 

Επίσης συνηθίζω να κατεβάζω source code και να κάνω compile, είτε σε μεγαλύτερες εκδόσεις είτε σε εφαρμογές που δεν έχουν "πακετοποιηθεί" δυαδικά. Φυσικά το dependencies resolve το βγάζω μόνος μου σε αυτές τις περιπτώσεις, αλλά τότε θα προτιμήσω το έτοιμο πακέτο για κάθε dependent στοιχείο, καθώς στο 90% των περιπτώσεων το dependent πακέτο βρίσκεται σε μια έκδοση που με βολεύει (συνήθως είναι development πακέτα με βιβλιοθήκες), και το κατεβάζω από το software center. Έτσι τα dependencies των προγραμμάτων που κάνω compile τουλάχιστον καταχωρούνται στα εγκατεστημένα στοιχεία του λειτουργικού.

 

Είναι φανερό όμως ότι το καθαυτό compilation δεν συνεργάζεται με τον package manager και τα προγράμματα αυτά δεν καταχωρούνται στην παραπάνω λίστα. Κάτι τέτοιο όμως θα εξυπηρετούσε, έστω κι αν έμενε χωρίς λεπτομέρειες σχετικά με τα dependencies, ή με δυνατότητα να τις συμπληρώνω εγώ με το χέρι. Να φαίνεται τουλάχιστον στο software center ένα "manually installed" και ότι το καταχώρησα εγώ.

 

Άλλωστε η διαδικασία για το compile στο σύνολο σχεδόν των προγραμμάτων που έχω βάλει αφορά την αυτοματοποίηση configure, make, make install. Σε αυτή την περίπτωση υπάρχει βέβαια το checkinstall που (αν δεν κάνω λάθος) παρακολουθεί που πηγαίνει ο compiled κώδικας καθώς τον εγκαθιστά, παράγοντας το πακέτο .deb αλλά δεν κάνει τις καταχωρήσεις, ούτε μαντεύει τις dependencies που χρησιμοποιήθηκαν.

 

Επίσης τα πράγματα είναι αρκετά καλά όταν κάνω compile όχι στο τελικό πρόγραμμα, σηκώνοντας τα dependencies από το software center (ή τρέχοντας synaptic, apt-get κλπ.) Γιατί αν θέλω να σβήσω την compiled εφαρμογή (make uninstall π.χ.), η παραμονή των dependencies στο σύστημα μπορεί να μην με πειράζει. Ωστόσο τα πράγματα είναι χειρότερα όταν το compilation αφορά dependency ενός άλλου τελικού προγράμματος, δηλαδή κάνω compile τον "μεσάζοντα", γιατί δεν φαίνεται καταχωρημένος από τους package managers και το uninstallation του μπορεί να προκαλέσει χάος στο τελικό πρόγραμμα και ό,τι "πατάει" πάνω του τελοσπάντων.

 

Ανοίγω λοιπόν αυτό το θέμα συζήτησης για να ενημερωθώ τι εξελίξεις υπάρχουν σε αυτή τη δραστηριότητα, κατά πόσον διευκολύνεται ένας "χειροτέχνης" χρήστης να παρακολουθεί το σύστημά του και τις εξαρτήσεις των εκτελέσιμων προγραμμάτων, τις βιβλιοθήκες, πώς μπορεί να το ενημερώνει έστω και με το χέρι, αλλά και πώς να κάνει μια διαχείρηση με καλή συνεργασία με τον package manager. Φαντάζομαι κάποιο είδος utility που κάνει κάποιο ψάξιμο ή αναλαμβάνει ο χρήστης να το ενημερώνει εύκολα μόνος του.

 

Ευχαριστώ εκ των προτέρων για τις απαντήσεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω ότι πρέπει να δημιουργήσεις πακέτο για να το δει ο package manager. Δηλαδή στο ubuntu *.deb. Δεν ξέρω τη διαδικασία για να σου δώσω πληροφορίες. Ίσως η διανομή στην οποία η δημιουργία πακέτων  είναι ευκολότερη από όλες είναι το Arch. Δεν ξέρω αν καλύπτει ως διανομή τις ανάγκες/απαιτήσεις σου, αλλά η διαδικασία που περιγράφεις (dependency management + custom πακέτα) είναι πραγματικά απλή.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

το checkinstall νομίζω σου έχει να συμπληρώσεις dependencies

Ναι αλλά θα φτιαχτεί ένα πακέτο για κάτι που ήδη θα έχει εγκατασταθεί, δεν θα κάνεις εγκατάσταση του πακέτου που θα φτιαχτεί, οπότε δεν μπορείς να καταχωρήσεις την εγκατάσταση, εκτός αν τρέξεις κατόπιν το πακέτο με dpkg και γράψει πάνω στο εγκατεστημένο (δεν ξέρω αλλά δεν μου αρέσει η ιδέα).

 

Επίσης μου φαίνεται ότι μπορείς να γράψεις οτιδήποτε αντί για dependencies, είναι δυνατόν έτσι να φτιάξεις ένα πακέτο που θα είναι παραπλανητικό και δεν θα κάνει resolve. Για ποιο λόγο να φτιάξεις το .deb αν δεν πρόκειται να λειτουργήσει με το dpkg;

 

Αυτό που με ενδιαφέρει δεν είναι να φτιάχνω πακέτα .deb (ή .rpm κλπ.) αλλά να έχω μια εικόνα των εγκατεστημένων στο σύστημά μου. Μόνο αν δεν μπορώ να κάνω αλλιώς θα φτιάξω πακέτα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αντί για make install κάνεις το checkinstall, φτιάχνεις το πακέτο και μετά το βάζεις με dpkg -i

τι εννοείς έχει ήδη εγκατασταθεί

επίσης εννοείται οτι μπορείς να βάλεις ότι να ναι για dependency αφού δεν μπαίνουν αυτόματα

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το checkinstall δεν είναι και make install; Δεν εκτελεί την εγκατάσταση;

Έχω την εντύπωση ότι εκτελεί το make install, άρα το εγκαθιστά και φτιάχνει ταυτόχρονα ένα deb πακέτο.

Στο μεταξύ δεν έχει όμως καταχωρηθεί η εγκατάσταση, οπότε...;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το checkinstall δεν είναι και make install; Δεν εκτελεί την εγκατάσταση;

Έχω την εντύπωση ότι εκτελεί το make install, άρα το εγκαθιστά και φτιάχνει ταυτόχρονα ένα deb πακέτο.

Στο μεταξύ δεν έχει όμως καταχωρηθεί η εγκατάσταση, οπότε...;

 

όχι 

 

sudo checkinstall --install=no

 

http://www.manpages.spotlynx.com/gnu_linux/man/checkinstall.8

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...