Homebrew установить конкретную версию формулы?

Как мне установить конкретную версию формулы на домашнее пивоварение? Например, postgresql-8.4.4 вместо последней версии 9.0.


person Gravis    schedule 21.10.2010    source источник
comment
postgresql - это странно, потому что в какой-то момент у него были отдельные версии в Homebrew, что-то вроде bash может быть лучшим примером, поскольку оно перешло с 4.x на 5.x в рамках одного и того же имени формулы. См. stackoverflow.com/a/55764594/3794873   -  person dragon788    schedule 19.04.2019
comment
Общие инструкции по переустановке формулы общего назначения.   -  person Josh Habdas    schedule 31.07.2019
comment
Прочитал все ответы. Сейчас 2020, и нет простого способа или официальной команды сделать это   -  person oluckyman    schedule 10.04.2020
comment
@oluckyman, нет простого пути, потому что это непростая проблема. Либо Homebrew поддерживает старые версии (= больше нагрузки), либо нет, и вам придется делать это самостоятельно.   -  person bfontaine    schedule 01.07.2020
comment
Я бы предложил использовать образы Docker PostgreSQL для разных версий. Довольно просто для тестов с пустой базой данных и довольно просто, если вы хотите сохранить данные.   -  person Ondra Žižka    schedule 08.02.2021


Ответы (32)


TL; DR: brew install [email protected] Дополнительные сведения см. в ответе ниже.


* (Я отредактировал свой ответ, чтобы дать более подробный рабочий процесс для установки / использования старых версий программного обеспечения с помощью homebrew. Не стесняйтесь добавить примечание, если вы нашли старую версию лучше.)

Начнем с простейшего случая:

1) Проверить, установлена ​​ли уже версия (но не активирована)

Когда homebrew устанавливает новую формулу, она помещает ее в каталог с поддержкой версий, например /usr/local/Cellar/postgresql/9.3.1. После этого глобально устанавливаются только символические ссылки на эту папку. В принципе, это позволяет довольно легко переключаться между двумя установленными версиями. (*)

Если вы использовали homebrew дольше и никогда не удаляли старые версии (например, brew cleanup), скорее всего, какая-то более старая версия вашей программы все еще существует. Если вы хотите просто активировать предыдущую версию, brew switch - это самый простой способ сделать это.

Проверьте с помощью brew info postgresql (или brew switch postgresql <TAB>), установлена ​​ли более старая версия:

$ 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

Мы видим, что уже установлена ​​какая-то более старая версия. Мы можем активировать его, используя 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

Давайте еще раз проверим, что активировано:

$ 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

Обратите внимание, что звездочка * переместилась в только что активированную версию.

(*) Обратите внимание, что brew switch работает только до тех пор, пока все зависимости старой версии все еще присутствуют. В некоторых случаях может потребоваться пересборка старой версии. Поэтому использование brew switch в основном полезно, когда нужно переключаться между двумя версиями, расположенными не слишком далеко друг от друга.

2) Проверить, доступна ли версия в виде тапа

Особенно для более крупных программных проектов очень вероятно, что существует достаточно высокий спрос на несколько (потенциально несовместимых с API) основных версий определенного программного обеспечения. По состоянию на март 2012 г. Homebrew 0.9 предоставляет для этого механизм: brew tap и < репозиторий href = "https://github.com/Homebrew/homebrew-versions" rel = "noreferrer"> homebrew versions.

Этот репозиторий версий может включать резервные копии старых версий для нескольких формул. (В основном только большие и известные, но, конечно, у них также будет несколько формул для postgresql.)

brew search postgresql покажет вам, где искать:

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

Мы можем просто установить его, набрав

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

Обратите внимание, что при этом автоматически коснулся крана homebrew/versions. (Проверьте с помощью brew tap, удалите с помощью brew untap homebrew/versions.) Следующее было бы эквивалентно:

$ brew tap homebrew/versions
$ brew install postgresql8

Пока формулы версий с обратным переносом остаются актуальными, этот подход, вероятно, является лучшим способом работы со старым программным обеспечением.

3) Попробуйте какую-нибудь формулу из прошлого

Следующие подходы перечислены в основном для полноты. Оба пытаются воскресить некую формулу нежити из хранилища пива. Из-за измененных зависимостей, изменений API в спецификации формулы или простого изменения URL-адреса загрузки все может работать, а может и не работать.

Поскольку весь каталог формул является репозиторием git, можно установить определенные версии с помощью простых команд git. Однако нам нужно найти способ получить коммит, в котором была доступна старая версия.

а) исторические времена

В период с августа 2011 г. по октябрь 2014 г. у homebrew была команда brew versions, которая выдавала все доступные версии с соответствующими хэшами SHA. По состоянию на октябрь 2014 года вам нужно сделать brew tap homebrew/boneyard, прежде чем вы сможете его использовать. Как следует из названия крана, вам, вероятно, следует делать это только в крайнем случае.

E.g.

$ 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

Как видите, он не рекомендует его использовать. Homebrew выплевывает все версии, которые он может найти, с помощью своей внутренней эвристики и показывает вам способ получить старые формулы. Давай попробуем.

# 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

Теперь, когда установлена ​​более старая версия postgresql, мы можем переустановить последнюю формулу, чтобы сохранить наш репозиторий в чистоте:

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

brew switch - ваш друг, чтобы переключаться между старым и новым.

б) доисторические времена

Для особых нужд мы также можем попробовать самостоятельно покопаться в репозитории homebrew.

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

git log -S ищет все коммиты, в которых строка '8.4.4' была добавлена ​​или удалена в файле Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. В результате получаем два коммита.

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

Очевидно, что fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 - это тот коммит, который нас интересует. Поскольку этот коммит довольно старый, мы попытаемся понизить версию до полной версии Homebrew (таким образом, API формулы более или менее гарантированно будет работать):

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

Вы можете пропустить последнюю команду, чтобы сохранить ссылку в репозитории git.

Одно замечание: проверяя более старую фиксацию, вы временно понижаете версию своей домашней версии. Итак, вы должны быть осторожны, так как некоторые команды в homebrew могут отличаться от самой последней версии.

4) Напишите формулу вручную

Это не слишком сложно, и затем вы можете загрузить его на ваш собственный репозиторий. Раньше было Homebrew-Versions, но теперь это больше не поддерживается.

A.) Бонус: закрепление

Если вы хотите сохранить определенную версию, скажем postgresql, и предотвратить ее обновление при выполнении естественной brew update; brew upgrade процедуры, вы можете закрепить формулу:

$ brew pin postgresql

Закрепленные формулы перечислены в /usr/local/Library/PinnedKegs/, и когда вы захотите внести последние изменения и обновления, вы можете открепить их снова:

