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

2197

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

Gravis
источник
2
postgresqlэто странно, потому что в какой-то момент у него были отдельные версии в Homebrew, что-то вроде bashможет быть лучшим примером, так как он перешел с 4.x на 5.x в пределах одного и того же имени формулы. См stackoverflow.com/a/55764594/3794873
dragon788
Инструкция по переустановке формулы общего назначения .
Джош Хабдас
2
Я прочитал все ответы. Это 2020 год, и нет простого способа или официальной команды сделать это
oluckyman

Ответы:

2556

TLDR: brew install postgresql@8.4.4 см. Ответ ниже для более подробной информации.


* ( Я отредактировал свой ответ, чтобы дать более полный рабочий процесс для установки / использования более старых версий программного обеспечения с 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& хранилище версий homebrew .

Этот репозиторий версий может включать бэкпорты более старых версий для нескольких формул. (В основном только крупные и знаменитые, но, конечно, у них также будет несколько формул для 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прежде чем сможете его использовать. Как следует из названия крана, вы должны делать это только в крайнем случае.

Например

$ 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

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

# 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 Ваш друг, чтобы изменить между старым и новым.

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

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

$ 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это интересующий нас коммит. Так как этот коммит довольно старый, мы попытаемся понизить версию полной доморощенной установки (таким образом, 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 , но сейчас она больше не выпускается.

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

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

$ brew pin postgresql

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

$ brew unpin postgresql
Debilski
источник
18
Вы также можете просто проверить формулу, используя git checkout fa992 -- Library/Formula/postgresql.rb. Когда вы закончите, вы можете отменить изменения в формуле, используя git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
Mipadi
18
Примечание: при новой установке Homebrew вам может потребоваться brew updateустановить репозиторий Git.
Bluu
557
Это смехотворно сложно.
Dogweather
30
На сегодняшний день правильным каталогом для выполнения ручных команд с хранилищем является cd $(brew --repository)/Library/Taps/homebrew/homebrew-coreто, что вы можете использовать git checkout 4cce79d -- Formula/go.rbи HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Калин
12
homebrew /
Иезекииль Виктор,
775

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

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

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

$ brew install postgresql@9.5

Для просмотра списка доступных версий выполните поиск с @:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6
Bijan
источник
8
Похоже, самое простое, но когда я копирую и вставляю, получаю fatal: Not a git repository (or any of the parent directories): .git. Я просто cdв каталог вместо (без FORMULANAME.rb), а затем сделатьgit checkout 120938
Рамон Tayag
8
@RamonTayag, у меня была такая же проблема. Обязательно cd /usr/localсначала.
GJB
13
Я нашел, что вам нужен шаг 3.5:brew unlink FORMULANAME
Intentss
37
brew versions <formula>больше не поддерживается
ejoubaud
4
@ dem7w2, вы можете создать символические ссылки с brew link --force postgresql@9.5. Если у вас уже установлена ​​более новая версия и вы хотите, чтобы она была установлена ​​по умолчанию, вам понадобится и --overwriteтам.
Райан
457

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

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 в разделе Внешние команды .

Тревор Бернхэм
источник
2
Я попробовал это, и это успешно с сообщением "33 ссылки созданы для /usr/local/Cellar/node/0.4.7", но когда я запускаю узел впоследствии, он завершается с сообщением "-bash: / usr / local / bin / node: нет такого файла или каталога ". Есть идеи, что могло пойти не так? Примечание: я скачал 0.4.7 вручную и поместил его в каталог погреба, потому что я не знаю, как скачать что-либо, кроме последней версии узла, использующей brew.
Соруш Хаками
6
Надеюсь, вы знаете, что есть нечто, называемое nvm [ github.com/creationix/nvm] !
Гаурав Агарвал
40
Я полагаюсь на версию пакета, которая уже установлена. Если вам не хватает версии, вам все равно придется применить выбранный ответ.
Ник Стронг
1
В частности, для версии узла mgmt nvm - лучшее решение, imho.
еженедельно
5
@NicStrong Действительно, brew switchзависит от уже установленной востребованной версии. К сожалению, однако, принятый в настоящее время ответ невероятно бесполезен, запутан и устарел. Там являются лучшими ответами ниже , которые являются гораздо более полезным.
GDP2
250

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

  • Найти историю коммитов желаемого программного обеспечения и версии. например, мне нужно переключиться с версии 1.4.1 докера на 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Просмотрите файл с помощью этой кнопки: введите описание изображения здесь
  • Нажмите кнопку Raw: Пункт списка
  • Скопируйте 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
Вишал
источник
46
Это единственное, что сработало для меня. Довольно глупо, что менеджеру пакетов требуется так много времени, чтобы просто установить предыдущую версию. Возможно, я избалован ruby ​​RVM и компоновщиком, но этот процесс действительно необходимо упорядочить и абстрагировать.
Поэтмонт
3
Когда я попытался перейти на предыдущую версию Ansible, мне пришлось отсоединить формулу перед установкой предыдущей версии, как указано. Поэтому , прежде чем делать brew install <url>, brew unlink <formulaname>. В противном случае это самый простой и краткий (пока что) способ перехода на конкретную версию формулы.
bigsweater
Вы нажали Rawкнопку на каком файле ?!
Юлиан Онофрей
1
Это работает, но иногда вам нужно скачать необработанный файл .rb и изменить контрольную сумму, чтобы Homebrew не жаловался на несоответствие SHA. Похоже, что в GitHub большая часть деревьев репо была заново открыта в 2017 году, и их контрольные суммы изменились. ( На самом деле это вызвало много путаницы в моей команде , когда Базэл начал терпеть неудачу на хэш несовпадений в июле прошлого года)
Чжан Цянь
6
Я нашел адрес легко поbrew log <formula>
kangkyu
128

В соответствии с предложением @ 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/commits/master/Formula/postgresql.rb
  4. Нажмите на тот, который вы хотите: «postgresql: обновить версию до 8.4.4», https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Нажмите «сырую» ссылку: 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
Лэнс Поллард
источник
8
Это самый простой способ установить необходимую версию пакета, если она недоступна в package@version
репозитории
7
Если вы не можете использовать веб-интерфейс, вы можете клонировать репо и делать это локально: используйте git log master -- Formula/PACKAGENAME.rbдля получения истории коммитов, проверьте правильность фиксации, а затем запустите brew install Formula/PACKAGENAME.rbдля установки.
чипбастер
7
Я думаю, что вам нужно, brew unlinkпрежде чем brew installдругой версии.
Studgeek
Кто это mxcl?
ЧАО «
1
Я делаю это, 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.идеи?
msciwoj
109

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

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
kylewelsby
источник
1
хм, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbпохоже, не с синтаксическими ошибками.
Брайан Армстронг
6
@BrianArmstrong Вы имеете в виду версию файла в формате html, а вам нужна необработанная версия .
Никита Волков
Перейдите по адресу github.com/Homebrew/homebrew/commits/master/Library/Formula/… , выберите свою версию, просмотрите код в формате raw - используйте этот URL.
jpillora
1
Не забывайте, что rawв URL
Фабер
9
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/… .
ЧАО «
78

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

  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/commits/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

  4. Установите его с $ brew install [URL from step 7]

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

ПРИМЕЧАНИЕ. Этот ответ был обновлен с учетом удаления веб-сайта braumeister.org. Применяется тот же принцип, braumeister просто предоставил удобный для новичков способ навигации по формулам.

sealocal
источник
13
К сожалению, это слишком далеко в списке ответов, но это лучшее решение. Это то, что я использую, за исключением того, что вместо использования braumeister я просто перехожу на страницу Homebrew GitHub нужной формулы (например, для gcc перейдите на github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ), а затем я просматриваю «историю» файла, пока не доберусь до нужной версии.
Гай Когус
3
Это, безусловно, было лучшим решением в моем случае - установка более старой версии Watchman, для которой не требовался Xcode 8.1
Захари Кинер
3
Это действительно самый простой способ установить старую версию. Отличный ответ
Martin
4
Это сработало для меня, но я должен был заварить unlink программное обеспечение в первую очередь.
Бретт Вагнер,
3
Это было самое простое решение для меня. Это должно быть выше, поскольку принятый ответ устарел.
Тим W
35

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

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

  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. Заменить github.comна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 bash@4.4.23
# 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 bash@4.4.23использовать вашу конкретную версию Bash или любую другую формулу.

Конрад Рудольф
источник
1
Очевидно, они изменили синтаксис для brew logлюбого дополнительного -Fили --grepопций для меня.
dragon788
1
@ dragon788 Черт возьми, Доморощенный 2 полностью сломался brew log. Я не могу потрудиться написать новую версию сейчас, потому что это требует правильного анализа сообщения журнала git или, альтернативно, запуска git logнепосредственно в соответствующем репозитории. И в журнале изменений, похоже, даже не упоминается это серьезное изменение. Вне раздражает.
Конрад Рудольф
Если они не признают, что изменение в поведении является ошибкой, External Commandможет показаться, что для работы brewэтого типа git logфильтрации может потребоваться работа внутри структуры . docs.brew.sh/External-Commands
dragon788
Это было единственное место, где я смог найти правильное brew extractиспользование, спасибо!
dognotdog
Я бы посоветовал сделать кастомное local0 только коснитесь первой части вашего ответа. Это действительно кажется лучшим решением в целом.
Studgeek
29

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

Сначала вы должны оставить Maven Dir там так

$ brew unlink maven

Используйте команду brew tap

$ brew tap homebrew / версии
Клонирование в '/ usr / local / Library / Taps / homebrew-version' ...
Пульт: Подсчет объектов: 590, сделано.
Удаленный: Сжатие объектов: 100% (265/265), сделано.
удаленный: всего 590 (дельта 362), повторно использованный 549 (дельта 325)
Прием объектов: 100% (590/590), 117,49 КиБ | 79 КиБ / с, готово.
Разрешение дельт: 100% (362/362), сделано.
Тапп 50 формула

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

$ brew установить maven2
==> Загрузка 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 файлов, 3,1 млн., построено за 6 секунд
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Версия Java: 1.6.0_37
Домашняя страница Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Язык по умолчанию: en_US, кодировка платформы: MacRoman
Имя ОС: "Mac OS X" версия: "10.7.4" arch: "x86_64" Семейство: "Mac" 

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

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

Кэмерон Гудейл
источник
Это было очень полезно. Обратите внимание, что Apache Foundation реорганизовал двоичные файлы 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.
Чарльз Форси
@CharlesForcey Вы правы в отношении реорганизации Maven Dist Repo. Я обновлю ответ, чтобы использовать brew tap, чтобы использовать старую формулу maven2. Спасибо за комментарий.
Кэмерон Гудэйл
21

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

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

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

:)

MattiSG
источник
4
просто потрясающе. почему это не варится?
Адриан
3
Больше не найдено :(
D-32
18

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

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

  1. Найдите файл формулы, например: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Получите версию фиксации из истории github с помощью https://github.com/Homebrew/homebrew-core/commits/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.rb , ваш необработанный URL будет быть: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Установите его с помощью: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Мигель Рейес
источник
Чтобы получить необработанный URL-адрес git на шаге 3, вы также можете просто нажать кнопку «Необработанный» и скопировать URL-адрес, по которому вас ведет браузер.
Брайан Топпинг
15

Официальный метод (судя по ответу на 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 bash@4.4.23
# 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 bash@4.4.23, чтобы использовать конкретную версию 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). С этой настройкой a 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 или установить в качестве оболочки по умолчанию.

dragon788
источник
12

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

$ brew search mongodb
mongodb    mongodb24  mongodb26

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

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

Алекс Шарп
источник
Хотя это может дать ответ на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Эрик
1
@Erik Спасибо, исправлено.
Алекс Шарп
11

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

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

  1. Зайдите в свой домашний 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. Это перечислит полную историю коммитов для этого файла. Вы увидите вывод так:

    ...Больше 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Автор: BrewTestBot 
    Дата: чт 5 ноября 16:14:18 2015 +0000

        Докер-машина: обновление бутылки 0.5.0.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Автор: Винсент Лезье 
    Дата: вторник, 27 октября, 22:25:30 2015 +0100

        докер-машина 0.5.0

        Обновлена ​​докер-машина до 0.5.0

        Закрытие # 45403.

        Подписано: Доминик Тиллер 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Автор: BrewTestBot 
    Дата: пн 21 сен 14:04:04 2015 +0100

        Докер-машина: обновление бутылки 0.4.1.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Автор: BrewTestBot 
    Дата: вс 16 августа 09:05:56 2015 +0100

        Докер-машина: обновление бутылки 0.4.1.

    ...Больше

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

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

    git checkout 5970e1 docker-machine.rb

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

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

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

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

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

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

rchawdry
источник
1
Очень тщательно напишите @rchawdry, спасибо. Кстати: чтобы найти коммит, соответствующий нужной версии, быстро добавьте параметр --grep git log --grep 0.4.1 docker-machine.rb.
Джерри Миндек
Для меня путь был/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
акауппи
Я не смог найти достаточно истории версий для cairo варева таким образом. Ответ @ sealocal показал больше, по некоторым причинам.
akauppi
11

Это 2020 год, и большинство ответов устарели

Моя ситуация: postgresqlбыл повышен с 11 до 12 случайно. Я хочу сохранить 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/postgresql@11.log(обратите внимание на @ 11).

Макс Малыш
источник
6
Это работает только для особого случая postgresql @ 11, который явно хранится у сопровождающих Homebrew, чтобы помочь с миграцией хранилища данных (выполняется специальной командой brew postgresql-upgrade-database). Этот ответ бесполезен практически для любой другой формулы.
Адам Врубель
@ AdamWróbel Я решил, что это хорошо, чтобы ответить на оригинальный вопрос о Postgres . brew postgresql-upgrade-databaseэто, ну, для обновлений . Мой ответ об использовании более старой версии Postgres. Простое переключение двоичных файлов не будет работать.
Макс Малыш
Пользователям NodeJS, которые не используют менеджер версий, например nvm, к вашему сведению, мне повезло, используя эту технику для старых версий LTS. По крайней мере, на момент написания статьи v10 и v12 должны быть доступны, например, brew install node@12 Formula.brew.sh/formula/node
лапы
9

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

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

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

ИЛИ

git clone git@github.com:Homebrew/homebrew-core.git

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

git log master -- Formula/flyway.rb

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

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

ffghfgh
источник
почему бы просто не запустить brew install Formula/flyway.rbиз homebrew-coreкаталога? у меня это работало без использования raw.github..адреса
kangkyu
9

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

Применение:

brewv.sh formula_name desired_version
demosten
источник
6

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

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)
Максим Холявкин
источник
2
... если кто-то потрудился создать версионный рецепт для этого пакета.
Clacke
6

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

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

Вывод выглядит так:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <dominyktiller@gmail.com>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <rakkesh@users.noreply.github.com>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <git@tim-smith.us>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <brew-test-bot@googlegroups.com>
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
tenfishsticks
источник
2
Жизнь меняется, и этот ответ наиболее актуален. Не забывайте HOMEBREW_NO_AUTO_UPDATEи читайте github.com/Homebrew/brew/issues/1188
Wile E.
Правильные команды: cd brew --prefix /Homebrewиgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei
Но даже это не работает, потому что /Library/Tapsигнорируется.
Юлиан Онофрей
Не забывай о HOMEBREW_NO_AUTO_UPDATE. Да, не забудьте о вещи не нужно до тех пор , после того, как вы обнаружите , что вам нужно это. xD
Джош Хабдас
Как насчет этого? HOMEBREW_NO_INSTALL_CLEANUPразве это не то, что вам нужно помнить?
kangkyu
6

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

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

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

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

lfender6445
источник
3

В настоящее время старые способы установки определенных версий формул устарели. Так что, похоже, мы должны использовать 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версию.

Эмиль Ренберг
источник
как получить sha256 ? в моём случаеhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
симо
1

Обновите строку 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

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

mmrs151
источник
1

Я только что скопировал более старую версиюasticsearch в /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

Вот и все. Может быть, это полезно для всех.

Thaars
источник
Уродливый хак. Но да, это сработало и для меня, когда я пытался найти и установить более старую версию консула! Приветствия.
darkdefender27
0

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

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

Ура.

Дж. Б. Рейнсбергер
источник
0

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

Lutzifer
источник
Этот инструмент, кажется, теперь интегрирован в Homebrew? Вы можете brew tap-new user/repoи тогда brew extract --version='Major.minor' FORMULA user/repoи тогда brew install FORMULA@Major.minor.
dragon788
0

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

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

$ brew-install-specific pkg@a.b.c

Это перечислит коммиты по pkgформуле доморощенного, которые упоминают данную версию вместе с их 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

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

divs1210
источник