Vraag Homebrew installeer specifieke versie van formule?


Hoe installeer ik een specifieke versie van een formule in homebrew? Bijvoorbeeld postgresql-8.4.4 in plaats van de nieuwste 9.0.


1709
2017-10-21 12:58


oorsprong


antwoorden:


(Ik heb mijn antwoord opnieuw bewerkt om een ​​meer grondige workflow te geven voor het installeren / gebruiken van oudere softwareversies met homebrew. Voel je vrij om een ​​notitie toe te voegen als je de oude versie beter hebt gevonden.)

Laten we beginnen met de eenvoudigste zaak:

1) Controleer of de versie al is geïnstalleerd (maar niet is geactiveerd)

Wanneer homebrew een nieuwe formule installeert, wordt deze in een versie met een map gezet zoals /usr/local/Cellar/postgresql/9.3.1. Alleen symbolische koppelingen naar deze map worden vervolgens globaal geïnstalleerd. In principe maakt dit het vrij eenvoudig om te schakelen tussen twee geïnstalleerde versies. (*)

Als u homebrew langer hebt gebruikt en nooit oudere versies hebt verwijderd (bijvoorbeeld met behulp van brew cleanup), is de kans groot dat een oudere versie van je programma er nog steeds is. Als je gewoon die vorige versie wilt activeren, brew switch is de gemakkelijkste manier om dit te doen.

Controleer met brew info postgresql (of brew switch postgresql <TAB>) of de oudere versie is geïnstalleerd:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

We zien dat een oudere versie al is geïnstalleerd. We kunnen het activeren met behulp van brew switch:

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

Laten we nogmaals controleren wat is geactiveerd:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Merk op dat de ster * is verplaatst naar de nieuw geactiveerde versie

(*) Houd er rekening mee dat brew switch werkt alleen zolang alle afhankelijkheden van de oudere versie nog steeds aanwezig zijn. In sommige gevallen kan een herbouw van de oudere versie noodzakelijk worden. Daarom, met behulp van brew switch is vooral handig als men wil wisselen tussen twee versies die niet te ver uit elkaar liggen.

2) Controleer of de versie beschikbaar is als een tik

Vooral voor grotere softwareprojecten is het zeer waarschijnlijk dat er voldoende vraag is naar verschillende (mogelijk API onverenigbare) hoofdversies van een bepaald stuk software. Vanaf maart 2012 Homebrew 0.9 biedt hiervoor een mechanisme: brew tap & de homebrew versies repository.

Dat versies repository mogelijk backports van oudere versies voor verschillende formules bevat. (Meestal alleen de grote en beroemde, maar natuurlijk hebben ze ook verschillende formules voor postgresql.)

brew search postgresql zal je laten zien waar je moet kijken:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

We kunnen het eenvoudig installeren door te typen

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

Merk op dat dit automatisch gebeurt tikte de homebrew/versions kraan. (Neem contact op met brew tap, verwijderen met brew untap homebrew/versions.) Het volgende zou gelijkwaardig zijn geweest:

$ brew tap homebrew/versions
$ brew install postgresql8

Zolang de formules van de backported-versie up-to-date blijven, is deze aanpak waarschijnlijk de beste manier om met oudere software om te gaan.

3) Probeer een formule uit het verleden

De volgende benaderingen worden meestal vermeld voor de volledigheid. Beiden proberen een of andere ondode formule uit de brouwerijrepository te herrijzen. Vanwege veranderde afhankelijkheden, API-wijzigingen in de specs van de formule of gewoon een wijziging in de download-URL, kunnen dingen wel of niet werken.

Omdat de hele formulemap een git-repository is, kan men specifieke versies installeren met behulp van gewone git-commando's. We moeten echter een manier vinden om tot een commit te komen waar de oude versie beschikbaar was.

a) historische tijden

Tussen Augustus 2011 en oktober 2014, homebrew had een brew versions opdracht, die alle beschikbare versies uitspuwt met hun respectieve SHA-hashes. Vanaf oktober 2014 moet je een brew tap homebrew/boneyard voordat je het kunt gebruiken. Zoals de naam van de kraan doet vermoeden, zou u dit waarschijnlijk alleen als laatste redmiddel moeten doen.

Bijv.

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

Zoals je kunt zien, adviseert het om het niet te gebruiken. Homebrew spuugt alle versies uit die het kan vinden met zijn interne heuristiek en toont je een manier om de oude formules op te halen. Laten we het proberen.

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

