Homebrew instalar versão específica da fórmula?

2197

Como instalo uma versão específica de uma fórmula no homebrew? Por exemplo, postgresql-8.4.4 em vez do 9.0 mais recente.

Gravis
fonte
2
postgresqlé estranho porque tinha versões separadas no Homebrew a certa altura, algo como bashpoderia ser um exemplo melhor, pois passou de 4.x para 5.x com o mesmo nome de fórmula. Veja stackoverflow.com/a/55764594/3794873
dragon788
Instruções de reinstalação de fórmula de uso geral .
Josh Habdas 31/07/19
2
Eu li todas as respostas. É 2020 e não há nenhuma maneira fácil ou comando oficial para fazer isso
oluckyman 10/04

Respostas:

2556

TLDR: brew install [email protected] Veja a resposta abaixo para mais detalhes.


* ( Reeditei minha resposta para fornecer um fluxo de trabalho mais completo para a instalação / uso de versões mais antigas de software com o homebrew. Sinta-se à vontade para adicionar uma observação, se você achou a versão antiga melhor. )

Vamos começar com o caso mais simples:

1) Verifique se a versão já está instalada (mas não ativada)

Quando o homebrew instala uma nova fórmula, ela a coloca em um diretório com versão como /usr/local/Cellar/postgresql/9.3.1. Somente links simbólicos para esta pasta são instalados globalmente. Em princípio, isso facilita bastante a alternância entre duas versões instaladas. (*)

Se você usa o homebrew há mais tempo e nunca removeu versões mais antigas (usando, por exemplo brew cleanup), é provável que algumas versões mais antigas do seu programa ainda estejam por aí. Se você deseja simplesmente ativar a versão anterior, brew switché a maneira mais fácil de fazer isso.

Verifique com brew info postgresql(ou brew switch postgresql <TAB>) se a versão mais antiga está instalada:

$ 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

Vemos que algumas versões mais antigas já estão instaladas. Podemos ativá-lo usando 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

Vamos verificar o que está ativado:

$ 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

Observe que a estrela *mudou para a versão recém-ativada

(*) Observe que brew switchsó funciona enquanto todas as dependências da versão mais antiga ainda estiverem disponíveis. Em alguns casos, uma reconstrução da versão mais antiga pode ser necessária. Portanto, o uso brew switché principalmente útil quando se deseja alternar entre duas versões não muito distantes.

2) Verifique se a versão está disponível como toque

Especialmente para projetos de software maiores, é muito provável que exista uma demanda alta o suficiente para várias versões principais (potencialmente incompatíveis com a API) de um determinado software. Em março de 2012, o Homebrew 0.9 fornece um mecanismo para isso: brew tap& o repositório de versões do homebrew .

Esse repositório de versões pode incluir backports de versões mais antigas para várias fórmulas. (Principalmente apenas os grandes e famosos, mas é claro que eles também terão várias fórmulas para o postgresql.)

brew search postgresql mostrará onde procurar:

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

Podemos simplesmente instalá-lo digitando

$ 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
# …

Observe que isso tocou automaticamente na homebrew/versionstorneira. (Verifique com brew tap, remova com brew untap homebrew/versions.) O seguinte teria sido equivalente:

$ brew tap homebrew/versions
$ brew install postgresql8

Desde que as fórmulas da versão com portabilidade permaneçam atualizadas, essa abordagem é provavelmente a melhor maneira de lidar com software mais antigo.

3) Tente alguma fórmula do passado

As abordagens a seguir estão listadas principalmente para fins de integridade. Ambos tentam ressuscitar alguma fórmula de mortos-vivos do repositório de preparação. Devido a alterações nas dependências, alterações na API na especificação da fórmula ou simplesmente uma alteração no URL de download, as coisas podem ou não funcionar.

Como o diretório inteiro da fórmula é um repositório git, é possível instalar versões específicas usando comandos simples do git. No entanto, precisamos encontrar uma maneira de chegar a um commit onde a versão antiga estava disponível.

a) tempos históricos

Entre agosto de 2011 e outubro de 2014 , o homebrew teve um brew versionscomando, que cuspiu todas as versões disponíveis com seus respectivos hashes SHA. Em outubro de 2014, você deve fazer um brew tap homebrew/boneyardantes de poder usá-lo. Como o nome da torneira sugere, você provavelmente deve fazer isso apenas como último recurso.

Por exemplo

$ 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

Como você pode ver, desaconselha o uso. O Homebrew mostra todas as versões que pode encontrar com sua heurística interna e mostra uma maneira de recuperar as fórmulas antigas. Vamos tentar.

# 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

Agora que a versão mais antiga do postgresql está instalada, podemos reinstalar a fórmula mais recente para manter nosso repositório limpo:

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

