Daugiau
Homebrew įdiegti konkrečią formulės versiją?
Kaip įdiegti konkrečią formulės versiją į "Homebrew"? Pavyzdžiui, postgresql-8.4.4 vietoj naujausios 9.0.
2061
3
TLDR:
brw install postgresql@8.4.4
Daugiau informacijos rasite atsakyme žemiau.(Pakeičiau savo atsakymą, kad išsamiau aprašyčiau senesnių programinės įrangos versijų diegimo ir naudojimo su "Homebrew" darbo eigą. Jei senoji versija jums pasirodė geresnė, galite pridėti pastabą.*) Pradėkime nuo paprasčiausio atvejo:
Patikrinkite, ar versija jau įdiegta (bet neaktyvuota)
Kai "Homebrew" įdiegia naują formulę, ji patalpinama į versijų katalogą, pavyzdžiui,
/usr/local/Cellar/postgresql/9.3.1
. Tada globaliai įdiegiamos tik simbolinės nuorodos į šį aplanką. Iš esmės taip gana lengva perjungti dvi įdiegtas versijas. (*) Jei "Homebrew" naudojate ilgiau ir niekada nepašalinote senesnių versijų (pavyzdžiui, naudodamibrew cleanup
), yra tikimybė, kad kokia nors senesnė jūsų programos versija vis dar gali būti išlikusi. Jei norite paprasčiausiai įjungti ankstesnę versiją,brew switch
yra paprasčiausias būdas tai padaryti. Naudodamibrew info postgresql
(arbabrew switch postgresql
) patikrinkite, ar įdiegta senesnė versija:Matome, kad jau įdiegta tam tikra senesnė versija. Galime ją įjungti naudodami
brew switch
:Dar kartą patikrinkime, kas aktyvuota:
Atkreipkite dėmesį, kad žvaigždutė
*
persikėlė į naujai aktyvuotą versiją () Atkreipkite dėmesį, kadbrew switch
veikia tik tol, kol yra visos senesnės versijos priklausomybės. Kai kuriais atvejais gali prireikti iš naujo atkurti senesnę versiją. Todėlbrew switch
dažniausiai naudojamas tada, kai norima perjungti dvi ne per daug nutolusias versijas.* 2) Patikrinkite, ar versija prieinama kaip tapYpač didžiuosiuose programinės įrangos projektuose labai tikėtina, kad yra pakankamai didelė paklausa kelioms (galimai API nesuderinamoms) pagrindinėms tam tikros programinės įrangos versijoms. Nuo 2012 m. kovo mėnesio Homebrew 0.9 pateikiamas toks mechanizmas: Homebrew versijos saugykla. Į tą versijų saugyklą gali būti įtrauktos kelių formulių senesnių versijų atgalinės versijos. (Dažniausiai tik didelės ir garsios, bet, žinoma, jose bus ir kelios postgresql formulės.)
brew search postgresql
parodys, kur ieškoti:Ją galime tiesiog įdiegti įvesdami
Atkreipkite dėmesį, kad tai automatiškai įtraukė
homebrew/versions
čiaupą. (Patikrinkite subrew tap
, pašalinkite subrew untap homebrew/versions
.) Toliau pateiktas tekstas būtų lygiavertis:Kol palaikomų versijų formulės išlieka atnaujintos, šis metodas tikriausiai yra geriausias būdas dirbti su senesne programine įranga. 3) Išbandykite kokią nors formulę iš praeities
Toliau išvardyti metodai pateikiami daugiausia dėl išsamumo. Abiem atvejais bandoma prikelti kokią nors nemirtingą formulę iš alaus saugyklos. Dėl pasikeitusių priklausomybių, formulės specifikacijoje esančių API pakeitimų ar tiesiog pasikeitusio atsisiuntimo URL viskas gali veikti arba neveikti. Kadangi visas formulės katalogas yra "git" saugykla, konkrečias versijas galima įdiegti naudojant paprastas "git" komandas. Tačiau mums reikia rasti būdą, kaip patekti į reviziją, kurioje buvo galima naudoti senąją versiją. a) istoriniai laikai Nuo 2011 m. rugpjūčio mėn. iki 2014 m. spalio mėn. "Homebrew" turėjo komandą
brew versions
, kuri išpylė visas turimas versijas su jų atitinkamais SHA hash'ais. Nuo 2014 m. spalio mėn. prieš naudodami šią komandą turite atliktibrew tap homebrew/boneyard
. Kaip rodo čiaupo pavadinimas, tikriausiai turėtumėte tai daryti tik kraštutiniu atveju. Pvz.Kaip matote, jame patariama jo nenaudoti. Homebrew išpila visas versijas, kurias gali rasti, naudodama savo vidinę euristiką, ir parodo būdą, kaip gauti senąsias formules. Pabandykime tai padaryti.
Dabar, kai įdiegta senesnė postgresql versija, galime iš naujo įdiegti naujausią formulę, kad mūsų saugykla būtų švari:
brew switch
yra jūsų draugas, kad galėtumėte pakeisti senąją versiją į naująją. b) priešistoriniai laikai Esant ypatingiems poreikiams, taip pat galime pabandyti patys perkasti homebrew repozitoriumą.git log -S
ieško visų pakeitimų, kuriuose eilutė'8.4.4'
buvo pridėta arba pašalinta faileLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Dėl to gauname du pakeitimus.Akivaizdu, kad
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
yra mus dominantis pakeitimas. Kadangi šis pakeitimas yra gana senas, pabandysime atnaujinti visą "Homebrew" įdiegimą (taip bus daugiau ar mažiau užtikrinta, kad formulės API bus galiojanti):Galite praleisti paskutinę komandą, kad išsaugotumėte nuorodą savo git saugykloje. Pastaba: kai tikrinate senesnį įsipareigojimą, laikinai sumažinate savo "Homebrew" diegimo lygį. Todėl turėtumėte būti atsargūs, nes kai kurios "Homebrew" komandos gali skirtis nuo naujausios versijos. 4) Rankiniu būdu parašykite formulę
[Tai nėra labai sunku] (https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap) ir tada galite ją įkelti į savo saugyklą. Anksčiau buvo Homebrew-Versions, bet dabar to nebėra. A.) Premija: Prisegimas
Jei norite išlaikyti tam tikrą, tarkime, postgresql, versiją ir sustabdyti jos atnaujinimą, kai atliekate natūralią
brew update; brew upgrade
procedūrą, galite prisegti formulę:Prisegtos formulės yra išvardytos
/usr/local/Library/PinnedKegs/
, o kai norėsite įvesti naujausius pakeitimus ir atnaujinimus, galėsite jas vėl atjungti:Aš atradau geresnį alternatyvų sprendimą nei kiti sudėtingi sprendimai.
Tai parsisiųs ir įdiegs "PostgreSQL 8.4.8
Radau šį sprendimą, pradėdamas sekti paieškos žingsnius ir komentarą repo .
Po nedidelio tyrimo nustatė, kad kažkas turi retų formuliarų kolekciją, su kuria galima užvirinti.
Jei ieškote "MySQL 5.1.x", pabandykite tai.
Atnaujinti Library/Formula/postgresql.rb 8 eilutę į
Ir MD5 9 eilutėje į
Išsaugokite ir išeikite.
Šiame etape galite susidurti su
postgresql negalėjo sukurti bendros atminties segmento
klaida, kad ją apeitumėte, atnaujinkite/etc/sysctl.conf
taip:Išbandykite
initdb /usr/local/var/postgres
dar kartą, ir viskas turėtų vykti sklandžiai.Kaip paleisti postgresql paleidimo metu
Tikiuosi, kad tai padės :)