$ brew unpin postgresql
person Debilski    schedule 11.11.2010
comment
Вы также можете просто проверить формулу, используя git checkout fa992 -- Library/Formula/postgresql.rb. Когда вы закончите, вы можете отменить изменения в формуле с помощью git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb. - person mipadi; 03.01.2011
comment
Postgresql v8.4.4 больше не находится на ftp-сервере, на который ссылается формула. Однако легко изменить формулу для ссылки на 8.4.6, которая может сработать для вас. MD5 в формуле также необходимо изменить - правильный MD5 будет сообщен, когда вы попытаетесь заварить установку. - person Mark Swardstrom; 04.05.2011
comment
Примечание: при новой установке Homebrew вам может потребоваться brew update, чтобы установить его репозиторий Git. - person Bluu; 28.05.2011
comment
Я новичок в пивоварении (пивовар?), И я запустил git checkout ... для конкретной версии mysql, но что теперь? Я пробовал brew install mysql на этом этапе, но получаю Error: This is a head-only formula; install with "brew install --HEAD mysql". Затем я пробую brew install --HEAD mysql и получаю Error: No head is defined for mysql. Я упускаю что-то очевидное? - person istrasci; 10.01.2012
comment
Для обновления I мне пришлось brew unlink <formula> перед запуском части brew install - person Josh Diehl; 19.08.2012
comment
Вы вообще не упоминаете brew switch. Не так ли лучше? - person Amir Raminfar; 25.09.2012
comment
@AmirRaminfar brew switch не установит и не найдет ранее удаленные версии. - person Debilski; 26.09.2012
comment
Хм, я больше не думаю, что это правда. Когда я делаю brew versions wget, я получаю все старые версии wget и могу переключиться на любую из них. - person Amir Raminfar; 26.09.2012
comment
@AmirRaminfar: сейчас я не могу его протестировать, но brew-switch.rb не похоже, что он собирается делать какие-либо установки. (И я сомневаюсь, что это было бы легко возможно, поскольку в формуле DSL могли быть небольшие изменения.) - person Debilski; 26.09.2012
comment
Любопытно, почему brew tap запрашивает пароль на github? - person Brian Armstrong; 17.12.2012
comment
У меня это не сработало. brew switch, однако, работал отлично. - person Kyle Heironimus; 18.06.2013
comment
На самом деле brew switch у меня не сработало. Например, я хотел установить специальную версию cassandra, показанную с помощью brew versions cassandra, но при запуске этой команды brew switch cassandra 1.2.9 я получил следующую ошибку Error: cassandra does not have a version "1.2.9" in the Cellar.. На мой взгляд, рабочий процесс команды switch, описанный в следующем ответе, должен быть включен в команду homebrew switch. - person Brice; 26.09.2013
comment
Для работы brew switch необходимо, чтобы эта версия была уже установлена ​​(= находится в подвале), но неактивна. brew versions дает вам команду git, которую вы можете использовать для проверки формулы старой версии. - person Debilski; 26.09.2013
comment
@mipadi - Вы имели в виду git reset вместо git revert в своем комментарии? - person Aron Ahmadia; 17.12.2013
comment
@AronAhmadia: Ой, да, я думаю, да. - person mipadi; 17.12.2013
comment
Когда я хочу перейти на более раннюю версию MySQL, я использовал этот способ, но забыл проверить конкретную формулу, я проверил старую версию репозитория git. Затем мне нужно вручную удалить все дополнительные формулы. - person oppih; 25.05.2014
comment
Уловка brew switch не описана в руководстве, где вы ее нашли ?! - person danielrvt; 23.06.2014
comment
Спасибо, @jrmgx. Теперь это brew tap homebrew/boneyard. Обновил часть выше. - person Debilski; 07.10.2014
comment
@DanielSerodio Спасибо за предложения. Добавлен. - person Debilski; 23.01.2015
comment
Этот ответ вводит в заблуждение, поскольку он относится к командам (которые, версии), которых больше нет в текущей (май 2015 г.) версии brew. Пожалуйста, @Debilski, сделайте нам одолжение и обновите его или удалите. Спасибо! - person Marian; 07.05.2015
comment
Спасибо, @Marian, что заметили. Я удалил ссылку на brew which, но оставил brew versions на данный момент, поскольку в этом абзаце сказано, что в настоящее время он больше не работает. - person Debilski; 08.05.2015
comment
brew versions сейчас нет. Если вы используете вариант 2 и вам нужно переключаться между двумя версиями, установленными из homebrew\versions, вы можете использовать этот brew unlink postgresql8 && brew link postgresql92. - person Christian Long; 16.07.2015
comment
Что касается 3b, brew --repository сообщит вам, где находится репозиторий git homebrew. - person clayzermk1; 16.12.2015
comment
Это до смешного сложно. - person Dogweather; 16.01.2016
comment
Эти команды должны выполняться из папки $(brew --prefix). - person freemanoid; 17.01.2016
comment
Вы должны обновить этот ответ, чтобы включить способ установки версий из истории git, как указано @halfcube - person Yarek T; 23.02.2016
comment
Привет! Как специалист по сопровождению Homebrew, я просто хочу пояснить, что поддерживаемые методы заключаются в использовании формулы Homebrew / versions или адаптации формулы для установки нужной вам версии. Установка формулы из истории git не может работать надежно, потому что экосистема Homebrew со временем развивается, поэтому команда версий была удалена. Если он работает на вашем компьютере разработчика, отлично, но, пожалуйста, не полагайтесь на манипуляции с git или исторические формулы, работающие надежно. Стабильный интерфейс командной строки Homebrew - это интерфейс командной строки. - person Tim Smith; 05.04.2016
comment
Еще одна вещь, о которой следует знать, заключается в том, что с начала апреля основные формулы разделены в отдельное репо, поэтому вы больше не можете выполнять манипуляции git в корне /usr/local, как раньше. Я все еще мог взломать основные формулы, которые теперь используются в /usr/local/Library/Taps/homebrew/homebrew-core, но, как указывает @TimSmith: это на самом деле не поддерживается и является своего рода чушью. - person gtd; 16.07.2016
comment
флаги не работают с версиями? Я пробовал: brew install homebrew/versions/ffmpeg28 --with-fontconfig --with-freetype, но он не компилируется с этими флагами. Прекрасно работает при установке ffmpeg 3.x по умолчанию - person chovy; 06.08.2016
comment
NEVERMIND На самом деле сборка была с этими флагами - вывод был отключен. Вы можете проверить с brew info ffmpeg28 - person chovy; 06.08.2016
comment
Если все, что вам нужно, это установить разрабатываемую или бета-версию определенного программного обеспечения, вы можете использовать флаг --devel. Например: brew install go --devel - person 17xande; 20.12.2016
comment
На сегодняшний день правильным каталогом для выполнения ручных команд для репозитория является cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, тогда вы можете использовать git checkout 4cce79d -- Formula/go.rb и HOMEBREW_NO_AUTO_UPDATE=1 brew install go. - person Calin; 18.02.2017
comment
Кажется, нужно снять отметку с этого ответа и проверить новые рабочие - person kelegorm; 09.06.2017
comment
homebrew / versions устарел - person Ezekiel Victor; 04.09.2017
comment
Если бы я мог дать вам миллион голосов, я бы это сделал. Это полностью спасло мне сегодня жизнь. - person UncleAdam; 20.09.2017
comment
Если ни один из этих методов не помогает найти нужный пакет, вы можете найти его с помощью stackoverflow.com/questions/39187812/ - person Simon Woodside; 05.12.2017
comment
brew versions cassandra не работает с Homebrew 1.3.9 - person realPK; 08.12.2017
comment
@TimSmith, но если у нас больше нет команды versions, как можно использовать команду switch, если вы не знаете, какие версии были доступны для соответствующего пакета ?! - person Iulian Onofrei; 15.01.2018
comment
Закрепленные формулы теперь перечислены в /usr/local/var/homebrew/pinned/, а указанный путь больше не существует /usr/local/Library/PinnedKegs/ - person Kay V; 04.08.2018
comment
Ребята, давайте посмотрим правде в глаза, мы все с нетерпением ждали этого решения: brew install/upgrade/downgrade [email protected] и оно не поддерживается! - person Montaro; 10.10.2018
comment
в дополнение к 3a, помимо того, что сказал @Calin, вам может потребоваться полная версия homebrew, потому что у вас, вероятно, только мелкая: git -C "$(brew --repo homebrew/core)" fetch --unshallow. Для меня git log в формулу вернул только 1 фиксацию. - person Radu Vlad; 14.11.2018
comment
В последней версии, даже после того, как я ‹заварю кран homebrew / boneyard› - person Penguin Zhou; 16.11.2018
comment
В последней версии homebrew, даже после того, как я brew tap homebrew/boneyard. Когда я brew versions opencv, он все равно будет показывать `Ошибка: неизвестная команда: версии. Кто-нибудь может помочь? - person Penguin Zhou; 16.11.2018
comment
Я бы отредактировал это, чтобы добавить быстрое официальное решение и лучший, немного более сложный процесс, который более надежен, но он может не быть принят. См. Процесс stackoverflow.com/a/55764594/3794873. - person dragon788; 19.04.2019
comment
github.com/Homebrew/homebrew-versions удален. - person Dereckson; 17.07.2020
comment
Этот ответ кажется в значительной степени несуществующим. Без репозитория версий нет возможности скачать более старые версии? - person oarfish; 03.08.2020
comment
Возможно, когда-то это был хороший ответ, но версий больше нет. - person Benjamin Burkhart; 24.09.2020
comment
На дворе 2020 год, а «вариации для варки» больше не работают. Неизвестная команда: версии - это ошибка, которую я получаю. - person ingernet; 05.10.2020
comment
Они должны нанять вас! - person Kraken; 02.02.2021
comment
Кажется, что brew switch сейчас сломан. Я получаю: Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead. - person Carl Walsh; 03.02.2021

Простой рабочий процесс

Теперь, когда Homebrew / versions устарела, Homebrew / core поддерживает несколько версий формул с новым форматом именования.

Чтобы установить определенную версию, например postgresql 9.5 вы просто запускаете:

$ brew install [email protected]

Чтобы вывести список доступных версий, выполните поиск с помощью @:

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
person Bijan    schedule 22.03.2012
comment
Вроде самый простой, но когда я копирую и вставляю, получаю fatal: Not a git repository (or any of the parent directories): .git. Вместо этого я просто cd захожу в каталог (без FORMULANAME.rb), а затем выполняю git checkout 120938 - person Ramon Tayag; 01.07.2012
comment
вы должны заменить FORMULANAME.rb на название рецепта .. вы пробовали это? - person Bijan; 04.07.2012
comment
@RamonTayag, у меня была такая же проблема. Обязательно сначала cd /usr/local. - person gjb; 19.12.2012
comment
Я обнаружил, что вам нужен шаг 3.5: brew unlink FORMULANAME - person Intentss; 24.02.2013
comment
Я пробую это в чистой (свежей установке osx) системе и проверке формул в порядке, но установка brew отказывается использовать проверенную версию и настаивает на установке последней версии. При попытке установить другую версию после установки последней я получаю: Warning: <formula> already installed - person Chris Edwards; 08.05.2013
comment
Если у вас есть формула из задействованного репо, обязательно добавьте cd в это репо, например. cd /usr/local/Library/Taps/homebrew-science - person Lars Bilke; 30.10.2013
comment
если вы получаете сообщение об ошибке с «версиями пивоварни», попробуйте «заваривать кран до домашнего пивоварения / бонярда» - person soenke; 29.10.2014
comment
brew versions <formula> больше не поддерживается. - person ejoubaud; 03.11.2014
comment
@ sava-chankov Я не могу заставить работать [email protected]. Это только бочка и никогда не ссылается на / usr / local / bin - person dem7w2; 02.05.2017
comment
Мне нравится этот tl; dr, он также работает, когда я хочу откатиться с vim8.0 на vim7.4 - person pambda; 30.05.2017
comment
Как получить список доступных версий? - person studgeek; 24.06.2017
comment
@ dem7w2, вы можете создавать символические ссылки с помощью brew link --force [email protected]. Если у вас уже установлена ​​более новая версия и вы хотите, чтобы по умолчанию использовалась более старая версия, вам также понадобится --overwrite. - person Ryan; 16.08.2017
comment
Не все формулы поддерживают несколько версий. Смотрите мой ответ для таких случаев - person Miguel Reyes; 19.12.2017
comment
переключатель brew postgresql 9.5.12 не работал. Показывает только ошибку: postgresql не найден в подвале. когда я запускаю brew install [email protected], отображается только предупреждение: [email protected] 9.5.12 уже установлено. Решением было заварить переключатель [email protected] 9.5.12 - person kangkyu; 02.03.2018

Теперь есть гораздо более простой способ установить старую версию формулы, которую вы установили ранее. Просто используйте

brew switch [formula] [version]

Например, я регулярно чередую Node.js 0.4.12 и 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Поскольку brew switch просто изменяет символические ссылки, это очень быстро. См. Дополнительную документацию на Homebrew Wiki в разделе Внешние команды.

person Trevor Burnham    schedule 14.12.2011
comment
Я попробовал это, и это удалось с сообщением 33 ссылки, созданным для /usr/local/Cellar/node/0.4.7, но когда я запускаю узел впоследствии, он терпит неудачу с сообщением -bash: / usr / local / bin / node : Данный файл или каталог отсутствует . Есть идеи, что могло пойти не так? Примечание: я загрузил 0.4.7 вручную и поместил его в каталог подвала, потому что я не знаю, как загрузить что-либо, кроме последней версии узла, используя brew. - person Soroush Hakami; 23.12.2011
comment
@Souroush Hakami, вы не можете просто положить его в папку, вы должны поместить скомпилированную версию в папку Cellar. - person aledalgrande; 03.03.2012
comment
Надеюсь, вы знаете, что есть что-то под названием "nvm" [github.com/creationix/nvm] ! - person Gaurav Agarwal; 27.05.2013
comment
Я полагаюсь на уже установленную версию пакета. Если вам не хватает версии, вам все равно нужно будет применить выбранный ответ. - person Nic Strong; 19.12.2013
comment
В частности, для версии узла mgmt, nvm - лучшее решение, imho. - person cweekly; 10.04.2014
comment
@NicStrong Действительно, brew switch полагается на уже установленную желаемую версию. К сожалению, принятый в настоящее время ответ невероятно бесполезен, запутан и устарел. Там есть лучшие ответы ниже, которые намного более полезны. - person GDP2; 08.12.2017
comment
Кажется, что brew switch сейчас сломан. Я получаю: Error: Calling `brew switch` is disabled! Use `brew link` @-versioned formulae instead. - person Carl Walsh; 03.02.2021

Обновление: 15.01.2015

  • Найдите историю фиксации желаемого программного обеспечения и версии. например Мне нужно перейти с докера версии 1.4.1 на 1.3.3: https://github.com/Homebrew/homebrew-core/commit/master/Formula/docker.rb
  • Просмотрите файл с помощью этой кнопки: введите описание изображения здесь
  • Нажмите кнопку Raw: Элемент списка
  • Скопируйте URL (URL-адрес docker.rb в этом примере ) из адресной строки
  • brew install <url> (сначала может потребоваться brew unlink, например, brew unlink docker)
  • brew switch docker 1.3.3
  • Вернуться к докеру 1.4.1 brew switch docker 1.4.1

Из этой сути

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
person Vishal    schedule 19.07.2013
comment
Это единственное, что у меня сработало. Довольно глупо, что диспетчер пакетов требует так много возиться только для того, чтобы установить предыдущую версию. Возможно, меня избаловали Ruby RVM и Bundler, но этот процесс действительно нужно упростить и абстрагировать. - person poetmountain; 03.11.2013
comment
Когда я попытался перейти на предыдущую версию Ansible, мне пришлось отключить формулу перед установкой предыдущей версии, как указано. Итак, прежде чем делать brew install <url>, brew unlink <formulaname>. В противном случае это самый простой и краткий (пока что) способ переключиться на конкретную версию формулы. - person bigsweater; 09.06.2015
comment
На каком файле вы нажали кнопку Raw ?! - person Iulian Onofrei; 01.11.2016
comment
У этого подхода тоже есть проблемы .. Я получаю сообщение об ошибке Calling Formula.sha1 is disabled! для конкретной формулы, которую пытаюсь установить. - person kldavis4; 08.02.2017
comment
Я испробовал кучу разных подходов, и это был единственный, который у меня сработал. Мне удалось установить PostgreSQL 9.5.5 (устаревшая версия). - person Jordan; 18.05.2017
comment
Отлично работает (июль 2017 г.). Мне нужно было сначала удалить, прежде чем устанавливать необработанный файл репо. - person ffghfgh; 05.07.2017
comment
По-прежнему лучший метод (октябрь 2017 г.) - person Matt Montag; 12.10.2017
comment
Это работает, но иногда вам нужно загрузить необработанный файл .rb и изменить контрольную сумму, чтобы Homebrew не жаловался на несоответствие SHA. Похоже, что в 2017 году на GitHub большая часть репо-деревьев была повторно заархивирована, и их контрольные суммы изменились. (На самом деле это вызвало много замешательства в моей команде, когда в июле прошлого года Bazel начал терпеть неудачу из-за несоответствия хэша) - person Chang Qian; 01.02.2018
comment
Я легко нашел адрес по brew log <formula> - person kangkyu; 06.03.2018
comment
Спасибо всем, единственный подход, который сработал и для меня - person Eduardo Pereira; 03.07.2018
comment
Это была большая дополнительная работа, но единственное, что удалось получить с помощью webpack 3.11.0 на linuxbrew. - person John Churchill; 13.08.2018
comment
Я создал веб-страницу для быстрого поиска исторических версий каждого пакета: bagonyi.github.io/brewed - person bagonyi; 22.02.2019

В соответствии с предложением @ halfcube это работает очень хорошо:

  1. Найдите нужную библиотеку на странице https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Щелкните по нему: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Нажмите кнопку «История», чтобы просмотреть старые коммиты: https://github.com/Homebrew/homebrew-core/commit/master/Formula/postgresql.rb
  4. Щелкните тот, который вам нужен: "postgresql: обновить версию до 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Щелкните "исходную" ссылку: person Lance Pollard    schedule 16.10.2011
comment
Это самый простой способ установить необходимую версию пакета, если она недоступна в репозитории ядра как package@version - person avy; 17.04.2017
comment
Если вы не можете использовать веб-интерфейс, вы можете клонировать репозиторий и сделать это локально: используйте git log master -- Formula/PACKAGENAME.rb, чтобы получить историю фиксации, проверьте правильность фиксации, а затем запустите brew install Formula/PACKAGENAME.rb, чтобы установить ее. - person chipbuster; 01.06.2017
comment
Я думаю, вам нужно brew unlink перед brew install другой версии. - person studgeek; 24.06.2017
comment
Кто это mxcl? - person PJSCopeland; 18.01.2018
comment
Я делаю это brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rb, но получаю сообщение об ошибке, вероятно, из-за знака @: 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. Есть идеи? - person msciwoj; 11.07.2018
comment
Может ли кто-нибудь объяснить после использования git log master -- Formula/PACKAGENAME.rb для получения истории коммитов, как получить необработанную ссылку? - person Penguin Zhou; 18.11.2018
comment
Этот поток прерывается, если GitHub показывает Извините, эта история фиксации занимает слишком много времени для создания. при нажатии на Историю для конкретной формулы. Мне пришлось клонировать homebrew-core локально и вместо этого запустить $ git log -- Formula/foo.rb. - person Taylor Edmiston; 06.12.2019
comment
К сожалению, сейчас это не работает (Homebrew 2.4.11). В середине установки, согласно ответу, brew выясняет, что доступна более новая версия, и решает обновить ее. Например: [пропущено] Предупреждение: доступна midnight-commander 4.8.25, более поздняя, ​​чем версия 4.8.23. [skipped] == ›Улучшение 2 иждивенцев: полуночный командир 4.8.23 -› 4.8.25, полночь-командир 4.8.23 - ›4.8.25 ==› Обновление полуночного командира 4.8.23 - ›4.8.25 - person DKroot; 12.08.2020
comment
Когда-то установка с URL-адреса считалась устаревшей и теперь невозможна, поскольку она небезопасна. - person Benjamin Burkhart; 24.09.2020
comment
Больше не работает Invalid usage: Installation of carthage from a GitHub commit URL is unsupported! brew извлеките carthage` на стабильный тап на GitHub. - person K.R.; 04.03.2021
comment
Если вы не можете установить с URL-адреса, вы можете сначала загрузить файл ruby ​​и выполнить установку с него. - person rjcarr; 27.04.2021
comment
Похоже, это больше не работает Invalid usage: Installation of kubernetes-cli from a GitHub commit URL is unsupported! brew вместо этого извлеките kubernetes-cli` в стабильное нажатие на GitHub. - person Rakib; 06.07.2021

Я обнаружил лучшее альтернативное решение, чем другие сложные решения.

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

Это загрузит и установит PostgreSQL 8.4.8.


Я нашел это решение, начав выполнять действия по поиску репо и комментарий в разделе репо.

После небольшого исследования выяснилось, что у кого-то есть коллекция редких формул для варки.


Если вы ищете MySQL 5.1.x, попробуйте.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
person kylewelsby    schedule 19.09.2011
comment
хм, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb, похоже, не работает с синтаксическими ошибками. - person Brian Armstrong; 17.12.2012
comment
@BrianArmstrong Вы имеете в виду версию файла в формате html, а вам нужен необработанная версия. - person Nikita Volkov; 27.06.2013
comment
Перейдите на страницу github.com/Homebrew/homebrew/commits/master/. Библиотека / Формула /, выберите свою версию, просмотрите код, необработанный - используйте этот URL. - person jpillora; 29.06.2014
comment
Не забывайте raw в URL-адресе - person Faber; 30.10.2014
comment
Кажется, работает только для основных версий? Пример: я могу перейти с Subversion 1.9.4 на 1.8.x, но не на 1.9.3. - person Stan Kurdziel; 16.06.2016
comment
Это лучший способ сделать это. Теперь вам нужно перейти сюда github.com/Homebrew/homebrew-core, чтобы получить доступ к пиву github , затем найдите версию, которую хотите установить. Вы можете вернуться к старым версиям. Затем выберите необработанный URL-адрес для нужного файла и установите его с помощью brew install. - person Uncle Long Hair; 25.09.2017
comment
homebrew-versions ушел, и теперь все работает core, так что общий случай: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMIT можно найти, перейдя на страницу github.com/Homebrew / homebrew-core / commits / master / Formula /. - person PJSCopeland; 18.01.2018
comment
Для более старых версий MySql я использовал эту команду brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/[email protected] - person atulkhatri; 12.07.2018
comment
Кажется, это работает, но устарело, поэтому скоро исчезнет Warning: Calling Installation of sshuttle from a GitHub commit URL is deprecated! Use 'brew extract sshuttle' to stable tap on GitHub instead. - person lantrix; 10.06.2020
comment
Когда-то установка с URL-адреса считалась устаревшей и теперь невозможна, поскольку она небезопасна. - person Benjamin Burkhart; 24.09.2020

ОБНОВЛЕНИЕ: этот метод устарел и больше не работает.

Этот метод приводит к ошибке: Установка mysql из URL-адреса фиксации GitHub не поддерживается! brew extract mysql вместо стабильного нажатия на GitHub. (UsageError)

$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).

...

Traceback (most recent call last):
    9: from /usr/local/Homebrew/Library/Homebrew/brew.rb:122:in `<main>'
    8: from /usr/local/Homebrew/Library/Homebrew/cmd/install.rb:132:in `install'
    7: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:302:in `parse'
    6: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `formulae'
    5: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `map'
    4: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:655:in `block in formulae'
    3: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:351:in `factory'
    2: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:138:in `get_formula'
    1: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:142:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:227:in `load_file': Invalid usage: Installation of mysql from a GitHub commit URL is unsupported! `brew extract mysql` to a stable tap on GitHub instead. (UsageError)
    12: from /usr/local/Homebrew/Library/Homebrew/brew.rb:155:in `<main>'
    11: from /usr/local/Homebrew/Library/Homebrew/brew.rb:157:in `rescue in <main>'
    10: from /usr/local/Homebrew/Library/Homebrew/help.rb:64:in `help'
     9: from /usr/local/Homebrew/Library/Homebrew/help.rb:83:in `command_help'
     8: from /usr/local/Homebrew/Library/Homebrew/help.rb:103:in `parser_help'
     7: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:302:in `parse'
     6: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `formulae'
     5: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:651:in `map'
     4: from /usr/local/Homebrew/Library/Homebrew/cli/parser.rb:655:in `block in formulae'
     3: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:351:in `factory'
     2: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:138:in `get_formula'
     1: from /usr/local/Homebrew/Library/Homebrew/formulary.rb:142:in `klass'