brew switch é seu amigo para mudar entre o antigo e o novo.

b) tempos pré-históricos

Para necessidades especiais, também podemos tentar nossa própria escavação através do repo homebrew.

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -Sprocura por todas as confirmações nas quais a sequência '8.4.4'foi adicionada ou removida no arquivo Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. Temos dois commits como resultado.

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

Obviamente, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422é nesse commit que estamos interessados. Como esse commit é bastante antigo, tentaremos fazer o downgrade da instalação completa do homebrew (dessa forma, a API da fórmula é mais ou menos garantida como válida):

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

Você pode pular o último comando para manter a referência em seu repositório git.

Uma observação: ao fazer o check-out do commit mais antigo, você rebaixa temporariamente a instalação do homebrew. Portanto, você deve ter cuidado, pois alguns comandos no homebrew podem ser diferentes da versão mais recente.

4) Escreva manualmente uma fórmula

Não é muito difícil e você pode enviá-lo para o seu próprio repositório. Costumava ser Homebrew-Versions , mas agora é descontinuado.

A.) Bônus: Fixação

Se você deseja manter uma determinada versão do, digamos postgresql, por perto e impedir que ela seja atualizada ao executar o brew update; brew upgradeprocedimento natural , é possível fixar uma fórmula:

$ brew pin postgresql

As fórmulas fixadas são listadas /usr/local/Library/PinnedKegs/e, quando você deseja introduzir as alterações e atualizações mais recentes, pode desassociá- las novamente:

$ brew unpin postgresql
Debilski
fonte
18
Você também pode verificar a fórmula usando git checkout fa992 -- Library/Formula/postgresql.rb. Quando terminar, você pode desfazer as alterações na fórmula usando git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
Mipadi
18
Nota: em uma nova instalação do Homebrew, pode ser necessário brew updateestabelecer seu repositório Git.
Bluu 28/05
557
Isso é ridiculamente difícil.
Dogweather
30
A partir de hoje, o diretório correto para executar os comandos manuais no repositório é cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, então você pode usar git checkout 4cce79d -- Formula/go.rbe HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin
12
homebrew / versões é preterido
Ez Victor
775

Fluxo de trabalho simples

Agora que o Homebrew / versões foi descontinuado, o Homebrew / core suporta várias versões de fórmulas com um novo formato de nomenclatura.

Para instalar uma versão específica, por exemplo, postgresql 9.5, basta executar:

$ brew install [email protected]

Para listar as versões disponíveis, faça uma pesquisa com @:

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
Bijan
fonte
8
Parece o mais simples, mas quando eu copio e colo, entendo fatal: Not a git repository (or any of the parent directories): .git. Eu só cdpara o diretório em vez (sem o FORMULANAME.rb), em seguida, fazer ogit checkout 120938
Ramon Tayag
8
@RamonTayag, tive o mesmo problema. Certifique-se de cd /usr/localprimeiro.
Gdb
13
Eu achei que você precisava de uma etapa 3.5:brew unlink FORMULANAME
Intentss 24/02
37
brew versions <formula>não é mais suportado.
ejoubaud
4
@ dem7w2, você pode criar os links simbólicos com brew link --force [email protected]. Se você já possui uma versão mais recente instalada e deseja que a versão mais antiga seja o padrão, também precisará de uma --overwrite.
Ryan
457

Agora existe uma maneira muito mais fácil de instalar uma versão mais antiga de uma fórmula que você instalou anteriormente. Basta usar

brew switch [formula] [version]

Por exemplo, alterno regularmente entre o Node.js 0.4.12 e 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Como brew switchapenas altera os links simbólicos, é muito rápido. Consulte a documentação adicional no Homebrew Wiki em External Commands .

Trevor Burnham
fonte
2
Eu tentei isso e foi bem-sucedido com a mensagem "33 links criados para /usr/local/Cellar/node/0.4.7", mas quando executo o nó posteriormente, ele falha com a mensagem "-bash: / usr / local / bin / node: não existe esse arquivo ou diretório ". Alguma idéia do que poderia ter dado errado? Nota: baixei o 0.4.7 manualmente e o coloquei no diretório da adega, porque não sei baixar nada, exceto a versão mais recente do nó usando o brew.
Soroush Hakami
6
Espero que você saiba que existe algo chamado 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal
40
Eu confio na versão do pacote já sendo instalada. Se estiver faltando a versão, você ainda precisará aplicar a resposta selecionada.
Nic Strong
1
Para a versão do nó mgmt em particular, o nvm é uma solução melhor, imho.
precisa saber é o seguinte
5
@ NicStrong De fato, brew switchdepende da versão procurada já estar instalada. Infelizmente, porém, a resposta atualmente aceita é incrivelmente inútil, complicada e desatualizada. Não são melhores respostas abaixo que são muito mais útil.
GDP2
250

