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

Γειά σου!

Αυτή είναι μια μικρή σημείωση για αρχάριους Linux σχετικά με το τι σημαίνουν αυτές οι τρεις εξαιρετικές εντολές και τι χρησιμεύουν. Ας τα πάρουμε, όπως λένε, από την αρχή. Τα περισσότερα προγράμματα πρέπει να μεταγλωττιστούν πριν από τη χρήση, δηλαδή να μετατραπούν από κείμενο αναγνώσιμο από τον άνθρωπο σε ένα σύνολο μονάδων και μηδενικών που μπορεί να κατανοήσει ένας υπολογιστής. Η διαδικασία χωρίζεται υπό όρους σε τρία στάδια: διαμόρφωση (configure), συναρμολόγηση (make) και εγκατάσταση (make install). Λεπτομέρειες κάτω από το κόψιμο 🙂

./Διαμορφώστε

Αυτή η εντολή αναζητά βιβλιοθήκες και αρχεία κεφαλίδων που είναι απαραίτητα για τη μεταγλώττιση (πρόκειται για προγράμματα εν μέρει ή πλήρως γραμμένα σε C / C ++ και παρόμοιες γλώσσες), καθώς και ορίζει ειδικές παραμέτρους ή συνδέει ειδικές βιβλιοθήκες, εάν ./Διαμορφώστεθα βρει όλα όσα χρειάζεται, θα δημιουργήσει Αρχεία MakeFiles- το αρχείο που απαιτείται για τη δημιουργία του προγράμματος

Μπορείτε να διαμορφώσετε τις παραμέτρους του διαμορφωτή χρησιμοποιώντας τα κλειδιά και τα ορίσματα αυτών των ίδιων κλειδιών, για παράδειγμα:

./configure --prefix=/opt/my_program

Με κλειδί --πρόθεμα= Μπορείτε να καθορίσετε έναν κατάλογο που αργότερα θα λειτουργεί ως πρόθεμα για το πρόγραμμά σας (δηλαδή τον ριζικό κατάλογο). Αυτό οφείλεται στο γεγονός ότι στον κόσμο του Linux και όχι μόνο, υπάρχει μια ειδική Ιεραρχία του Συστήματος Αρχείων (HFS) σύμφωνα με την οποία κάθε πρόγραμμα πρέπει να μεταγλωττιστεί και να εγκατασταθεί για να λειτουργεί χωρίς σφάλματα.

Υπάρχουν τρία κύρια προθέματα στο σύστημα αρχείων με τα οποία έχουν ρυθμιστεί τα περισσότερα προγράμματα, και συγκεκριμένα:

  • / - ο ριζικός κατάλογος του λειτουργικού συστήματος, το λεγόμενο ROOT
  • /usr - κατάλογος όπου βρίσκονται οι εφαρμογές περιβάλλοντος χρήστη
  • /usr/local - ένας πρόσθετος κατάλογος για μη αυτόματα μεταγλωττισμένα προγράμματα χρήστη, ειδικά για λειτουργικό σύστημαδεν μετατράπηκε σε χωματερή

Εάν ανοίξετε οποιονδήποτε από αυτούς τους καταλόγους, μπορείτε να δείτε μια πολύ παρόμοια δομή, τουλάχιστον θα υπάρχουν φάκελοι: bin, etc, include, libs, sbin.

Αν τρέξει ./Διαμορφώστεχωρίς κλειδιά, τότε θα είναι το προεπιλεγμένο πρόθεμα (ο κατάλογος όπου θα εγκατασταθεί το μεταγλωττισμένο πρόγραμμα). /usr/local, να το θυμάστε αυτό εάν δεν μπορείτε να εκτελέσετε το πρόγραμμά σας, ενδέχεται να μην έχετε διαδρομή μέσα ΜΟΝΟΠΑΤΙ.

Εκτός από το κλειδί --πρόθεμαστον διαμορφωτή, κατά κανόνα, υπάρχουν πολλά άλλα κλειδιά, μπορείτε να τα δείτε όλα εάν εκτελέσετε:

./configure --help

φτιαχνω, κανω

Η πιο σημαντική και απλή εντολή/πρόγραμμα από το οποίο ξεκινά η διαδικασία μεταγλώττισης της εφαρμογής πηγαίος κώδικας. Για τη δουλειά σου αυτό το πρόγραμμαχρησιμοποιεί ειδικά αρχεία Αρχεία MakeFiles, που περιγράφουν αναλυτικά τη διαδικασία κατασκευής της εφαρμογής με όλες τις παραμέτρους που καθορίσαμε στο configurator. Το αποτέλεσμα της επιτυχούς εκτέλεσης της εντολής make θα είναι το μεταγλωττισμένο πρόγραμμα στον τρέχοντα κατάλογο.

κάντε εγκατάσταση

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