/usr/local/Homebrew/Library/Homebrew/formulary.rb:227:in `load_file': Invalid usage: Installation of mysql from a GitHub commit URL is unsupported! `brew extract mysql` to a stable tap on GitHub instead. (UsageError)

Я попытался установить с помощью рекомендованной команды, но она не работает в данном конкретном экземпляре MySQL 5.7.10. Возможно, вам повезет больше с более свежей формулой.

$ brew extract --version=5.7.10 mysql homebrew/cask
==> Searching repository history
==> Writing formula for mysql from revision 0fa511b to:
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/[email protected]

$ 

$ brew install /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/[email protected]
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 1 formula.
Error: undefined method `core_tap?' for nil:NilClass

Error: Failed to load cask: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/[email protected]
Cask '[email protected]' is unreadable: wrong constant name #<Class:0x00007f9b9498cad8>
Warning: Treating /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Formula/[email protected] as a formula.
==> Installing [email protected] from homebrew/cask
==> Downloading https://homebrew.bintray.com/bottles/cmake-3.19.4.big_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/278f2ad1caf664019ff7b4a7fc5493999c06adf503637447af13a617d45cf484?response-content-disposition=attachment%3Bfilenam
######################################################################## 100.0%
==> Downloading https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
==> Downloading from https://phoenixnap.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
######################################################################## 100.0%
==> Downloading https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "[email protected]"
Download failed: https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