Atualização: 15/1/2015

  • Encontre o histórico de consolidação do software e versão desejados. por exemplo, preciso mudar da janela de encaixe versão 1.4.1 para a 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Veja o arquivo com este botão: insira a descrição da imagem aqui
  • Clique no botão Raw: Item da lista
  • Copie o URL (docker.rb url neste exemplo) da barra de endereço
  • brew install <url>(pode ser necessário brew unlinkprimeiro, por exemplo brew unlink docker)
  • brew switch docker 1.3.3
  • Voltar à janela de encaixe 1.4.1 brew switch docker 1.4.1

Desta essência

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
Vishal
fonte
46
Esta é a única coisa que funcionou para mim. É muito tolo que um gerenciador de pacotes exija muito tempo para instalar apenas uma versão anterior. Talvez eu seja mimado pelo RVM e pelo bundler do ruby, mas esse processo realmente precisa ser simplificado e abstraído.
Poetmountain #
3
Quando tentei ir para uma versão anterior do Ansible, tive que desvincular a fórmula antes de instalar a versão anterior, conforme indicado. Então antes de fazer brew install <url>, brew unlink <formulaname>. Caso contrário, essa é a maneira mais simples e concisa (até agora) de mudar para uma versão específica de uma fórmula.
precisa saber é
Você Rawaperta o botão em qual arquivo ?!
Iulian Onofrei 01/11
1
Funciona, mas ocasionalmente você precisa fazer o download do arquivo .rb bruto e alterar a soma de verificação para evitar que o Homebrew se queixe de incompatibilidade de SHA. O GitHub parece ter uma grande porção de repositórios pesquisados ​​em 2017, e suas somas de verificação foram alteradas. (Na verdade, causou muita confusão na minha equipe quando Bazel começou a falhar em descasamentos de hash em julho passado)
Chang Qian
6
Eu encontrei o endereço facilmentebrew log <formula>
kangkyu
128

Seguindo a sugestão do @ halfcube, isso funciona muito bem:

  1. Encontre a biblioteca que você está procurando em https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Clique nele: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Clique no botão "history" para ver os commits antigos: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Clique no que você deseja: "postgresql: atualize a versão para 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Clique no link "bruto": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
Lance Pollard
fonte
8
Esta é a maneira mais fácil de instalar a versão necessária de um pacote se é indisponível no núcleo repo comopackage@version
avy
7
Se você não pode usar a interface da web, pode clonar o repositório e fazê-lo localmente: use git log master -- Formula/PACKAGENAME.rbpara obter o histórico de confirmação, confira a confirmação correta e execute brew install Formula/PACKAGENAME.rbpara instalá-lo.
chipbuster
7
Eu acho que você precisa brew unlinkantes brew installde outra versão.
studgeek
Quem é esse mxcl?
PJSCopeland
1
Eu faço isso, brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbmas recebo o erro, provavelmente devido ao @sinal: Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.Alguma idéia?
msciwoj
109

Eu descobri uma solução alternativa melhor do que as outras soluções complexas.

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

Isso fará o download e instalará o PostgreSQL 8.4.8


Encontrei esta solução começando a seguir as etapas de pesquisa no repositório e um comentário no repositório.

Depois de um pouco de pesquisa, descobrimos que alguém tem uma coleção de formulários raros para preparar.


Se você está procurando pelo MySQL 5.1.x, experimente.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
kylewelsby
fonte
1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbparecia falhar com erros de sintaxe.
Brian Armstrong
6
@BrianArmstrong Você está se referindo a uma versão do arquivo em formato html, enquanto precisa de uma versão bruta .
Nikita Volkov
Vá para github.com/Homebrew/homebrew/commits/master/Library/Formula/… , escolha sua versão, procure o código, não processado - use este URL.
jpillora
1
Não se esqueça do rawURL
Faber
9
homebrew-versionsse foi e tudo o que está no coreagora, para o caso geral é: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITpode ser encontrado em github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland
78

Você pode usar a estratégia de identificar a fórmula e um commit específico no histórico da fórmula que corresponda à versão do pacote que você deseja instalar.

  1. Vá para https://github.com/Homebrew/homebrew-core

  2. Pressione tno teclado para ativar o localizador de arquivos.

  3. Identifique uma fórmula que pareça mais relevante, talvez Formula/mysql.rb:, levando você a um local de arquivo no forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Veja o histórico de revisões clicando no Historybotão, localizado em https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Se você está interessado no MySQL 5.7.10, convém clicar na última revisão anterior ao 5.7.11, que navega para um commit do GitHub:

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