Επίλογος

Για να μην γράψετε τρεις εντολές με τη σειρά, μπορείτε να τις γράψετε σε μία γραμμή:

./διαμόρφωση && πραγματοποίηση && εγκατάσταση

&& είναι ένας τελεστής ΚΑΙ που προήλθε από τη γλώσσα C/C++, ωστόσο, από την άποψη του κελύφους, σημαίνει ότι η επόμενη εντολή πρέπει να εκτελεστεί μόνο εάν η προηγούμενη εντολή ήταν επιτυχής, αυτό είναι πολύ βολικό εάν ένα από τα στάδια τελειώνει με ένα λάθος.

Στην πραγματικότητα, το make install μπορεί επίσης να δημιουργήσει, επειδή η εργασία εγκατάστασης εξαρτάται από την όλη εργασία (δηλαδή την άμεση δημιουργία της εφαρμογής), που σημαίνει ότι το βήμα δημιουργίας μπορεί να παραλειφθεί και μόνο δύο εντολές μπορούν να εκτελεστούν εάν γραφτούν σε μία γραμμή:

./διαμόρφωση && πραγματοποίηση εγκατάστασης

Καλή σου τύχη! Και ευχαριστώ για την ανάγνωση!

Η ουσία είναι ότι αυτή η εντολή με τη μορφή "make install" ή "sudo make install" δεν μπορεί να χρησιμοποιηθεί σε σύγχρονες διανομές.

Αλλά τελικά, οι συντάκτες των προγραμμάτων στα εγχειρίδια εγκατάστασης γράφουν ότι πρέπει να χρησιμοποιήσετε αυτήν την εντολή, θα πείτε. Ναι, γράφουν. Αλλά αυτό σημαίνει μόνο ότι δεν ξέρουν τι κιτ διανομής έχετε, και αν είναι καθόλου κιτ διανομής, ίσως γίνατε μέλος μιας αίρεσης και καπνίσατε διαβάζοντας LFS και τώρα αποφασίσατε να συντάξετε τη δημιουργία τους κάτω από το χθόνιο σύστημά σας. Και η εγκατάσταση είναι καθολική, αν και συχνά ο ΛΑΘΟΣ ΔΡΟΜΟΣΚάνε το.

Λυρική παρέκβαση

Όπως γνωρίζετε, για κανονική λειτουργία, το μεγαλύτερο μέρος του λογισμικού πρέπει όχι μόνο να μεταγλωττιστεί, αλλά και να εγκατασταθεί σωστά στο σύστημα. Τα προγράμματα αναμένουν να βρουν τα αρχεία που χρειάζονται σε ορισμένα σημεία και αυτές οι θέσεις στα περισσότερα συστήματα *nix κωδικοποιούνται στον κώδικα κατά τη στιγμή της μεταγλώττισης. Εκτός από αυτήν την πτυχή, η κύρια διαφορά μεταξύ της διαδικασίας εγκατάστασης σε linux/freebsd/whatever και εκείνης στα Windows και MacOS είναι ότι το πρόγραμμα δεν τοποθετεί απλώς μια δέσμη αρχείων σε έναν ξεχωριστό κατάλογο σε Program Files ή /Applications, αλλά " εξαπλώνεται» σε ολόκληρο το σύστημα αρχείων. Οι βιβλιοθήκες πηγαίνουν στο lib, τα εκτελέσιμα αρχεία στο bin, οι ρυθμίσεις παραμέτρων σε κ.λπ., διάφορα δεδομένα στο var και ούτω καθεξής. Εάν ξαφνικά χρειαστεί να το ενημερώσετε, τότε όλα αυτά πρέπει πρώτα να καθαριστούν με κάποιο τρόπο, γιατί. χρησιμοποιώντας νέα έκδοσηυπολείμματα αρχείων από το παλιό μπορεί να οδηγήσουν σε εντελώς απρόβλεπτες συνέπειες, συχνά κακό. Η πιθανότητα αυτού του συμβάντος δεν είναι τόσο μεγάλη, αλλά το χρειάζεστε σε διακομιστή μάχης;

Και λοιπόν?

Επομένως, εάν κάνατε την εγκατάσταση απευθείας μέσω της εγκατάστασης, τότε είναι φυσιολογικό να αφαιρέσετε ή να ενημερώσετε το λογισμικό, πιθανότατα δεν μπορείς. Επιπλέον, είναι πιθανό να εγκαταστήσετε μια νέα έκδοση πάνω από την παλιά θα αντικαταστήσει τις αλλαγές σας στις ρυθμίσεις παραμέτρων. Το make install κάνει ακριβώς αυτό που του λένε - εγκαθιστά τα αρχεία στα σωστά σημεία, αγνοώντας το γεγονός ότι κάτι υπάρχει ήδη. Μετά από αυτή τη διαδικασία, είναι αδύνατο να ληφθεί καμία απολύτως πληροφορία σχετικά με το τι τοποθετήθηκε και πού σε μια εύπεπτη μορφή. Μερικές φορές, φυσικά, το Makefile υποστηρίζει την ενέργεια απεγκατάστασης, αλλά αυτό δεν είναι τόσο συνηθισμένο και δεν είναι γεγονός ότι λειτουργεί σωστά. Επιπλέον, η αποθήκευση του μη συσκευασμένου δέντρου πηγών και των κανόνων συναρμολόγησης για απεγκατάσταση είναι κάπως περίεργη.