Вы можете изменить формулу по указанному выше пути (написанному на ruby), чтобы попытаться достичь желаемого результата (например, установка MySQL 5.7.10 в последней версии macOS).


Вы можете использовать стратегию идентификации формулы и конкретной фиксации в истории формулы, которая соответствует версии пакета, который вы хотите установить.

  1. Перейдите на страницу https://github.com/Homebrew/homebrew-core.

  2. Нажмите t на клавиатуре, чтобы активировать поиск файлов.

  3. Определите формулу, которая выглядит наиболее подходящей, например: Formula/mysql.rb, которая приведет вас к расположению файла forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

  4. Просмотрите историю изменений, нажав кнопку History, расположенную по адресу https://github.com/Homebrew/homebrew-core/commit/master/Formula/mysql.rb. Если вас интересует MySQL 5.7.10, вы можете щелкнуть последнюю версию до 5.7.11, которая ведет к фиксации GitHub:

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

ПРИМЕЧАНИЕ. Возможно, вам придется просмотреть историю фиксации в консоли согласно предложению GitHub, если история фиксации не загружается в вашем браузере. Замените SHA фиксации выше в URL-адресе, если вы хотите увидеть эту фиксацию на GitHub. Или перейдите к шагу 7 ниже.

  1. Нажмите кнопку «Просмотр», чтобы просмотреть исходный код файла mysql.rb после применения фиксации.

  2. Затем нажмите кнопку Raw, чтобы просмотреть исходный код.

  3. Скопируйте URL. В качестве альтернативы создайте URL-адрес самостоятельно, используя имя файла mysql.rb, чтобы идентифицировать вашу формулу и конкретную версию этой формулы (идентифицированную коммитом SHA в URL-адресе ниже).

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

  1. Установите его с помощью $ brew install [URL from step 7]

     $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
    