NOTA: Talvez você precise visualizar o histórico de consolidação no seu console, por sugestão do GitHub, se o histórico de consolidação não carregar no seu navegador. Substitua o SHA de confirmação acima no URL se você estiver interessado em vê-lo no GitHub. Como alternativa, pule para a etapa 7 abaixo.

  1. Clique no botão "Visualizar" para visualizar a fonte do arquivo mysql.rb após a aplicação do commit.

  2. Em seguida, clique no botão "Raw" para visualizar a fonte bruta.

  3. Copie o URL. Como alternativa, crie você mesmo o URL com o mysql.rbnome do arquivo para identificar sua fórmula e a versão específica dessa fórmula (identificada pelo SHA de confirmação no URL abaixo).

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

  4. Instale-o com $ brew install [URL from step 7]

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

NOTA: Esta resposta foi atualizada para explicar a remoção do site braumeister.org. O mesmo princípio se aplica, o braumeister simplesmente forneceu uma maneira amigável para iniciantes de navegar pelas versões das fórmulas.

sealocal
fonte
13
Infelizmente, isso está muito abaixo na lista de respostas, mas é a melhor solução. É isso que eu uso, exceto que, em vez de usar o braumeister, basta ir para a página Homebrew GitHub da fórmula que eu quero (por exemplo, para gcc, vá para github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) e depois percorro o "Histórico" do arquivo até chegar à versão desejada.
Guy Kogus
3
Esta foi definitivamente a melhor solução no meu caso - a instalação de uma versão mais antiga do Watchman que não exigem Xcode 8.1
Zachary Keener
3
Esta é realmente a maneira mais fácil de instalar uma versão mais antiga. Ótima resposta
Martin
4
Isso funcionou para mim, mas eu tive que preparar primeiro o link do software.
Brett Wagner
3
Essa foi a solução mais simples para mim. Isso deve ser mais alto, pois a resposta aceita está desatualizada.
Tim W
35

A maioria das outras respostas está obsoleta agora. Infelizmente, o Homebrew ainda não possui uma maneira embutida de instalar uma versão desatualizada, a menos que essa versão exista como uma fórmula separada (por exemplo python@2, [email protected] …).