Πώς να πολεμήσετε;

Δεδομένου ότι τα πακέτα στις διανομές τείνουν να ενημερώνονται μερικές φορές, για να λύσουν αυτό το πρόβλημα, βρήκαν ένα τέτοιο πράγμα ως διαχειριστής πακέτων. Όταν το χρησιμοποιείτε, η εγκατάσταση γίνεται κάπως έτσι:
  1. λαμβάνεται ένα ειδικά διαμορφωμένο αρχείο
  2. εξάγονται πληροφορίες από αυτό σχετικά με το τι είναι, ποια έκδοση είναι, από τι εξαρτάται, με τι έρχεται σε αντίθεση, εάν είναι απαραίτητο να εκτελέσετε ορισμένα σενάρια για εγκατάσταση / αφαίρεση / διαμόρφωση κ.λπ.
  3. Εκτέλεση βημάτων απευθείας εγκατάστασης
  4. Όλα τα δεδομένα σχετικά με το πού και τι παραδόθηκε προστίθενται στη βάση δεδομένων του διαχειριστή πακέτων.

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

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

Τι να κάνω?

Μπορείτε, φυσικά, να διαμορφώσετε το δέντρο προέλευσης έτσι ώστε η εγκατάσταση των πάντων και όλων να πηγαίνει κάπου στο /opt/mycoolapp/ και, στη συνέχεια, να το διαγράψετε με μη αυτόματο τρόπο εάν είναι απαραίτητο, αλλά πολλά δυσάρεστα πράγματα μπορούν να εμφανιστούν εδώ, ξεκινώντας από το γεγονός ότι το πρόγραμμα αναμένει ότι μπορεί να φορτώσει τις βιβλιοθήκες σας και ο φορτωτής δεν γνωρίζει τίποτα για τον κατάλογο όπου βρίσκονται, τελειώνοντας με το γεγονός ότι ο συγγραφέας του προγράμματος μπορεί να περιμένει ότι, για παράδειγμα, εάν βάλει ένα αρχείο, ας πούμε σε $πρόθεμα /share/xsessions/, τότε ο διαχειριστής οθόνης θα το πάρει. Για να μην αναφέρουμε τις διαδρομές για pkgconfig και άλλα.

Πρέπει λοιπόν να συλλέξετε το πακέτο.

Δεν έχω χρόνο να *** ασχοληθώ με αυτό, καλύτερα να κάνω την εγκατάσταση ξανά, όλα είναι απλά και ξεκάθαρα!

Ηρέμησε, ηρέμησε. Είναι δεμένος στα πόδια μας. Όλα δεν είναι τόσο τρομακτικά και δύσκολα όσο φαίνονται με την πρώτη ματιά.
check-install
Αυτό το υπέροχο βοηθητικό πρόγραμμα, όταν εκτελείται αντί για εγκατάσταση, θα κάνει μερικές ερωτήσεις, μετά τις οποίες θα δημιουργήσει και θα εγκαταστήσει το ίδιο το πακέτο. Τα πάντα, κατά την ενημέρωση, δεν θα έχετε κανένα πρόβλημα με τον καθαρισμό των παλιών απορριμμάτων.
Δημιουργία ενός πακέτου deb με μη αυτόματο τρόπο
Εάν δεν έχετε την τάση να εμπιστεύεστε τέτοιους αυτοματισμούς (που μερικές φορές εξακολουθεί να ανακατεύεται) ή εάν θέλετε να κάνετε μερικές αλλαγές, αλλά εξακολουθείτε να είναι τεμπέλης να αντιμετωπίσετε την κανονική διαδικασία κατασκευής πακέτων, τότε μπορείτε να δημιουργήσετε το πακέτο χειροκίνητα. Δίνω έναν τρόπο να το δημιουργήσω για συστήματα που βασίζονται στο Debian, καθώς τα γνωρίζω περισσότερο. Δεν είναι ιδεολογικά σωστό, αλλά η έξοδος είναι ένα εντελώς σωστό πακέτο χωρίς να εμπλέκονται πρόσθετες οντότητες. Αυτό γίνεται με τον ακόλουθο τρόπο.
Αρχικά, χτίζουμε το λογισμικό με τις παραμέτρους --prefix=/usr και --exec-prefix=/usr που είχαν καθοριστεί προηγουμένως για configure ή autogen.sh.
Στη συνέχεια, εγκαθιστούμε σε έναν προσωρινό κατάλογο. Γράφουμε:

Fakeroot κάνει εγκατάσταση DESTDIR=`pwd`/tempinstall
Μετά από αυτό, λαμβάνουμε ολόκληρο το σύνολο των αρχείων στον πρόσφατα δημιουργημένο κατάλογο. Παρεμπιπτόντως, βρισκόμαστε τώρα σε ένα περιβάλλον fakeroot, δηλαδή μπορείτε να αλλάξετε ελεύθερα τον κάτοχο και τα δικαιώματα πρόσβασης των αρχείων, αλλά φυσικά εσείς οι ίδιοι θα παραμείνετε ο κάτοχος του συστήματος. Το λογισμικό εντός της περιόδου λειτουργίας fakeroot θα λάβει τις αλλαγμένες πληροφορίες, οι οποίες θα επιτρέψουν τη συσκευασία αρχείων με τα σωστά δικαιώματα στο αρχείο.
Στη συνέχεια, δημιουργήστε τον κατάλογο DEBIAN στη "ρίζα πακέτου" και βάλτε στο DEBIAN/conffiles μια λίστα με όλα τα αρχεία που πρέπει να μπουν στο /etc:

Cd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles
Στη συνέχεια δημιουργούμε ένα αρχείο DEBIAN/control με το ακόλουθο περιεχόμενο:

Εάν είναι απαραίτητο, μπορείτε επίσης να δημιουργήσετε σενάρια preinst, postinst, prerm και postrm εκεί.

Αυτό ήταν όλο, κάνουμε dpkg -b tempinstall και παίρνουμε tempinstall.deb στην έξοδο, στο οποίο μπορείτε να ορίσετε το dpkg -i και το οποίο θα εγκατασταθεί, θα ενημερωθεί ή θα διαγραφεί σωστά.

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

συμπέρασμα

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

Δεν είναι ασυνήθιστο τα απαιτούμενα πακέτα να βρίσκονται μόνο σε μορφή πηγής. Αυτό το άρθρο περιγράφει τον τρόπο εγκατάστασης ενός πακέτου από την πηγή.

Unboxing

Τα προγράμματα συνήθως διανέμονται σε συσκευασμένα αρχεία, αυτά είναι αρχεία με επεκτάσεις

.tar.gz (μερικές φορές .tgz) .tar.bz2

Πρέπει να κατανοήσετε τη διαφορά μεταξύ ενός αρχειοθέτη και ενός συσκευαστή.

Το πρόγραμμα χρησιμοποιείται για την αρχειοθέτηση καταλόγων και αρχείων. πίσσα; το αποτέλεσμα της δουλειάς του είναι ένα αρχείο με την επέκταση .πίσσα. Σε γενικές γραμμές, αυτό είναι ένα αντίγραφο σύστημα αρχείων- καταλόγους και αρχεία με τα χαρακτηριστικά και τα δικαιώματα πρόσβασης, τοποθετημένα σε ένα αρχείο.

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

Πρόγραμμα πίσσαμπορεί να αποσυσκευαστεί, οπότε δεν χρειάζεται να τηλεφωνήσετε φερμουάρ, ή μπορείτε απλώς να πείτε το πρόγραμμα πίσσαότι το αρχείο πρέπει να αποσυμπιεστεί πρώτα. Για παράδειγμα, η εντολή

tar-xvf< some_app_name>.tar.gz

αμέσως αποσυσκευάστε και αποσυμπιέστε. Η διαφορά μεταξύ αρχείων με επεκτάσεις

.tar.gz

.tar.bz2

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

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

CD< имя_пакета>*

Κατασκευή πακέτου

Για τη δημιουργία προγραμμάτων στο GNU/Linux, κάποιος χρησιμοποιεί (κυρίως) το πρόγραμμα φτιαχνω, κανω, το οποίο εκτελεί οδηγίες από Makefile, αλλά επειδή υπάρχουν πολλές διανομές GNU / Linux και είναι όλες διαφορετικές, για να μεταγλωττίσετε το πρόγραμμα, πρέπει να γράψετε ξεχωριστά τις διαδρομές για κάθε διανομή, όπου βρίσκονται οι βιβλιοθήκες και τα αρχεία κεφαλίδων. Οι προγραμματιστές δεν μπορούν να μελετήσουν κάθε διανομή και να δημιουργήσουν ξεχωριστά για καθεμία Makefile. Ως εκ τούτου, κατέληξαν σε διαμορφωτές που «μελετούν» το σύστημα και σύμφωνα με τη γνώση που αποκτήθηκε, δημιουργούν Makefile. Αλλά δεν σταμάτησαν στο configurator και κατέληξαν σε configurators of configurators ... σταμάτησαν εκεί