person sealocal    schedule 24.02.2016
comment
К сожалению, это слишком далеко в списке ответов, но это лучшее решение. Это то, что я использую, за исключением того, что вместо использования braumeister я просто перехожу на страницу Homebrew GitHub с нужной мне формулой (например, для gcc перейдите на github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb), а затем я просматриваю Историю файл, пока я не доберусь до нужной мне версии. - person Guy Kogus; 31.03.2016
comment
Это определенно было лучшее решение в моем случае - установка более старой версии Watchman, для которой не требовался Xcode 8.1. - person hbd; 17.11.2016
comment
Это действительно самый простой способ установить старую версию. Отличный ответ - person Martin; 04.03.2017
comment
Это сработало для меня, но сначала мне пришлось отключить программное обеспечение. - person Brett Wagner; 08.03.2017
comment
Для меня это было самым простым решением. Это должно быть выше, поскольку принятый ответ устарел. - person Tim W; 15.08.2017
comment
Это должен быть лучший ответ, так как он легко адаптируется к любой бутылке, в моем случае Python 3.6.5. Спасибо. - person Corvin; 25.07.2018
comment
Я думаю, если вы упростите его, чтобы: найти необработанный URL-адрес с sha того пакета, который вы хотите, и запустить команду brew install X, это приведет к гораздо большему количеству голосов. - person Breedly; 15.02.2019
comment
К сожалению, Homebrew не поддерживает этот метод и больше не работает. Вызов установки XXX с URL-адреса фиксации GitHub отключен! - person totsubo; 12.10.2020

Большинство других ответов к настоящему времени устарели. К сожалению, у Homebrew до сих пор нет встроенного способа установки устаревшей версии, если только эта версия не существует в виде отдельной формулы (например, python@2, [email protected]…).