Felizmente, para outras fórmulas, há uma maneira muito mais fácil do que a bagunça complicada que costumava ser necessária. Aqui estão as instruções completas:

  1. Procure a versão correta nos logs:

    brew log formula
    # Scroll down/up with j/k or the arrow keys
    # or use eg. /4\.4\.23 to search a specific version
    
    # This syntax only works on pre-2.0 Homebrew versions
    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    Isso mostrará uma lista de hashes de confirmação. Pegue um que seja apropriado (principalmente deve ser bastante óbvio, e geralmente é o mais recente (ou seja, o topo).

  2. Encontre o URL no qual a fórmula reside no repositório upstream:

    brew info ‹formula› | grep ^From:
    
  3. Corrija o URL:

    1. Substitua github.comporraw.githubusercontent.com
    2. Substitua blob/masterpelo hash de confirmação encontrado na primeira etapa.
  4. Instale a versão desejada substituindo masterno URL encontrado anteriormente pelo hash de confirmação, por exemplo:

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(A última etapa pode exigir a execução brew unlink ‹formula›antes.)


Se você copiou um hash de confirmação que deseja usar, pode usar algo como este exemplo para instalar essa versão, substituindo o valor e bashpelo seu hash de confirmação e pela fórmula desejada.

BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install

Este exemplo está instalando o bash 4.4.23 em vez do bash 5, embora se você brew upgradeexecutasse um depois, o bash 5 seria instalado por cima, a menos que você o executasse primeiro brew pin bash. Em vez disso, para tornar isso mais suave SEM fixar, primeiro instale a versão mais recente com brew install bash, em seguida brew unlink bash, instale a versão mais antiga desejada pelo script acima e use-a brew switch bash 4.4.23para configurar os links simbólicos para a versão mais antiga. Agora brew upgrade, isso não deve afetar sua versão do Bash. Você pode brew switch bashobter uma lista das versões disponíveis para mudar.


Alternativa usando um toque somente local personalizado

Outra maneira de alcançar o mesmo objetivo parece ser:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install [email protected]
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Isso cria um formula@versiontoque personalizado que você pode instalar conforme o exemplo acima. A desvantagem é que você provavelmente ainda precisa brew unlink bashe, brew link [email protected]em seguida , para usar sua versão específica do Bash ou qualquer outra fórmula.

Konrad Rudolph
fonte
1
Aparentemente, eles mudaram a sintaxe para brew logque quaisquer opções -Fou extras --grepestivessem falhando para mim.
dragon788
1
Inferno sangrento, Homebrew 2 quebrou completamente brew log. Não posso me incomodar em escrever uma nova versão agora, porque isso requer a análise correta da mensagem de log do git ou a execução git logdireta ou alternativa no repositório correspondente. E o changelog nem parece mencionar essa mudança. Além de irritante.
Konrad Rudolph
A menos que eles aceitem que a mudança de comportamento seja um erro, parece que External Commandpode ser necessário operar dentro da estrutura brewpara recuperar esse tipo de git logfiltragem. docs.brew.sh/External-Commands
dragon788
Este foi o único local em que consegui encontrar o brew extractuso correto , obrigado!
Dognotdog
Eu sugeriria que o local0 personalizado toque apenas na primeira parte da sua resposta. Parece realmente a melhor solução geral.
Studgeek
29

Acabei de usar o Homebrew para voltar ao Maven 2.2.1 desde o simples brew install mavenMaven 3.0.3 instalado.

Primeiro você tem que deixar o maven dir lá

$ brew unlink maven

Use o comando brew tap

$ brew tap homebrew / versões
Clonando em '/ usr / local / Library / Taps / homebrew-versões' ...
remote: Contando objetos: 590, pronto.
remote: Compactando objetos: 100% (265/265), concluído.
remoto: Total 590 (delta 362), reutilizado 549 (delta 325)
Recebendo objetos: 100% (590/590), 117,49 KiB | 79 KiB / s, pronto.
Resolução de deltas: 100% (362/362), concluído.
Fórmula 50 virada

Agora você pode instalar a fórmula do maven2:

$ brew install maven2
==> Fazendo download de 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 arquivos, 3.1M, criados em 6 segundos
$ mvn --version
Apache Maven 2.2.1 (r801777; 06-08-2009 12: 16: 01-0700)
Versão Java: 1.6.0_37
Página inicial do Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Código do idioma padrão: en_US, codificação da plataforma: MacRoman
Nome do SO: "mac os x" versão: "10.7.4" arch: "x86_64" Família: "mac" 

Editar: Você também pode brew switch maven 2.2.1mudar para uma versão diferente.

Edit: O projeto Apache Maven reorganizou seu repositório. Atualizou esta resposta para responder a essa alteração.

Cameron Goodale
fonte
Isso foi muito útil. Observe que a base do apache reorganizou os binários do maven em diretórios específicos da versão (1,2,3); portanto, você precisará editar o maven.rb para o 2.2.1 e talvez outros para se ajustar à nova estrutura. Por exemplo, o binário para 2.2.1 estava localizado em: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Observe o "maven-2 / 2.2.1 /" no URL.
Charles Forcey
@CharlesForcey Você está certo sobre o repo repo maven sendo reorganizado. Vou atualizar a resposta para usar a torneira de fermentação para usar a fórmula maven2 mais antiga. Obrigado pelo comentário.
Cameron Goodale
21

Com base no fluxo de trabalho descrito por @tschundeee e pela atualização 1 de @ Debilski , automatizei o procedimento e adicionei a limpeza neste script .

Faça o download , coloque no seu caminho e brewv <formula_name> <wanted_version>. Para o OP específico, seria:

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

:)

