7

Δημιουργία πακέτων εγκατάστασης από πηγαίο κώδικα

Ένας φίλος μου ζήτησε να τον βοηθήσω να κάνει compile κάποιες εφαρμογές που δεν υπάρχαν σε πακέτα για το Ubuntu.

Η διαδικασία συνήθως είναι αυτή:

  1. Κατεβάζουμε τα sources
  2. Αποσυμπιέζουμε
  3. Τρέχουμε το ./configure μέχρι να σταματήσει να παραπονιέται για missing βιβλιοθήκες ή εκτελέσιμα, φροντίζοντας να κατεβάζουμε τα πακέτα που με τις βιβλιοθήκες που μας ζητά κάθε φορά.
  4. make
  5. sudo make install

Μέχρι εδώ όλα καλά, αλλά εάν θέλουμε να το αφαιρέσουμε; Δεν μπορούμε να κάνουμε ένα απλό apt-get remove, γιατί δεν το εγκαταστήσαμε ως πακέτο. Το χειρότερα έρχονται υπάρξει ένα έκδοση της εφαρμογής η οποία απαιτεί την αφαίρεση τον παλιών αρχείων πριν την εγκατάσταση. Γενικά ξυπνάει ο εφιάλτης των συστημάτων χωρίς package management που εγγυάται την σταθερή πορεία προς ένα format.

Το checkinstall έρχεται να μας σώσει. Ένα πολύ ενδιαφέρον προγραμματάκι που μπορεί να δημιουργήσει πακέτο deb, rpm και tgz (για Slackware) με όλα τα αρχεία που εγκαθηστά η εφαρμογή κατά το 'make install'

Μπορείτε να κατεβάσετε το πακέτο από τα repositories του Ubuntu

apt-get install checkinstall

και στη συνέχεια αντί για sudo make install να εκτελέσετε sudo checkinstall make install. To checkinstall θα δημιουργήσει και θα εγκαταστήσει την εφαρμογή ως πακέτο, δίνοντας λύση στο χάος. :)

Με την ευκαιρία εάν κάποιος ασχολείται με tsunami, παραλίες και τα συναφή μπορείτε να κατεβάσετε το μοντέλο xbeach και το openmpi για το Ubuntu 8.10 που έφτιαξα με τη συγκεκριμένη μέθοδο:

  1. saperduper says:

    πολύ χρήσιμο! thanks!

    Σε περίπτωση εφαρμογής γραμμένης σε python (gwibber) που θέλει sudo python setup.py install πώς την “πακετάρουμε”;

    • seadog says:

      Σύμφωνα με το manual της checkinstall το sudo checkinstall python setup.py install πρέπει να δουλέψει. Δοκίμασέ το και πες μας :)

  2. Spiros Vathis says:

    Συνήθως ότι μπορεί να εγκατασταθεί με make install μπορεί να απεγκατασταθεί με make distclean

    • seadog says:

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

  3. vag says:

    dank u well voor uw hulp

  4. greatst says:

    Πολύ ενδιαφέροντα όλα αυτά.

    Μια δικιά μου απορία: Τι αλλάζει εάν θέλουμε να φτιάξουμε ένα debian πακέτο για java εφαρμογές;

    • seadog says:

      Δεν έχω ασχοληθεί καθόλου με Java πακέτα. Φαντάζομαι ότι θα πρέπει να κάνεις required package το αντίστοιχο Java πακέτο. Περισσότερες πληροφορίες θα βρεις μάλλον σε κάποιο deb howto.