Περισσότερα
Το Homebrew εγκαθιστά συγκεκριμένη έκδοση της φόρμουλας;
Πώς μπορώ να εγκαταστήσω μια συγκεκριμένη έκδοση μιας φόρμουλας στο homebrew; Για παράδειγμα, postgresql-8.4.4 αντί για την τελευταία έκδοση 9.0.
2061
3
TLDR:
brew install postgresql@8.4.4
Ανατρέξτε στην απάντηση παρακάτω για περισσότερες λεπτομέρειες.(Έχω ξαναδουλέψει την απάντησή μου για να δώσω μια πιο λεπτομερή ροή εργασίας για την εγκατάσταση/χρήση παλαιότερων εκδόσεων λογισμικού με το homebrew. Μη διστάσετε να προσθέσετε μια σημείωση αν βρήκατε την παλιά έκδοση καλύτερη.*) Ας ξεκινήσουμε με την απλούστερη περίπτωση:
Ελέγξτε, αν η έκδοση είναι ήδη εγκατεστημένη (αλλά όχι ενεργοποιημένη)
Όταν το homebrew εγκαθιστά έναν νέο τύπο, τον τοποθετεί σε έναν κατάλογο με έκδοση όπως
/usr/local/Cellar/postgresql/9.3.1
. Μόνο οι συμβολικοί σύνδεσμοι προς αυτόν το φάκελο εγκαθίστανται στη συνέχεια συνολικά. Κατ' αρχήν, αυτό καθιστά αρκετά εύκολη την εναλλαγή μεταξύ δύο εγκατεστημένων εκδόσεων. (*) Αν χρησιμοποιείτε το homebrew για μεγαλύτερο χρονικό διάστημα και δεν έχετε αφαιρέσει ποτέ τις παλαιότερες εκδόσεις (χρησιμοποιώντας, για παράδειγμα, τοbrew cleanup
), υπάρχει πιθανότητα να υπάρχει ακόμα κάποια παλαιότερη έκδοση του προγράμματός σας. Αν θέλετε απλά να ενεργοποιήσετε αυτή την προηγούμενη έκδοση, τοbrew switch
είναι ο ευκολότερος τρόπος για να το κάνετε αυτό. Ελέγξτε με τοbrew info postgresql
(ήbrew switch postgresql
) αν η παλαιότερη έκδοση είναι εγκατεστημένη:Βλέπουμε ότι κάποια παλαιότερη έκδοση είναι ήδη εγκατεστημένη. Μπορούμε να την ενεργοποιήσουμε χρησιμοποιώντας το
brew switch
:Ας ελέγξουμε δύο φορές τι είναι ενεργοποιημένο:
Παρατηρήστε ότι το αστέρι
*
έχει μετακινηθεί στην πρόσφατα ενεργοποιημένη έκδοση () Παρακαλούμε σημειώστε ότι τοbrew switch
λειτουργεί μόνο εφόσον όλες οι εξαρτήσεις της παλαιότερης έκδοσης εξακολουθούν να υπάρχουν. Σε ορισμένες περιπτώσεις, μπορεί να καταστεί απαραίτητη η αναδημιουργία της παλαιότερης έκδοσης. Επομένως, η χρήση τουbrew switch
είναι κυρίως χρήσιμη όταν κάποιος θέλει να μεταβεί μεταξύ δύο εκδόσεων που δεν απέχουν πολύ μεταξύ τους.* 2) Ελέγξτε, αν η έκδοση είναι διαθέσιμη ως tapΕιδικά για μεγαλύτερα έργα λογισμικού, είναι πολύ πιθανό να υπάρχει αρκετά μεγάλη ζήτηση για αρκετές (ενδεχομένως ασύμβατες με το API) κύριες εκδόσεις ενός συγκεκριμένου λογισμικού. Από τον Μάρτιο του 2012, το Homebrew 0.9 παρέχει έναν μηχανισμό για το σκοπό αυτό: Το αποθετήριο homebrew versions. Αυτό το αποθετήριο εκδόσεων μπορεί να περιλαμβάνει backports παλαιότερων εκδόσεων για διάφορους τύπους. (Κυρίως μόνο τις μεγάλες και διάσημες, αλλά φυσικά θα έχουν και αρκετές φόρμουλες για την postgresql). Το
brew search postgresql
θα σας δείξει πού να ψάξετε:Μπορούμε απλά να την εγκαταστήσουμε πληκτρολογώντας
Σημειώστε ότι αυτό έχει επιτεθεί αυτόματα στη βρύση
homebrew/versions
. (Ελέγξτε μεbrew tap
, αφαιρέστε μεbrew untap homebrew/versions
.) Τα παρακάτω θα ήταν ισοδύναμα:Εφόσον οι τύποι των backported εκδόσεων παραμένουν ενημερωμένοι, αυτή η προσέγγιση είναι πιθανώς ο καλύτερος τρόπος για να αντιμετωπίσετε παλαιότερο λογισμικό. 3) Δοκιμάστε κάποιο τύπο από το παρελθόν
Οι ακόλουθες προσεγγίσεις παρατίθενται κυρίως για λόγους πληρότητας. Και οι δύο προσπαθούν να αναστήσουν κάποιον απέθαντο τύπο από το αποθετήριο brew. Λόγω αλλαγμένων εξαρτήσεων, αλλαγών στο API των προδιαγραφών της φόρμουλας ή απλώς μιας αλλαγής στη διεύθυνση URL λήψης, τα πράγματα μπορεί να λειτουργήσουν ή να μην λειτουργήσουν. Δεδομένου ότι ολόκληρος ο κατάλογος formula είναι ένα git repository, μπορεί κανείς να εγκαταστήσει συγκεκριμένες εκδόσεις χρησιμοποιώντας απλές εντολές git. Ωστόσο, πρέπει να βρούμε έναν τρόπο να φτάσουμε σε μια δέσμευση όπου η παλιά έκδοση ήταν διαθέσιμη. α) ιστορικοί χρόνοι Μεταξύ Αυγούστου 2011 και Οκτωβρίου 2014, το homebrew διέθετε την εντολή
brew versions
, η οποία έβγαζε όλες τις διαθέσιμες εκδόσεις με τους αντίστοιχους κατακερματισμούς SHA. Από τον Οκτώβριο του 2014, θα πρέπει να κάνετε την εντολήbrew tap homebrew/boneyard
για να μπορέσετε να τη χρησιμοποιήσετε. Όπως υποδηλώνει και το όνομα του tap, μάλλον θα πρέπει να το κάνετε αυτό μόνο ως έσχατη λύση. Π.χ.Όπως μπορείτε να δείτε, σας συμβουλεύει να μην τη χρησιμοποιήσετε. Το Homebrew φτύνει όλες τις εκδόσεις που μπορεί να βρει με την εσωτερική ευρετική του και σας δείχνει έναν τρόπο να ανακτήσετε τους παλιούς τύπους. Ας τον δοκιμάσουμε.
Τώρα που η παλαιότερη έκδοση της postgresql είναι εγκατεστημένη, μπορούμε να επανεγκαταστήσουμε τον πιο πρόσφατο τύπο, προκειμένου να διατηρήσουμε το αποθετήριο μας καθαρό:
Το
brew switch
είναι ο φίλος σας για να αλλάξετε μεταξύ της παλιάς και της νέας έκδοσης. β) προϊστορικές εποχές Για ειδικές ανάγκες, μπορούμε επίσης να δοκιμάσουμε το δικό μας ψάξιμο μέσα από το homebrew repo.Το
git log -S
αναζητά όλα τα commits στα οποία η συμβολοσειρά'8.4.4'
είτε προστέθηκε είτε αφαιρέθηκε στο αρχείοLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Ως αποτέλεσμα έχουμε δύο δεσμεύσεις.Προφανώς, το
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
είναι το commit που μας ενδιαφέρει. Καθώς αυτό το commit είναι αρκετά παλιό, θα προσπαθήσουμε να υποβαθμίσουμε την πλήρη εγκατάσταση του homebrew (με αυτόν τον τρόπο, το formula API είναι λίγο πολύ εγγυημένο ότι θα είναι έγκυρο):Μπορείτε να παραλείψετε την τελευταία εντολή για να διατηρήσετε την αναφορά στο git αποθετήριο σας. Μια σημείωση: Όταν ελέγχετε την παλαιότερη δέσμευση, υποβαθμίζετε προσωρινά την εγκατάσταση του homebrew σας. Έτσι, θα πρέπει να είστε προσεκτικοί, καθώς ορισμένες εντολές στο homebrew μπορεί να είναι διαφορετικές από την πιο πρόσφατη έκδοση. 4) Γράψτε χειροκίνητα έναν τύπο
Δεν είναι πολύ δύσκολο και στη συνέχεια μπορείτε να τον ανεβάσετε στο δικό σας αποθετήριο. Παλαιότερα υπήρχε το Homebrew-Versions, αλλά αυτό έχει πλέον καταργηθεί. A.) Bonus: Pinning
Αν θέλετε να κρατήσετε μια συγκεκριμένη έκδοση, ας πούμε της postgresql, και να σταματήσετε να την ενημερώνετε όταν κάνετε τη φυσική διαδικασία
brew update; brew upgrade
, μπορείτε να pin έναν τύπο:Οι καρφιτσωμένοι τύποι παρατίθενται στο
/usr/local/Library/PinnedKegs/
και μόλις θελήσετε να φέρετε τις τελευταίες αλλαγές και ενημερώσεις, μπορείτε να τον ξεκαρφιτσώσετε ξανά:Ανακάλυψα μια καλύτερη εναλλακτική λύση από τις άλλες πολύπλοκες λύσεις.
Αυτό θα κατεβάσει και θα εγκαταστήσει την PostgreSQL 8.4.8
Βρήκα αυτή τη λύση αρχίζοντας να ακολουθώ τα βήματα της αναζήτησης στο repo και ένα comment στο repo .
Μετά από μια μικρή έρευνα διαπίστωσα ότι κάποιος έχει μια συλλογή από σπάνια σκευάσματα για να παρασκευάσει με.
Αν ψάχνετε για MySQL 5.1.x, δοκιμάστε αυτό.
Ενημέρωση στη γραμμή 8 του Library/Formula/postgresql.rb σε
Και MD5 στη γραμμή 9 σε
Αποθήκευση και έξοδος.
Τώρα σε αυτό το στάδιο μπορεί να αντιμετωπίσετε το σφάλμα
postgresql could not create shared memory segment
, για να το παρακάμψετε ενημερώστε το/etc/sysctl.conf
ως εξής:Δοκιμάστε ξανά το
initdb /usr/local/var/postgres
και θα πρέπει να τρέξει ομαλά.Για να εκτελέσετε την postgresql κατά την εκκίνηση
Ελπίζω αυτό να βοηθάει :)