MattiSG
fonte
4
simplesmente fantástico. por que isso não está na fermentação?
Adriano
3
Não foi mais encontrado :(
D-32
18

Uma resposta atualizada, uma vez que adiciona ao que o @ lance-pollard já postou como resposta de trabalho.

Como instalar uma versão específica de uma fórmula (a fórmula usada neste exemplo é terraform):

  1. Encontre seu arquivo de fórmula, por exemplo: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Obtenha a versão de confirmação do histórico do github em https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb ou git log master -- Formula/terraform.rbse você clonou o repositório localmente.
  3. Obtenha o URL git bruto com a versão de confirmação de sua fórmula: se o link da fórmula no github.com for https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , seu URL bruto be: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Instale-o com: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Miguel Reyes
fonte
Para obter o URL git bruto na etapa 3, basta clicar no botão "Raw" e copiar o URL para o qual o navegador o leva.
Brian Topping
15

Método oficial (a julgar pela resposta a https://github.com/Homebrew/brew/issues/6028 )

Infelizmente, o Homebrew ainda não possui uma maneira embutida óbvia de instalar uma versão mais antiga.

Felizmente, para a maioria das fórmulas, há uma maneira muito mais fácil do que a bagunça complicada que costumava ser necessária. Aqui estão as instruções completas usando bashcomo exemplo:

brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install [email protected]
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Isso cria o formula@versiontoque personalizado que você pode instalar conforme o exemplo acima. Uma observação importante é que você provavelmente precisará brew unlink bashse instalou a versão padrão / mais recente da fórmula e, brew link [email protected]em seguida , para usar sua versão específica do Bash (ou qualquer outra fórmula em que você tenha a versão mais recente e mais antiga instalada).

Uma desvantagem potencial desse método é que você não pode alternar facilmente entre as versões porque, de acordo com brewa fórmula, é uma "fórmula diferente".

Se você quiser usar brew switch $FORMULA $VERSION, use o próximo método.


Método com script (recomendado)

Este exemplo mostra a instalação do bash antigo 4.4.23, um exemplo útil, pois a bashfórmula atualmente instala o bash 5.

  • Primeiro instale a versão mais recente da fórmula com brew install bash
  • então brew unlink bash
  • instale a versão mais antiga que você deseja, de acordo com os trechos abaixo
  • finalmente use brew switch bash 4.4.23para configurar os links simbólicos para sua versão

Se você executasse um brew upgradeapós instalar uma versão mais antiga sem instalar a última mais recente, a última seria instalada prejudicando sua versão mais antiga, a menos que você fosse executado primeiro brew pin bash.

As etapas aqui evitam a fixação porque é fácil esquecer e você pode fixar em uma versão que se torne insegura no futuro (consulte Shellshock / etc). Com essa configuração, o a brew upgradenão deve afetar sua versão do Bash e você sempre pode executar brew switch bashpara obter uma lista das versões disponíveis para a qual alternar.

Copie, cole e edite as exportlinhas do snippet de código abaixo para atualizar com a versão desejada e o nome da fórmula, copie e cole o restante como está e ele usará essas variáveis ​​para fazer a mágica.

# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME

Quando tiver certeza de que a versão existe na fórmula, você pode usar o seguinte:

# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
 --format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')

Depois de exportar o hash de confirmação que você deseja usar, você pode usá-lo para instalar a versão do pacote.

brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install

Siga as instruções na fórmula de saída para colocá-lo em seu PATH ou configurá-lo como seu shell padrão.

dragon788
fonte
12

Na versão mais recente do homebrew (0.9.5 até o momento da redação deste documento), haverá uma receita específica para a versão do barril de homebrew que você deseja instalar. Exemplo:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Então é só fazer o brew install mongodb26normal.

No caso que você já tinha instalado a versão mais recente, certifique-se de desvincular a versão mais recente e vincular a versão desejada: brew unlink mongodb && brew link mongodb26.

Alex Sharp
fonte
Embora isso possa responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
30615 Erik
1
@ Erik Obrigado, corrigido.
Alex Sharp
11

O problema homebrew/versionsé que alguém precisa ter essa versão específica do software listada no repositório para que você possa usá-lo. Além disso, como brew versionsnão é mais suportado, é necessária outra solução. Para soluções que indicam o uso brew switch, isso funcionará apenas se você não tiver feito isso, brew cleanuppois a versão precisa existir no seu computador.

Ocorreu um problema ao querer instalar uma versão antiga específica da docker-machinequal não estava listada homebrew/versions. Resolvi isso usando o abaixo, que também deve funcionar para qualquer software instalado em modo brew. O exemplo abaixo será usado docker-machinecomo o pacote que eu quero fazer o downgrade da versão 0.5.0 para a 0.4.1.

  1. Vá para o Formuladiretório do homebrew .
    Você pode determinar isso executando brew info [any package name]. Por exemplo, brew info docker-machineme dá uma linha que me mostra um caminho - /usr/local/Cellar/docker-machine/0.5.0. Isso me diz que, na minha máquina, o homebrew está instalado em /usr/locale meu Formula diretório está localizado por padrão em/usr/local/Library/Formula

  2. Localize o arquivo de fórmula específico (.rb) para o seu pacote. Como eu quero fazer o downgrade docker-machine, posso ver um docker-machine.rbarquivo.

  3. Obtenha o histórico da versão para este arquivo de fórmula . Enter git log docker-machine.rb. Isso listará o histórico completo de consolidação desse arquivo. Você verá uma saída como esta:

    ...Mais 

    confirmar 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Autor: BrewTestBot 
    Data: Qui 5 de novembro 16:14:18 2015 +0000

        docker-machine: atualize a garrafa 0.5.0.

    confirmar 8f615708184884e501bf5c16482c95eff6aea637
    Autor: Vincent Lesierse 
    Data: Terça-feira, 27 de outubro 22:25:30 2015 +0100

        docker-machine 0.5.0

        Docker-machine atualizada para 0.5.0

        Fecha # 45403.

        Assinado por: Dominyk Tiller 

    confirmar 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Autor: BrewTestBot 
    Data: segunda-feira, 21 de setembro 14:04:04 2015 +0100

        docker-machine: atualização 0.4.1 garrafa.

    confirmar 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Autor: BrewTestBot 
    Data: Dom 16 de agosto 09:05:56 2015 +0100

        docker-machine: atualização 0.4.1 garrafa.

    ...Mais

A parte complicada é encontrar a confirmação mais recente para a versão específica que você deseja. No exemplo acima, eu posso dizer a última versão 0.4.1 foi cometido com este cometer tag: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. As confirmações acima deste ponto começam a usar a versão 0.5.0 (as entradas do log do git são listadas da data mais recente à mais antiga).

  1. Obtenha uma versão anterior do arquivo de fórmula. Usando a marca de confirmação da etapa 3 (você pode usar os 6 primeiros caracteres), é possível obter uma versão mais antiga do arquivo de fórmula usando o seguinte:

    git checkout 5970e1 docker-machine.rb

  2. Desinstale sua versão atual do pacote. Basta executar os comandos normais de preparação para desinstalar a versão atual do seu pacote.
    Ex.brew uninstall docker-machine

  3. Instale a versão anterior do pacote Agora, você pode simplesmente executar o comando normal de instalação de preparação e ele instalará a fórmula que você fez no checkout. Ex.brew install docker-machine

Você pode precisar vincular novamente usando o brew link docker-machinese necessário.

Se a qualquer momento você desejar reverter para a versão mais recente de um pacote específico, entre no diretório Fórmula e emita os seguintes comandos no arquivo de fórmula (.rb)

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

Então você pode brew uninstall docker-machinee brew install docker-machinepara obter a versão mais recente e mantê-lo assim daqui para frente.

rchawdry
fonte
1
Escreve muito detalhadamente @rchawdry, obrigado. BTW: para encontrar o commit que corresponde à versão que você deseja, adicione rapidamente o parâmetro --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek
Para mim, o caminho era/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi 24/10
Não consegui encontrar o histórico de versões suficiente para a cairofermentação dessa maneira. A resposta do @ sealocal mostrou mais, por algum motivo.
akauppi
11

É 2020 e a maioria das respostas está desatualizada

Minha situação: postgresqlfoi atualizado de 11 para 12 acidentalmente. Eu quero manter 11.

  1. Pare o banco de dados:
brew services stop postgresql
  1. Instale o Postgres 11:
brew install postgresql@11
  1. Habilitá-lo:
brew link postgresql@11 --force
  1. (Opcional) Renomeie o diretório de dados do banco de dados de postgrespara postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Inicie o banco de dados:
brew services start postgresql@11

Se houver algum erro, verifique /usr/local/var/log/[email protected](observe o @ 11).

Max Malysh
fonte
6
Isso funciona apenas no caso especial do postgresql @ 11, que é explicitamente mantido pelos mantenedores do Homebrew para ajudar nas migrações do armazenamento de dados (executadas com o comando especial brew postgresql-upgrade-database). Esta resposta não é útil para quase nenhuma outra fórmula.
Adam Wróbel 28/01
@ AdamWróbel Decidi que é bom responder à pergunta original sobre o Postgres . brew postgresql-upgrade-databaseé, bem, para atualizações . Minha resposta é sobre o uso de uma versão mais antiga do Postgres. Simplesmente alternar binários não funcionará.
Max Malysh 03/02
Usuários do NodeJS que não estão usando um gerenciador de versões, por exemplo nvm, FYI, tive sorte em usar esta técnica para versões mais antigas do LTS. Pelo menos no momento da redação, as v10 e v12 devem estar disponíveis, por exemplo, brew install node@12 formulae.brew.sh/formula/node
paws
9

Instale uma versão antiga do pacote de preparação (exemplo do Flyway 4.2.0)

Encontre seu homebrew local git dir ou clone Homebrew / homebrew-core localmente

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

OU

git clone [email protected]:Homebrew/homebrew-core.git

Listar todas as versões disponíveis

git log master -- Formula/flyway.rb

Copie o ID de confirmação para a versão desejada e instale-o diretamente

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb

ffghfgh
fonte
por que não simplesmente executar a brew install Formula/flyway.rbpartir do homebrew-corediretório? ele trabalhou para mim sem o uso de raw.github..endereço
kangkyu
9

Eu tentei a maioria das soluções aqui e elas estão desatualizadas. Eu tive que combinar algumas idéias daqui com meu próprio trabalho. Como resultado, criei um script para me ajudar a fazer o trabalho pesado que você pode encontrar aqui

Uso:

brewv.sh formula_name desired_version
descongelar
fonte
6

isso poderia ser feito com muita facilidade para a última versão do brew.

brew tap homebrew/versions
brew install subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8  # for postgresql 8 (which you ask)
Maxim Kholyavkin
fonte
2
... se alguém se preocupasse em criar uma receita com versão para esse pacote.
Clacke
6

Nenhuma delas realmente funcionou para o meu caso (Python), então adicionarei meus 2 centavos:

cd `brew --prefix`
git log Library/Formula/python.rb

A saída é assim:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <[email protected]>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <[email protected]>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <[email protected]>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <[email protected]>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <[email protected]>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

Quero versão 2.7.11para que meu hash seja cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(ou cf5da05abreviado). Em seguida, verifico essa versão e instalo a fórmula python:

git checkout cf5da05
brew install python

Finalmente, limpe:

git checkout master
tenfishsticks
fonte
2
A vida muda e essa resposta é mais relevante. Não se esqueça sobre HOMEBREW_NO_AUTO_UPDATEe ler github.com/Homebrew/brew/issues/1188
Wile E.
Os comandos corretos são cd --prefix cerveja /Homebrewegit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei
Mas mesmo isso não funciona porque /Library/Tapsé ignorado.
Iulian Onofrei 15/01/19
Não se esqueça HOMEBREW_NO_AUTO_UPDATE. Sim, não se esqueça sobre a coisa que você precisa até depois você descobre que você precisar. xD
Josh Habdas
Que tal este? HOMEBREW_NO_INSTALL_CLEANUPIsso não é algo que você precisa se lembrar?
Kangkyu
6

Se você não consegue encontrar sua versão brew search <formula>, também pode tentar revisar os logs de confirmação da sua fórmula para encontrar a versão desejada:

Aqui está um exemplo para instalar uma versão mais antiga do nginx via brew:

A partir daí, podemos instalar 1.6.3com o sha e o git urit bruto:

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb

lfender6445
fonte
3

Atualmente, as maneiras antigas de instalar versões de fórmula específicas foram descontinuadas. Então parece que temos que usar brew edit [formula]. Por exemplo, digamos que queremos instalar uma 62.1versão do icu4c(necessário, por exemplo, para postgresql 10.5). Então você teria que

> brew edit icu4c
# drops you to editor

Aqui você teria que alterar as url, versione sha256(talvez também mirror) as 62.1seqüências correspondentes .

url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"

então corra brew reinstall icu4cpara finalmente baixar a 62.1versão.

Emil Rehhnberg
fonte
como obter o sha256 ? no meu casohttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo
1

Atualize na linha Library / Formula / postgresql.rb 8 para

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

E MD5 na linha 9 para

fcc3daaf2292fa6bf1185ec45e512db6

Salvar e sair.

brew install postgres
initdb /usr/local/var/postgres

Agora, nesse estágio, você pode enfrentar o postgresql could not create shared memory segmenterro, para solucionar essa atualização da /etc/sysctl.confseguinte maneira:

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

Tente initdb /usr/local/var/postgresnovamente e deve funcionar sem problemas.

Para executar o postgresql no início

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

Espero que ajude :)

mmrs151
fonte
1

Acabei de copiar uma versão mais antiga do elasticsearch para o /usr/local/Cellar/elasticsearchdiretório

$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3

É isso aí. Talvez seja útil para qualquer um.

Thaars
fonte
Um truque feio. Mas, sim, funcionou para mim também, enquanto eu tentava pesquisar e instalar uma versão mais antiga do consul! Felicidades.
precisa saber é o seguinte
0

Decidi, contra meu melhor julgamento, criar uma fórmula para o Maven 3.1.1, que homebrew/versionsnão possuía. Para fazer isso:

  1. Eu bifurquei homebrew/versionsno github.
  2. Liguei $(brew --prefix)/Library/Tapspara a cópia de trabalho local do meu garfo. Eu ligo para isso my-homebrew/versions.
  3. Eu testei especificando a fórmula como my-homebrew/versions/<formula>.
  4. Enviei uma solicitação de recebimento para homebrew/versionsa minha nova fórmula.

Yay.

JB Rainsberger
fonte
0

Para versões que não estão atualmente nas fórmulas de fermentação padrão, você pode facilmente criar seu próprio toque com a ferramenta em https://github.com/buildtools-version-taps/homebrew-versions-tap-tool

Lutzifer
fonte
Esta ferramenta parece estar integrada ao Homebrew agora? Você pode brew tap-new user/repoe então brew extract --version='Major.minor' FORMULA user/repoe então brew install [email protected].
precisa saber é o seguinte
0

Criei uma ferramenta para facilitar o processo prescrito nesta resposta .

Para encontrar um pacote pkgcom versão a.b.c, execute:

$ brew-install-specific [email protected]

Isso listará confirmações na pkgfórmula de homebrew que mencionam a versão fornecida junto com os URLs do GitHub.

Matching versions:
1. pkg: update a.b.c bottle.
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>

Select index: 

Verifique a confirmação da URL especificada e insira o índice da confirmação selecionada.

Select index: 2
Run:
  brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb

Copie e execute o comando fornecido para instalar.

divs1210
fonte