Nu de oudere postgresql-versie is geïnstalleerd, kunnen we de nieuwste formule opnieuw installeren om onze repository schoon te houden:

$ git checkout -- Library/Formula/postgresql.rb

brew switch is je vriend om te schakelen tussen het oude en het nieuwe.

b) prehistorische tijden

Voor speciale behoeften, kunnen we ook proberen onze eigen graven via de homebrew repo.

$ git log -S'8.4.4' -- Library/Formula/postgresql.rb

git log -S zoekt naar alle commits waarin de string voorkomt '8.4.4' is toegevoegd of verwijderd in het bestand Library/Formula/postgresql.rb. We krijgen twee commits als resultaat.

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

Duidelijk, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 is de commit waarin we geïnteresseerd zijn. Aangezien deze commit vrij oud is, zullen we proberen de volledige homebrew-installatie te downgraden (op die manier is de formule-API min of meer gegarandeerd geldig):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

Je kunt de laatste opdracht overslaan om de referentie in je git-repository te behouden.

Eén opmerking: bij het uitchecken van de oudere commit, downgradet je tijdelijk je homebrew installatie. Dus wees voorzichtig, aangezien sommige commando's in homebrew anders kunnen zijn dan de meest recente versie.

4) Schrijf handmatig een formule

Het is niet te moeilijk en je kunt het dan uploaden naar Homebrew-versies.

A.) Bonus: vastzetten

Als u een bepaalde versie van, zeg postgresql, wilt behouden en wilt voorkomen dat deze wordt bijgewerkt wanneer u het natuurlijke doet brew update; brew upgrade procedure, dat kan pin een formule:

$ brew pin postgresql

Vastgezette formules worden vermeld in /usr/local/Library/PinnedKegs/ en als je de nieuwste wijzigingen en updates wilt binnenhalen, kun je dat losspelden het opnieuw:

$ brew unpin postgresql

2117
2017-11-11 20:04



Eenvoudige workflow

Nu Homebrew / versies is verouderd, ondersteunt Homebrew / Core meerdere versies van formules met een nieuw naamgevingsformaat.

Om een ​​specifieke versie te installeren, b.v. postgresql 9.5 gewoon uitvoeren:

$ brew install postgresql@9.5

Om een ​​lijst te maken met de beschikbare versies, voert u een zoekopdracht uit met @:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1      postgresql@9.4        postgresql@9.5        postgresql@9.6

632
2018-03-22 23:29



Er is nu een veel eenvoudigere manier om een ​​oudere versie van een formule te installeren die u eerder had geïnstalleerd. Gewoon gebruiken

brew switch [formula] [version]

Ik wissel bijvoorbeeld regelmatig tussen Node.js 0.4.12 en 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Sinds brew switch verandert gewoon de symlinks, het is erg snel. Zie verdere documentatie over de Homebrew Wiki onder Externe opdrachten.


425
2017-12-14 16:33



Update: 15-1-2015

  • Zoek de commit-geschiedenis van de gewenste software en versie. bijv. Ik moet overschakelen van docker-versie 1.4.1 naar 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Bekijk het bestand met deze knop: enter image description here 
  • Klik op de knop Raw: List item
  • Kopieer de URL (docker.rb-URL in dit voorbeeld) van adresbalk
  • brew install <url> (moet waarschijnlijk brew unlink eerst, b.v. brew unlink docker)
  • brew switch docker 1.3.3
  • Schakel terug naar koppelaar 1.4.1 brew switch docker 1.4.1

Van deze kern

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb

183
2017-07-19 23:42



Ik heb een betere alternatieve oplossing ontdekt dan de andere complexe oplossingen.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

Hiermee wordt PostgreSQL 8.4.8 gedownload en geïnstalleerd


Ik vond deze oplossing door de stappen te volgen van het doorzoeken van de repo en een commentaar in de repo.

Na een beetje onderzoek bleek dat iemand een verzameling zeldzame formules heeft om mee te brouwen.


Als je op zoek bent naar MySQL 5.1.x, probeer dit eens.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

92
2017-09-19 11:55



In de lijn van de suggestie van @ halfcube werkt dit heel goed:

  1. Zoek de bibliotheek waar je naar op zoek bent https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Klik Het: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Klik op de knop "geschiedenis" om naar oude commits te kijken: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Klik op degene die je wilt: "postgresql: update versie naar 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Klik op de "onbewerkte" link: https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

50
2017-10-16 22:12