К счастью, для других формул существует гораздо более простой способ, чем та запутанная неразбериха, которая раньше была необходима. Вот полные инструкции:

  1. Найдите нужную версию в логах:

    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›
    

    Это покажет список хэшей коммитов. Возьмите подходящий (в основном он должен быть довольно очевидным и обычно самый последний (то есть самый верхний).

  2. Найдите URL-адрес, по которому формула находится в вышестоящем репозитории:

    brew info ‹formula› | grep ^From:
    
  3. Исправьте URL:

    1. Replace github.com with raw.githubusercontent.com
    2. Замените blob/master хешем фиксации, который мы нашли на первом шаге.
  4. Установите желаемую версию, заменив master в ранее найденном URL хешем фиксации, например:

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

(Последний шаг может потребовать выполнения brew unlink ‹formula› раньше.)


Если вы скопировали хеш фиксации, который хотите использовать, вы можете использовать что-то вроде этого примера, чтобы установить эту версию, заменив значение и bash своим хешем фиксации и желаемой формулой.

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

В этом примере устанавливается bash 4.4.23 вместо bash 5, хотя, если вы выполнили brew upgrade позже, то bash 5 будет установлен поверх, если вы сначала не выполнили brew pin bash. Вместо того, чтобы сделать это более плавным БЕЗ закрепления, вы должны сначала установить последнюю версию с brew install bash, затем brew unlink bash, затем установить старую версию, которую вы хотите, в соответствии с приведенным выше сценарием, а затем использовать brew switch bash 4.4.23 для настройки символических ссылок на более старую версию. Теперь brew upgrade не должен влиять на вашу версию Bash. Вы можете brew switch bash получить список версий, на которые можно переключиться.


Альтернатива с использованием настраиваемого локального крана

Другой способ достижения той же цели выглядит следующим образом:

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.

Это создает formula@version в вашем пользовательском кране, который вы можете установить, как показано в приведенном выше примере. Обратной стороной является то, что вам, вероятно, все равно понадобится brew unlink bash, а затем brew link [email protected], чтобы использовать вашу конкретную версию Bash или любую другую формулу.

person Konrad Rudolph    schedule 13.12.2018
comment
Очевидно, они изменили синтаксис для brew log, поэтому любые дополнительные параметры -F или --grep не помогли мне. - person dragon788; 08.04.2019
comment
@ dragon788 Черт побери, Homebrew 2 полностью сломался brew log. Я не могу беспокоиться о написании новой версии сейчас, потому что это требует правильного анализа сообщения журнала git или, альтернативно, запуска git log непосредственно в соответствующем репозитории. И в журнале изменений, кажется, даже не упоминается об этом критическом изменении. Помимо раздражения. - person Konrad Rudolph; 14.04.2019
comment
Если они не признают, что изменение поведения является ошибкой, кажется, что External Command может потребоваться для работы в структуре brew, чтобы вернуть этот тип git log фильтрации. docs.brew.sh/External-Commands - person dragon788; 17.04.2019
comment
Это было единственное место, где я смог найти правильное brew extract использование, спасибо! - person dognotdog; 30.05.2019
comment
Я бы посоветовал сделать настраиваемый local0 только касанием первой части вашего ответа. Это действительно кажется лучшим решением в целом. - person studgeek; 10.07.2019
comment
Мне нужно вернуться и обновить этот ответ некоторыми потенциальными исправлениями для некоторых старых формул, если они были написаны до того, как контрольные суммы sha1 устарели и стали недействительными в формулах. В основном вам нужно brew edit [email protected], а затем найти / заменить sha1 на sha256, а затем попытаться brew install [email protected] и, когда он выйдет из строя, заменить контрольную сумму, которая отображается, как ожидалось (sha1), на ту, которая отображается как полученная (sha256). - person dragon788; 02.10.2019
comment
В соответствии с приведенным выше комментарием следует иметь в виду, что если вы устанавливаете какую-либо (намного) более старую формулу, API / методы Homebrew могут измениться с того времени, поэтому вам следует brew edit appFormula по сравнению с текущей версией и сравнить с brew edit [email protected], если вы столкнуться с любыми ошибками при попытке brew install [email protected] после команды brew extract в ответе выше. - person dragon788; 02.10.2019

Официальный метод (судя по ответу на https://github.com/Homebrew/brew/issues/6028)

К сожалению, у Homebrew до сих пор нет очевидного встроенного способа установки более старой версии.

К счастью, для большинства формул существует гораздо более простой способ, чем та запутанная неразбериха, которая раньше была необходима. Вот полные инструкции на примере bash:

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.

Это создаст formula@version в вашем пользовательском кране, который вы можете установить в соответствии с приведенным выше примером. Важное замечание: вам, вероятно, потребуется brew unlink bash, если вы ранее установили стандартную / последнюю версию формулы, а затем brew link [email protected], чтобы использовать вашу конкретную версию Bash (или любую другую формулу, где у вас установлена ​​последняя и более старая версия). .

Потенциальным недостатком этого метода является то, что вы не можете легко переключаться между версиями, потому что, согласно brew, это «другая формула».

Если вы хотите использовать brew switch $FORMULA $VERSION, вам следует использовать следующий метод.


Скриптовый метод (рекомендуется)

В этом примере показана установка старой версии bash 4.4.23, полезный пример, поскольку формула bash в настоящее время устанавливает bash 5.

  • Сначала установите последнюю версию формулы с brew install bash
  • затем brew unlink bash
  • затем установите старую версию, которую вы хотите, согласно приведенным ниже фрагментам
  • наконец, используйте brew switch bash 4.4.23, чтобы установить символические ссылки на вашу версию

Если вы выполнили brew upgrade после установки более старой версии без предварительной установки последней, то последняя будет установлена, затирая вашу старую версию, если вы сначала не выполнили brew pin bash.

Приведенные здесь шаги ИЗБЕГАЙТЕ закрепления, потому что об этом легко забыть, и вы можете закрепить версию, которая станет небезопасной в будущем (см. Shellshock / etc). При такой настройке brew upgrade не должен влиять на вашу версию Bash, и вы всегда можете запустить brew switch bash, чтобы получить список версий, на которые можно переключиться.

Скопируйте и вставьте и отредактируйте export строки из фрагмента кода ниже, чтобы обновить желаемую версию и имя формулы, затем скопируйте и вставьте остальные как есть, и он будет использовать эти переменные для волшебства.

# 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

Если вы уверены, что версия существует в формуле, вы можете использовать следующее:

# 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}')

После того, как вы экспортировали хэш фиксации, который хотите использовать, вы можете использовать его для установки этой версии пакета.

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

Следуйте инструкциям в выводе формулы, чтобы поместить ее в PATH или установить в качестве оболочки по умолчанию.

person dragon788    schedule 19.04.2019
comment
Кажется, это один из лучших и самых актуальных ответов - спасибо @ dragon788! Я установил StackOverflow Power User для Chrome, чтобы развернуть ВСЕ комментарии и выполнить поиск по экстракту пива, поскольку я получил предупреждение об устаревании, о котором упоминали многие другие. Я вижу, что это ваш последний вклад по этому вопросу, поэтому я предполагаю, что это (по крайней мере, один из) самых последних ответов. - person Devin Rhode; 02.09.2020
comment
Кроме того, вот официальные документы для brew extract docs.brew.sh/Manpage#extract- варианты-формула-коснитесь - person Devin Rhode; 02.09.2020
comment
Я все еще сам иногда возвращаюсь к этому, чтобы получить альтернативные версии программного обеспечения, которые мне все еще могут понадобиться для компиляции, потому что они используются где-то в большой коллекции микросервисов, которую я помогаю поддерживать. Я рад, что и другие находят это полезным. - person dragon788; 03.09.2020
comment
Есть еще одна проблема: если вы зайдете слишком далеко, они использовали SHA1 вместо SHA256 или новее, и поэтому вам придется обновить формулу для обработки любых brew изменений ABI / API. stackoverflow.com/questions/ 3987683 / - person dragon788; 03.09.2020

Я просто использовал Homebrew, чтобы вернуться к Maven 2.2.1, поскольку простой brew install maven установил Maven 3.0.3.

Сначала вам нужно оставить там maven dir, чтобы

$ brew unlink maven

Используйте команду крана для заваривания

$ brew tap homebrew/versions
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 590, done.
remote: Compressing objects: 100% (265/265), done.
remote: Total 590 (delta 362), reused 549 (delta 325)
Receiving objects: 100% (590/590), 117.49 KiB | 79 KiB/s, done.
Resolving deltas: 100% (362/362), done.
Tapped 50 formula

Теперь вы можете установить формулу maven2:

$ brew install maven2
==> Downloading 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 files, 3.1M, built in 6 seconds
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700)
Java version: 1.6.0_37
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.7.4" arch: "x86_64" Family: "mac" 

Изменить: вы также можете просто brew switch maven 2.2.1 переключиться на другую версию.

Изменить: проект Apache Maven реорганизовал свое репо. Обновлен этот ответ, чтобы учесть это изменение.

person Cameron Goodale    schedule 12.02.2012
comment
Это было очень полезно. Обратите внимание, что фонд apache реорганизовал двоичные файлы maven в каталоги версии (1,2,3), поэтому вам нужно будет отредактировать maven.rb для 2.2.1 и, возможно, других, чтобы они соответствовали новой структуре. Например, двоичный файл для 2.2.1 находился по адресу: apache.org/dist/maven/maven-2/2.2.1/binaries/. Обратите внимание на maven-2 / 2.2.1 / в URL-адресе. - person Charles Forcey; 05.02.2013
comment
@CharlesForcey Вы правы относительно реорганизации репозитория maven dist. Я обновлю ответ, чтобы использовать кран для заваривания, чтобы использовать старую формулу maven2. Спасибо за комментарий. - person Cameron Goodale; 07.02.2013

Случайно обновили Postgres?

Мое дело:

  • postgresql был обновлен с 11 до 12 случайно (после запуска brew upgrade без аргументов)
  • Я хочу сохранить Postgres 11.

Решение:

  1. Остановите БД:
brew services stop postgresql
  1. Установите Postgres 11:
brew install postgresql@11
  1. Включите это:
brew link postgresql@11 --force
  1. (Необязательно) Переименуйте каталог данных БД с postgres на postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Запустите БД:
brew services start postgresql@11

Если у вас есть ошибки, проверьте /usr/local/var/log/[email protected] (обратите внимание на @ 11).

person Max Malysh    schedule 10.01.2020
comment
Это работает только для особого случая postgresql @ 11, который явно поддерживается разработчиками Homebrew, чтобы помочь с миграциями хранилища данных (выполняется с помощью специальной команды brew postgresql-upgrade-database). Этот ответ бесполезен почти для любой другой формулы. - person Adam Wróbel; 28.01.2020
comment
@ AdamWróbel Я решил, что можно ответить на исходный вопрос о Postgres. brew postgresql-upgrade-database предназначен для обновлений. Мой ответ касается использования более старой версии Postgres. Простое переключение двоичных файлов не сработает. - person Max Malysh; 03.02.2020
comment
Пользователи NodeJS, которые не используют диспетчер версий, например nvm, К вашему сведению, мне посчастливилось использовать эту технику для старых релизов LTS. По крайней мере, на момент написания должны быть доступны версии 10 и 12, например brew install node@12 formulae.brew.sh/formula/node - person paws; 25.02.2020

На основе рабочего процесса, описанного @tschundeee и @Debilski update 1, я автоматизировал процедуру и добавил очистку в этот скрипт.

Загрузите его, поместите на свой путь и brewv <formula_name> <wanted_version>. Для конкретного OP это будет:

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

:)