Για την κατασκευή, χρειαζόμαστε μεταγλωττιστές: είναι γραμμένοι στις εξαρτήσεις του πακέτου κατασκευή-απαραίτητο, οπότε αρκεί να το εγκαταστήσετε με όλες τις εξαρτήσεις. Ακόμα χρειάζεται autoconfκαι αυτοκινητοβιομηχανία.

Έτσι, για να δημιουργήσετε κάτι από την πηγή, πρέπει πρώτα να δημιουργήσετε τον διαμορφωτή. πώς να δημιουργήσετε το πρόγραμμα διαμόρφωσης περιγράφεται στο αρχείο configure.in. Για να συναρμολογήσετε τον διαμορφωτή, πρέπει να εκτελέσετε

./bootstrap ./autogen.sh

Εάν δεν υπάρχουν τέτοια σενάρια στο αρχείο, τότε μπορείτε να εκτελέσετε τις ακόλουθες εντολές με τη σειρά:

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

Όλες αυτές οι εντολές χρησιμοποιούν το αρχείο configure.in. Μετά την εκτέλεση αυτών των εντολών, θα δημιουργηθεί ένα αρχείο Διαμορφώστε. Μετά από αυτό, πρέπει να εκτελέσετε το πρόγραμμα διαμόρφωσης για να ελέγξετε τη διαθεσιμότητα όλων των εξαρτήσεων, καθώς και να εγκαταστήσετε πρόσθετες επιλογές κατασκευής (αν είναι δυνατόν) και να προβάλετε το αποτέλεσμα εγκατάστασης (προαιρετικό - μπορεί να μην είναι)

./ Διαμορφώστε

Ο διαμορφωτής θα δημιουργήσει ένα Makefile με βάση τις γνώσεις που αποκτήθηκαν και το αρχείο makefile.am. Μπορείτε να μεταβιβάσετε στον διαμορφωτή τις επιλογές που παρέχονται στις πηγές του προγράμματος, οι οποίες σας επιτρέπουν να ενεργοποιήσετε / απενεργοποιήσετε ορισμένες λειτουργίες του προγράμματος, συνήθως μπορείτε να μάθετε για αυτές με την εντολή

./ configure --help

Υπάρχει επίσης ένα σύνολο τυπικών επιλογών, όπως

Πρόθεμα=

Το οποίο καθορίζει ποιος κατάλογος θα χρησιμοποιηθεί για εγκατάσταση. Για το Ubuntu συνήθως

--prefix=/usr --prefix=/usr/local

ΧΩΡΙΣκάθετο στο τέλος! Τώρα μπορείτε να ξεκινήσετε τη διαδικασία κατασκευής του ίδιου του προγράμματος με την εντολή

φτιαχνω, κανω

Για τη συναρμολόγηση, αρκούν τα κανονικά δικαιώματα χρήστη. Το τέλος της συναρμολόγησης μπορεί να θεωρηθεί η στιγμή που οι εντολές στην κονσόλα παύουν να εκτελούνται «χαοτικά» και δεν θα υπάρχει λέξη λάθος. Τώρα όλα είναι μεταγλωττισμένα και έτοιμα για εγκατάσταση.

Εγκατάσταση

Η προσπάθεια που δαπανήθηκε για τη Σωστή εγκατάσταση αργότερα θα αποδοθεί περισσότερο από ό,τι αν καταργηθεί ή ενημερωθεί το εγκατεστημένο λογισμικό.

Σωστή εγκατάσταση (Επιλογή Αρ. 1)

Εγκατάσταση με χρήση του βοηθητικού προγράμματος check-install. Για εγκατάσταση, εκτελέστε

sudo apt-get install checkinstall

Το μειονέκτημα αυτής της μεθόδου: check-installδεν κατανοεί όλες τις πηγές, καθώς ο συγγραφέας του προγράμματος μπορεί να γράψει ειδικά σενάρια εγκατάστασης και check-installδεν θα τους καταλάβει.

Για να δημιουργήσετε και να εγκαταστήσετε ένα πακέτο deb, πρέπει να εκτελέσετε

sudo check-install

Σωστή εγκατάσταση (Επιλογή Νο. 2)

Γρήγορη δημιουργία ενός πακέτου deb "χειροκίνητα".

Η κύρια διαφορά από την προηγούμενη μέθοδο είναι ότι σε αυτήν την περίπτωση δημιουργείτε το πακέτο χειροκίνητα και παρακολουθείτε όλες τις αλλαγές που κάνετε. Αυτή η μέθοδος είναι επίσης κατάλληλη για εσάς εάν οι πηγές δεν υποστηρίζουν τη δημιουργία του πακέτου με check-install.

    Κάνουμε εγκατάσταση σε έναν προσωρινό κατάλογο, όπου λαμβάνουμε ολόκληρο το σύνολο των εγκατεστημένων αρχείων:

fakeroot κάνει εγκατάσταση DESTDIR =`pwd`/tempinstall

    Ας δημιουργήσουμε τον κατάλογο DEBIAN στη "ρίζα του πακέτου" και ας βάλουμε στο DEBIAN/conffiles μια λίστα με όλα τα αρχεία που πρέπει να μπουν στο /etc:

cd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/ conffiles

    Στη συνέχεια δημιουργούμε ένα αρχείο DEBIAN/control με το ακόλουθο περιεχόμενο:

Πακέτο: package_name Έκδοση: 1.2.3 Αρχιτεκτονική: amd64/i386/armel/all Συντηρητής: Μπορείτε να εισαγάγετε το όνομά σας, μπορείτε να κάνετε σκουπίδια, αλλά αν μείνετε κενό, τότε το dpkg θα ορκιστεί Εξαρτάται: Εδώ μπορείτε να εισαγάγετε μια λίστα πακέτων που χωρίζονται με κόμματα. Προτεραιότητα: προαιρετική Περιγραφή: Πρέπει επίσης να εισαγάγετε κάτι ώστε να μην εκπέμπεται καμία προειδοποίηση

    Εάν είναι απαραίτητο, μπορείτε επίσης να δημιουργήσετε σενάρια preinst, postinst, prerm και postrm εκεί.

    Δημιουργούμε ένα πακέτο deb, για το οποίο εκτελούμε:

dpkg -b προσωρινή εγκατάσταση

    Λαμβάνουμε την έξοδο tempinstall.deb, την οποία εγκαθιστούμε

sudo dpkg -i tempinstall.deb

Εγκατάσταση (επιλογή Νο. 3)

Λανθασμένη εγκατάσταση

Το μειονέκτημα αυτής της μεθόδου είναι ότι εάν κάνετε απευθείας εγκατάσταση μέσω make install, τότε πιθανότατα δεν θα μπορείτε να αφαιρέσετε ή να ενημερώσετε το πακέτο κανονικά. Επιπλέον, η εγκατάσταση μιας νέας έκδοσης πάνω από την παλιά πιθανότατα θα αντικαταστήσει τις αλλαγές σας στις ρυθμίσεις παραμέτρων. Το make install κάνει ακριβώς αυτό που του λένε - εγκαθιστά τα αρχεία στα σωστά σημεία, αγνοώντας το γεγονός ότι κάτι υπάρχει ήδη. Μετά από αυτή τη διαδικασία, είναι αδύνατο να ληφθεί καμία απολύτως πληροφορία σχετικά με το τι τοποθετήθηκε και πού σε μια εύπεπτη μορφή. Μερικές φορές, φυσικά, το Makefile υποστηρίζει την ενέργεια απεγκατάστασης, αλλά αυτό δεν είναι τόσο συνηθισμένο και δεν είναι γεγονός ότι λειτουργεί σωστά. Επιπλέον, θα χρειαστεί να διατηρήσετε το μη συσκευασμένο δέντρο πηγών και να δημιουργήσετε κανόνες για την απεγκατάσταση.

Για να εγκαταστήσετε, πρέπει να εκτελέσετε

sudo make install

Για να αφαιρέσετε ένα πακέτο που είναι εγκατεστημένο με αυτόν τον τρόπο, πρέπει να το εκτελέσετε στον ριζικό κατάλογο των πηγών του προγράμματος (όπου εκτελέσατε το make install).

sudo make uninstall

Λάθη

Συχνά στο στάδιο της διαμόρφωσης, ο διαμορφωτής αναφέρει ότι λείπει αυτή ή εκείνη η βιβλιοθήκη. Το όνομα της βιβλιοθήκης που αναφέρει δεν ταιριάζει πάντα με το όνομα του πακέτου στο Ubuntu. Από τη δική μου εμπειρία, μπορώ να σας συμβουλεύσω να κάνετε αναζήτηση στο Synaptic για το επιθυμητό πακέτο, εξαιρουμένου του προθέματος lib, εάν υπάρχουν πολλά πακέτα που διαφέρουν στο πρόθεμα -dev στο όνομα, τότε πρέπει να εγκαταστήσετε το πακέτο -dev (συνήθως αυτό τραβάει ένα πακέτο που δεν είναι προγραμματισμένο). Μπορείτε επίσης να κάνετε αναζήτηση χρησιμοποιώντας το http://packages.ubuntu.com/ πληκτρολογώντας το όνομα της βιβλιοθήκης στην αναζήτηση περιεχομένου πακέτου, ομοίως, αν βρεθούν dev και non-dev, χρειάζονται και τα δύο. Ή απλώς αναζητήστε στο Google.