U kunt de strategie gebruiken voor het identificeren van de formule en een bepaalde commit in de geschiedenis van de formule die overeenkomt met de versie van het pakket dat u wilt installeren.

  1. Ga naar https://github.com/Homebrew/homebrew-core

  2. druk op t op je toetsenbord om de bestandszoeker te activeren.

  3. Identificeer een formule die er het meest relevant uit ziet, misschien: Formula/mysql.rb, u naar een forumla-bestandlocatie brengen: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

  4. Kijk naar de revisiegeschiedenis door op de knop te klikken History knop, die zich bevindt op https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb. Als u geïnteresseerd bent in MySQL 5.7.10, wilt u misschien klikken op de laatste revisie vóór 5.7.11, die naar een GitHub-commit navigeert:

    https://github.com/Homebrew/homebrew/commit/c77882756a832ac1d87e7396c114158e5619016c#Library/Formula/mysql.rb

OPMERKING: Mogelijk moet u de commit-geschiedenis in uw console bekijken volgens de suggestie van GitHub als de commit-geschiedenis niet in uw browser wordt geladen. Vervang de SHA die hierboven is vastgelegd in de URL als u die commit op GitHub wilt zien. U kunt ook naar stap 7 hieronder gaan.

  1. Klik op de knop "Bekijken" om de bron voor het mysql.rb-bestand te bekijken nadat de commit is toegepast.

  2. Klik vervolgens op de knop "Raw" om de onbewerkte bron te bekijken.

  3. Kopieer de URL. Je kunt ook de URL zelf samenstellen met de mysql.rb bestandsnaam om uw formule en de specifieke versie van die formule te identificeren (geïdentificeerd door de SHA-opdracht in de onderstaande URL).

    https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb

  4. Installeer het met $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb
    

OPMERKING: dit antwoord is bijgewerkt om rekening te houden met de verwijdering van de braumeister.org-website. Hetzelfde principe is van toepassing, braumeister heeft eenvoudigweg een beginnersvriendelijke manier geboden om door formuleversies te navigeren.


49
2018-02-24 05:38



Ik heb Homebrew net gebruikt om terug te gaan naar Maven 2.2.1 sinds het simpele brew install maven geïnstalleerd Maven 3.0.3.

Eerst moet je de maven dir daar zo verlaten

$ brew ontkoppel maven

Gebruik de brew tap-opdracht

$ brew tap homebrew / versions
Klonen in '/ usr / local / Library / Taps / homebrew-versions' ...
remote: Objecten tellen: 590, klaar.
afstandsbediening: objecten comprimeren: 100% (265/265), gereed.
remote: Total 590 (delta 362), hergebruikt 549 (delta 325)
Ontvangende objecten: 100% (590/590), 117.49 KiB | 79 KiB / s, klaar.
Het oplossen van delta's: 100% (362/362), klaar.
Tapped 50-formule

Nu kunt u de maven2-formule installeren:

$ brew installeer maven2
==> Downloaden van http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz
################################################## ###################### 100.0%
/usr/local/Cellar/maven2/2.2.1: 10 bestanden, 3.1M, ingebouwd in 6 seconden
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Java-versie: 1.6.0_37
Java-startpagina: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Standaard locale: en_US, platform-codering: MacRoman
Besturingssysteemnaam: "mac os x" versie: "10.7.4" arch: "x86_64" Familie: "mac"

Bewerk: Je kunt ook gewoon brew switch maven 2.2.1 om over te schakelen naar een andere versie.

Bewerk: Het Apache Maven-project reorganiseerde hun repo. Dit antwoord is bijgewerkt om rekening te houden met deze wijziging.


27
2018-02-12 20:35



Gebaseerd op de workflow beschreven door @tschundeee en @ Debilski's update 1, Ik automatiseerde de procedure en voegde schoonmaak toe in dit script.

Download het, zet het op je pad en brewv <formula_name> <wanted_version>. Voor het specifieke OP zou het zijn:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)


21
2017-07-09 14:06



Op de nieuwste versie van homebrew (0.9.5 vanaf dit moment) zal er een specifiek recept zijn voor de versie van het homebrew-vat dat u wilt installeren. Voorbeeld:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Doe het dan gewoon brew install mongodb26 zoals normaal.

In het geval dat u de nieuwste versie al had geïnstalleerd, ontkoppel dan de nieuwste versie en link de gewenste versie: brew unlink mongodb && brew link mongodb26.


11
2018-04-30 22:01