person MattiSG    schedule 09.07.2012
comment
просто потрясающе. почему этого нет в пиве? - person Adrian; 03.04.2013
comment
Больше не найдено :( - person D-32; 05.07.2016

Обновленный ответ, поскольку он добавляет к тому, что @ lance-pollard уже опубликовал как рабочий ответ.

Как установить конкретную версию формулы (в этом примере используется формула terraform):

  1. Найдите файл формулы, например: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Получите версию фиксации из истории github с помощью https://github.com/Homebrew/homebrew-core/commit/master/Formula/terraform.rb или git log master -- Formula/terraform.rb, если вы клонировали репозиторий локально.
  3. Получите необработанный URL-адрес git с версией фиксации вашей формулы: если ссылка на формулу в github.com имеет вид https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.r, ваш исходный URL-адрес будет: https://raw.githubusercontent.com/Homebrew4brew-core/emebrew4e4e4e4e4e4e4e4e4e4e4e4e4e4eaaaa / / а>
  4. Установите его с помощью: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
person Miguel Reyes    schedule 19.12.2017
comment
Чтобы получить необработанный URL-адрес git на шаге 3, вы также можете просто нажать кнопку Raw и скопировать URL-адрес, на который вас перенаправит браузер. - person Brian Topping; 12.01.2018

Решение

brew extract --version=8.4p1  openssh homebrew/cask
brew install [email protected]

В последней версии [email protected] есть ошибки после того, как я запустил brew upgrade, поэтому я успешно вернулся к предыдущей версии указанным выше способом.

person JsonBruce    schedule 03.03.2021
comment
По состоянию на апрель 2021 года это было единственное работающее и разумное решение, которое я смог найти. Спасибо @JsonBruce - person bartgras; 13.04.2021

В новейшей версии homebrew (0.9.5 на момент написания этой статьи) будет специальный рецепт для версии homebrew keg, которую вы хотите установить. Пример:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Тогда просто делай brew install mongodb26 как обычно.

В случае, если вы уже установили последнюю версию, обязательно отключите последнюю версию и укажите желаемую версию: brew unlink mongodb && brew link mongodb26.

person Alex Sharp    schedule 30.04.2015
comment
Хотя это может дать ответ на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для ссылка. - person Erik; 01.05.2015

Проблема с homebrew/versions в том, что кто-то должен иметь эту конкретную версию программного обеспечения, указанную в репозитории, чтобы вы могли ее использовать. Кроме того, поскольку brew versions больше не поддерживается, требуется другое решение. Для решений, которые указывают на использование brew switch, это будет работать, только если вы не выполнили brew cleanup, поскольку версия должна существовать на вашем компьютере.

У меня возникла проблема с желанием установить конкретную старую версию docker-machine, которая не была указана в homebrew/versions. Я решил это, используя приведенное ниже, которое также должно работать для любого установленного программного обеспечения brew. В приведенном ниже примере будет использоваться docker-machine в качестве пакета, который я хочу понизить с версии 0.5.0 до 0.4.1.

  1. Перейдите в каталог homebrew Formula.
    Вы можете определить это, запустив brew info [any package name]. Например, brew info docker-machine дает мне строку, которая показывает мне путь - /usr/local/Cellar/docker-machine/0.5.0. Это говорит мне, что на моем компьютере homebrew установлен в /usr/local, а мой Formula каталог по умолчанию находится в /usr/local/Library/Formula

  2. Найдите конкретный файл формулы (.rb) для вашего пакета. Поскольку я хочу перейти на более раннюю версию docker-machine, я вижу файл docker-machine.rb.

  3. Получите историю версий для этого файла формул. Введите git log docker-machine.rb. Это перечислит полную историю фиксации для этого файла. Вы увидите такой вывод:

    ...more 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Author: BrewTestBot 
    Date:   Thu Nov 5 16:14:18 2015 +0000

        docker-machine: update 0.5.0 bottle.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Author: Vincent Lesierse 
    Date:   Tue Oct 27 22:25:30 2015 +0100

        docker-machine 0.5.0

        Updated docker-machine to 0.5.0

        Closes #45403.

        Signed-off-by: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Author: BrewTestBot 
    Date:   Mon Sep 21 14:04:04 2015 +0100

        docker-machine: update 0.4.1 bottle.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Author: BrewTestBot 
    Date:   Sun Aug 16 09:05:56 2015 +0100

        docker-machine: update 0.4.1 bottle.

    ...more

Сложная часть - найти последнюю фиксацию для конкретной версии, которую вы хотите. Из приведенного выше я могу сказать, что последняя версия 0.4.1 была зафиксирована с этим тегом фиксации: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. Коммиты выше этой точки начинаются с использования версии 0.5.0 (записи журнала git перечислены от самой последней до самой ранней даты).

  1. Получите предыдущую версию файла формулы. Используя тег фиксации из шага № 3 (вы можете использовать первые 6 символов), вы можете получить старую версию файла формулы, используя следующее:

    git checkout 5970e1 docker-machine.rb

  2. Удалите текущую версию пакета. Просто запустите обычные команды brew, чтобы удалить текущую версию пакета.
    Пример. brew uninstall docker-machine

  3. Установите старую версию пакета. Теперь вы можете просто запустить обычную команду brew install, и она установит формулу, которую вы выписали. Бывший. brew install docker-machine

Возможно, вам придется переустановить ссылку, используя brew link docker-machine, если это необходимо.

Если в любой момент вы захотите вернуться к последней версии определенного пакета, перейдите в каталог формул и выполните следующие команды в файле формулы (.rb)

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

Затем вы можете brew uninstall docker-machine и brew install docker-machine получить последнюю версию и поддерживать ее в дальнейшем.

person rchawdry    schedule 10.11.2015
comment
Очень тщательно напишите @rchawdry, спасибо. Кстати: чтобы быстро найти фиксацию, соответствующую нужной вам версии, добавьте параметр --grep git log --grep 0.4.1 docker-machine.rb. - person Jerry Mindek; 10.11.2015
comment
Для меня путь был /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula - person akauppi; 24.10.2016
comment
Таким образом, мне не удалось найти достаточно истории версий для cairo варево. Ответ @sealocal по какой-то причине показал больше. - person akauppi; 24.10.2016

Я пробовал большинство решений здесь, и они устарели. Мне пришлось объединить некоторые идеи отсюда с моей собственной работой. В результате я создал сценарий, который поможет мне справиться с тяжелой работой, который вы можете найти здесь

Использование:

brewv.sh formula_name desired_version
person demosten    schedule 20.02.2019

Изменить: 2021 год, этот ответ больше не работает из-за того, что установка github устарела. (Спасибо Тиму Смиту за обновление).

Установите старую версию пакета brew (пример Flyway 4.2.0)

Найдите свой местный каталог homebrew git или клонируйте Homebrew / homebrew-core локально

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

OR

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

Список всех доступных версий

git log master -- Formula/flyway.rb

Скопируйте идентификатор фиксации для нужной версии и установите ее напрямую.

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

person ffghfgh    schedule 24.05.2018
comment
почему бы просто не запустить brew install Formula/flyway.rb из homebrew-core каталога? это сработало для меня без использования адреса raw.github.. - person kangkyu; 21.08.2019
comment
Это может быть единственный ответ, работающий по состоянию на 21.06.2020 (Homebrew 2.4.0-93-g634c457) - person ijoseph; 21.06.2020
comment
Просто используйте brew log some_package в порядке - person iplus26; 05.08.2020
comment
Больше не работает (Homebrew 2.7.0). brew install завершается ошибкой с сообщением о том, что установка с URL-адреса фиксации GitHub не поддерживается. - person Tim Smith; 23.12.2020

Доморощенный недавно поменяли. То, что раньше работало, больше не работает. Самый простой способ работы (январь 2021 г.) заключался в следующем:

  • Find the .rb file for my software (first go to Formulas, find the one I need and then click "History"; for CMake, this is at https://github.com/Homebrew/homebrew-core/commits/master/Formula/cmake.rb)
    • Pick the desired version among the revisions, e.g. 3.18.4, click three dots in the top right corner of the .rb file diff (...) and then click Raw. Copy the URL.
  • Отключите старую версию brew unlink cmake
  • Installing directly from the git URL does not work anymore (brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/2bf16397f163187ae5ac8be41ca7af25b5b2e2cc/Formula/cmake.rb will fail)
    • Instead, download it and install from a local file curl -O https://raw.githubusercontent.com/Homebrew/homebrew-core/2bf16397f163187ae5ac8be41ca7af25b5b2e2cc/Formula/cmake.rb && brew install ./cmake.rb

Вуаля! Теперь вы можете удалить загруженный .rb файл.

person the swine    schedule 28.01.2021
comment
Иногда вам нужно думать достаточно просто, кстати, спасибо: D - person Orif; 08.03.2021
comment
Наконец-то метод, который работает! - person GuyGizmo; 13.03.2021
comment
Я пытаюсь заставить это работать для загрузки CMake 3.19.2, я получаю сообщение об ошибке, которое я не могу опубликовать здесь во всех деталях из-за ограничений символов, но jist таков: curl: (22) Запрошенный URL-адрес возвращен ошибка: 404 Ошибка: не удалось загрузить ресурс cmake_bottle_manifest. Я знаю, что URL-адрес правильный: raw.githubusercontent.com/Homebrew/homebrew-core/, что я делаю не так? Я даже вижу файл в своем каталоге, откуда он также загружен, так что это очень сбивает с толку - person Joseph Astrahan; 01.06.2021
comment
Вот точная команда, которую я использовал: curl -O rawcontent.githferrer"> .com / Homebrew / homebrew-core / && brew install ./cmake.rb - person Joseph Astrahan; 01.06.2021
comment
Я разместил свой вопрос более подробно здесь: stackoverflow.com/questions/67781625/ - person Joseph Astrahan; 01.06.2021

это можно было сделать очень легко для последней версии варево.

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)
person Maxim Kholyavkin    schedule 11.08.2014
comment
... если кто-то потрудился создать версионный рецепт для этого пакета. - person clacke; 03.09.2014

В моем случае (Python) ничего из этого не сработало, поэтому я добавлю свои 2 цента:

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

Результат выглядит так:

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.

...

Мне нужна версия 2.7.11, поэтому мой хеш - cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9 (или для краткости cf5da05). Затем я проверяю эту версию и устанавливаю формулу python:

git checkout cf5da05
brew install python

Наконец, очистите:

git checkout master
person tenfishsticks    schedule 05.07.2016
comment
Жизнь меняется, и этот ответ наиболее актуален. Не забывайте о HOMEBREW_NO_AUTO_UPDATE и прочтите github.com/Homebrew/brew/issues/1188 - person Wile E.; 04.10.2016
comment
Правильные команды: cd brew --prefix/Homebrew и git log Library/Taps/homebrew/homebrew-core/Formula/python.rb - person Iulian Onofrei; 15.01.2018
comment
Но даже это не работает, потому что /Library/Taps игнорируется. - person Iulian Onofrei; 15.01.2018
comment
Не забывайте о HOMEBREW_NO_AUTO_UPDATE. Да, не забывайте о вещах, которые вам нужны, пока после не обнаружите, что они вам нужны. xD - person Josh Habdas; 07.02.2019
comment
Как насчет этого? HOMEBREW_NO_INSTALL_CLEANUP разве не об этом нужно помнить? - person kangkyu; 22.08.2019

В настоящее время старые способы установки определенных версий формул устарели. Похоже, что мы должны использовать brew edit [formula]. Например. скажем, мы хотим установить 62.1 версию icu4c (требуется, например, для postgresql 10.5). Тогда тебе придется

> brew edit icu4c
# drops you to editor

Здесь вам нужно будет заменить url, version и sha256 (возможно, также mirror) на соответствующие строки 62.1.

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"

затем запустите brew reinstall icu4c, чтобы окончательно загрузить 62.1 версию.

person Emil Rehhnberg    schedule 24.01.2019
comment
как получить sha256 ? в моем случае https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip - person simo; 31.03.2019
comment
@simo, вы можете загрузить файл и использовать команду sha256sum в своем терминале. - person Henrique Gouveia; 25.09.2020
comment
Если вы примете это решение, вы, возможно, захотите вернуться к предыдущей конфигурации. См .: github.com/Homebrew/homebrew-core/tree/master/Formula < / а> - person Henrique Gouveia; 25.09.2020

Если вы не можете найти свою версию с помощью brew search <formula>, вы также можете попробовать просмотреть журналы фиксации для своей формулы, чтобы найти нужную версию:

вот пример установки старой версии nginx через brew:

Оттуда мы можем установить 1.6.3 с URL-адресом sha и необработанным git:

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

person lfender6445    schedule 15.09.2015

Обновите строку 8 библиотеки / формулы / postgresql.rb до

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

И MD5 в строке 9 для

fcc3daaf2292fa6bf1185ec45e512db6

Сохранить и выйти.

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

На этом этапе вы можете столкнуться с ошибкой postgresql could not create shared memory segment, чтобы обойти ее, обновите /etc/sysctl.conf следующим образом:

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

Попробуйте initdb /usr/local/var/postgres еще раз, и все должно пройти гладко.

Чтобы запустить postgresql при запуске

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

Надеюсь, это поможет :)