Απαιτούμενο λογισμικό

Τα πακέτα με τα γράμματα mm στο τέλος της περιγραφής είναι πακέτα για προγράμματα C++. Η λίστα είναι για bmpx, αλλά θα λειτουργήσει για σχεδόν οποιοδήποτε πρόγραμμα GTK2/Gnome. Επομένως, εάν δεν μπορείτε να μεταγλωττίσετε, τότε δείτε αυτήν τη λίστα και ελέγξτε τι έχετε εγκαταστήσει.

Συντάσσω:χρόνος εκτέλεσης:
Χlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2,4-1c2a
Ξέφωτοlibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-αποθήκευση1
Χαμίνιlibgamin-devlibgamin0
νέοlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Ειδοποίηση εκκίνησηςlibstartup-notification0-devlibstartup-notification0
Ωθησηlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
Gstreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

τερματικό και εντολές

Πόσο συχνά έχετε συναντήσει το γεγονός ότι η απαιτούμενη έκδοση της εφαρμογής για την αρχιτεκτονική σας απλά δεν βρίσκεται στη διανομή του Ubuntu, αλλά αυτό το πρόγραμμα είναι διαθέσιμο στον ιστότοπο των προγραμματιστών με τη μορφή πηγαίου κώδικα στο αρχείο .tar.gz. Νομίζω ότι αυτή η κατάσταση είναι γνωστή σε πολλούς, αλλά δεν συνέχισαν όλοι να αναζητούν τρόπους επίλυσης αυτού του ζητήματος και απλώς αναζήτησαν ένα άλλο ανάλογο της εφαρμογής ή μια ελαφρώς παλαιότερη έκδοση και συνέχισαν να εργάζονται.

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

  • Για κατασκευές εφαρμογώνφυσικά, θα χρειαστούμε εργαλεία προγραμματιστή, στην περίπτωσή μας πρόκειται για μεταγλωττιστή και άλλα προγράμματα που το συνοδεύουν, η κύρια εργασία, φυσικά, θα γίνει από το βοηθητικό πρόγραμμα make, και γραμμή εντολών(τερματικό) θα είναι σαν την κουζίνα μας όπου θα είμαστε προετοιμασία / συναρμολόγηση / εγκατάστασητην εφαρμογή μας από την πηγή. Στο Linux, το τερματικό είναι διαθέσιμο από προεπιλογή, για τη διευκόλυνσή σας, φυσικά, μπορείτε να εγκαταστήσετε οποιοδήποτε άλλο πιο λειτουργικό που έχετε συνηθίσει, για παράδειγμα, χρησιμοποιώ το Guake, υπάρχουν πολλές δυνατότητες σε σύγκριση με το τυπικό, όπου είναι εύκολο να διαμορφώσετε εντολές αντιγραφής και επικόλλησης ή οποιοδήποτε κείμενο χρησιμοποιώντας CTRL+C, CTRL+V και πολλά άλλα, γεγονός που κάνει την εργασία με την κονσόλα πιο άνετη.
  • 1. Από πού να ξεκινήσετε κατά τη δημιουργία εφαρμογών από την πηγή, είναι φυσικά η λήψη της εφαρμογής σε ένα αρχείο tar.gz ή tar.bz2, στην περίπτωσή μου, για παράδειγμα, την εφαρμογή Gimp 2.9.2, αν και στην περίπτωσή μας το αρχείο δεν είναι σε μορφή tar.gz, και tar.bz2, δεν έχει διαφορά, λήψη, μετά κάντε δεξί κλικποντίκια στο αρχείο - Εξαγωγή εδώ.

Αυτό είναι ίσως το πρώτο στάδιο που ολοκληρώθηκε, τι κάνουμε μετά; Και στη συνέχεια εκκινούμε το τερματικό και πηγαίνουμε στον μη συσκευασμένο φάκελο με τα αρχεία:

Cd /home/linux/Downloads/gimp-2.9.2/ls

  • 2. Πριν ξεκινήσετε την προετοιμασία των πηγών για συναρμολόγηση, θα σας συμβούλευα να ανοίξετε και να εξοικειωθείτε με το αρχείο INSTALL, θα βρείτε πολλές χρήσιμες πληροφορίες στο δεδομένο αρχείοπεριγράφει πώς να εγκαταστήσετε την εφαρμογή, ποιες εντολές πρέπει να εκτελέσετε και πολλά άλλα ενδιαφέροντα. Τώρα σας συμβουλεύω να εγκαταστήσετε ένα πρόσθετο πακέτο που ονομάζεται auto-apt, το οποίο κάνει πολλές εργασίες ρουτίνας για εσάς.
sudo apt-get install auto-apt

Τι σημαίνει να κάνεις πολλές δουλειές ρουτίνας για μένα, ρωτάς αν εκτέλεση διαμόρφωσης πηγής εφαρμογήςμε το πρόθεμα αυτού του πακέτου, για παράδειγμα, στη μορφή:

Auto-apt -y εκτέλεση ./configure

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

./Διαμορφώστε

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

  • 3. Στην πραγματική δουλειά δεν είναι όλα τόσο ομαλά, ίσως σε μια περίπτωση όλα να πάνε καλά και το στάδιο της προετοιμασίας των πηγών για συναρμολόγησηθα περάσει χωρίς σφάλματα, σε άλλες περιπτώσεις, και αυτά είναι πιθανώς η πλειοψηφία, θα συναντήσετε διάφορα είδη σφαλμάτων, για παράδειγμα, λείπει αυτό ή εκείνο το πακέτο για περαιτέρω προετοιμασία του πηγαίου κώδικα. Στις περισσότερες περιπτώσεις γράφεται το όνομα του πακέτου το οποίο λείπει.

Προσπαθούμε να εγκαταστήσουμε το πακέτο που λείπει με την εντολή:

sudo apt-get install package_name

Σε περίπτωση που το πακέτο δεν βρεθεί κατά την εκτέλεση της παραπάνω εντολής, πολύ συχνά με βοηθάει ο παρακάτω συνδυασμός, αναζητώντας πακέτα που μας λείπουν στην κρυφή μνήμη:

apt-cache αναζήτηση πακέτου_όνομα

  • Μετά την εκτέλεση αυτής της εντολής, μπορείτε και θα βρείτε ένα κατάλληλο πακέτο, συχνά συμβαίνει να μην βρείτε ένα κατάλληλο πακέτο, αλλά υπάρχει ένα ακριβές αντίγραφο του πακέτου αλλά με πρόθεμα devδηλαδή ένα πακέτο της φόρμας πακέτο_όνομα-devκαι μπορείτε να το χρησιμοποιήσετε για να ικανοποιήσετε εξαρτήσεις.
  • 4. Μετά την επιτυχή ολοκλήρωση της διαμόρφωσης των πηγών για τη συναρμολόγηση, συνιστάται η εγκατάσταση του πακέτου check-installπου διευκολύνει τη δημιουργία ενός πακέτου εφαρμογής για τη διανομή σας.
sudo apt-get install checkinstall

Εγκαταστήσατε το πακέτο και, στη συνέχεια, μπορείτε να εκτελέσετε την εντολή:

Checkinstall -D

  • Χαρακτηριστικό -ΡΕθα δημιουργήσει πακέτο deb, χαρακτηριστικό θα δημιουργήσει ένα πακέτο rpm που χρησιμοποιείται σε διανομές Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE, επιπλέον υπάρχει επίσης ένα χαρακτηριστικό -ΜΙΚΡΟτο οποίο θα δημιουργήσει ένα πακέτο που χρησιμοποιείται από το Slackware.

Στην περίπτωσή μου, τρέχω το Ubuntu και έτρεξα την εντολή με -Δ ιδιότητα, τότε η εφαρμογή θα συγκεντρωθεί σε ένα έτοιμο πακέτο μορφής Deb, θα χρειαστούμε ορισμένα διευκρινιστικά δεδομένα, για παράδειγμα, όπως προσθήκη περιγραφής στο πακέτο, αφού το συντάσσετε και, κατά συνέπεια, η περιγραφή είναι εντελώς καθαρή και , σαν να λέμε, απαιτείται μια σύντομη αναφορά από εσάς, για τι είδους εφαρμογή είναι αυτή; Στην περίπτωσή μου, όπως τσέκαρα, συμπληρώνονται αυτόματα και τα παρακάτω πεδία:

1 - Περίληψη: [ EOF ] 2 - Όνομα: [ gimp ] 3 - Έκδοση: [ 2.9.2 ] 4 - Έκδοση: [ 1 ] 5 - Άδεια χρήσης: [ GPL ] 6 - Ομάδα: [ checkinstall ] 7 - Αρχιτεκτονική: [ i386 ] 8 - Τοποθεσία πηγής: [ gimp-2.9.2 ] 9 - Εναλλακτική τοποθεσία πηγής: 10 - Απαιτείται: 11 - Παρέχει: [ gimp ] 12 - Συγκρούσεις: 13 - Αντικαθιστά:

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

Το είχα εγκαταστήσει προηγουμένως χωρίς να συναρμολογήσω το πακέτο, εκτελώντας τις εντολές:

Κάντε την εγκατάσταση

Εάν θέλετε να καταργήσετε μια εγκατεστημένη εφαρμογή, θα πρέπει να εκτελέσετε την εντολή:

Κάντε απεγκατάσταση

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

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

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

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