person mmrs151    schedule 13.07.2011

Я только что скопировал старую версию elasticsearch в каталог /usr/local/Cellar/elasticsearch.

$ 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

Вот и все. Может кому пригодится.

person Thaars    schedule 08.09.2017
comment
Уродливый взлом. Но да, у меня это тоже сработало, пока я пытался найти и установить старую версию consul! Ваше здоровье. - person darkdefender27; 06.04.2018

Я создал инструмент, чтобы упростить процесс, описанный в этот ответ.

Чтобы найти пакет pkg с версией a.b.c, запустите:

$ brew-install-specific [email protected]

Здесь будут перечислены коммиты по формуле pkg homebrew, в которых указана данная версия вместе с их URL-адресами 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: 

Проверьте фиксацию по заданному URL-адресу и введите индекс выбранной фиксации.

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

Скопируйте и запустите данную команду для установки.

person divs1210    schedule 06.05.2020

brew versions и brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-HASH>/Formula/<Formula>.rb сейчас не поддерживаются.

Вы можете попробовать вот так:

$ brew extract --version 5.6.2 gradle vitahlin/core
$ brew install [email protected]
person Vitah    schedule 06.11.2020

Вот как я понижаю KOPS (который не поддерживает управление версиями)

# brew has a git repo on your localhost
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core

git remote -v
origin  https://github.com/Homebrew/homebrew-core (fetch)
origin  https://github.com/Homebrew/homebrew-core (push)

# find the version of kops.rb you need
git log Formula/kops.rb

# checkout old commit
# kops: update 1.18.1 bottle.
git checkout 2f0ede7f27dfc074d5b5493894f3468f27cc73f0 -- Formula/kops.rb

brew unlink kops
brew install kops

# now we have old version installed
ls -1 /usr/local/Cellar/kops/
1.18.1
1.18.2

which kops
/usr/local/bin/kops
ls -l /usr/local/bin/kops
/usr/local/bin/kops -> ../Cellar/kops/1.18.1/bin/kops
kops version
Version 1.18.1

# revert to the newest version
brew uninstall kops
git checkout -f
brew link kops
kops version
Version 1.18.2
person Alexey Dmitriev    schedule 25.01.2021
comment
Это отлично! Спасибо. - person demisx; 08.03.2021
comment
Не за что - person Alexey Dmitriev; 09.03.2021

Другие ответы здесь отличные, но если вам нужно установить более старую версию пакета и убедиться, что имя пакета изменено, вам понадобится другой подход. Это важно при использовании сценариев (в моем случае сценариев сборки PHP), которые используют brew --prefix package_name, чтобы определить, какой каталог использовать для компиляции.

Если вы используете brew extract, версия добавляется в конец имени пакета, что нарушит поиск brew --prefix.

Вот как установить старую версию пакета, сохранив исходное имя пакета:

# uninstall the newer version of the package that you accidentally installed
brew uninstall --ignore-dependencies icu4c

# `extract` the version you'd like to install into a custom tap
brew tap-new $USER/local-tap
brew extract --version=68.2 icu4c $USER/local-tap

# jump into the new tap you created
cd $(brew --repository $USER/local-tap)/Formula

# rename the formula
mv [email protected] icu4c.rb

# change the name of the formula by removing "AT682" from the `class` definition
# the exact text you'll need to remove will be different
# depending on the version you extracted
nano icu4c.rb

# then, install this specific formula directly
brew install $(brew --repository $USER/local-tap)/Formula/icu4c.rb

Подробнее об этом я писал здесь.

person iloveitaly    schedule 11.05.2021

Я решил вопреки здравому смыслу создать формулу для Maven 3.1.1, которой homebrew/versions не было. Сделать это:

  1. Я раздвоил homebrew/versions на гитхабе.
  2. Я сделал символическую ссылку с $(brew --prefix)/Library/Taps на локальную рабочую копию моей вилки. Я назову это my-homebrew/versions.
  3. Я проверил, указав формулу как my-homebrew/versions/<formula>.
  4. Я отправил запрос на перенос на homebrew/versions для моей новой формулы.

Ура.

person J. B. Rainsberger    schedule 02.11.2013

Для версий, которые в настоящее время отсутствуют в формулах приготовления по умолчанию, вы можете легко создать свой собственный кран с помощью инструмента из https://github.com/buildtools-version-taps/homebrew-versions-tap-tool

person Lutzifer    schedule 15.07.2017
comment
Этот инструмент теперь интегрирован в Homebrew? Вы можете brew tap-new user/repo, а затем brew extract --version='Major.minor' FORMULA user/repo, а затем brew install [email protected]. - person dragon788; 17.04.2019

Вот мой простой ответ - меня очень раздражало, что для этого нет встроенного решения, поэтому я создал свой собственный ленивый скрипт. Не стесняйтесь вносить свой вклад ????????????

# Please define variables
packageName=<packageName>
packageVersion=<packageVersion>

# Create a new tab
brew tap-new local/$packageName

# Extract into local tap
brew extract --version=$packageVersion $packageName local/$packageName

# Verify packages is present
brew search $packageName@

# Run brew install@version as usual
brew install local/$packageName/$packageName@$packageVersion

https://gist.github.com/ArgonQQ/cff4834dab6b254cc2140bb1454b47ef

person ArgonQQ    schedule 05.05.2021