Как мне установить конкретную версию формулы на домашнее пивоварение? Например, postgresql-8.4.4 вместо последней версии 9.0.
Homebrew установить конкретную версию формулы?
Ответы (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
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
brew update
, чтобы установить его репозиторий Git.
- person Bluu; 28.05.2011
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
brew unlink <formula>
перед запуском части brew install
- person Josh Diehl; 19.08.2012
brew switch
. Не так ли лучше?
- person Amir Raminfar; 25.09.2012
brew switch
не установит и не найдет ранее удаленные версии.
- person Debilski; 26.09.2012
brew versions wget
, я получаю все старые версии wget и могу переключиться на любую из них.
- person Amir Raminfar; 26.09.2012
brew tap
запрашивает пароль на github?
- person Brian Armstrong; 17.12.2012
brew switch
, однако, работал отлично.
- person Kyle Heironimus; 18.06.2013
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
brew switch
необходимо, чтобы эта версия была уже установлена (= находится в подвале), но неактивна. brew versions
дает вам команду git, которую вы можете использовать для проверки формулы старой версии.
- person Debilski; 26.09.2013
git reset
вместо git revert
в своем комментарии?
- person Aron Ahmadia; 17.12.2013
brew switch
не описана в руководстве, где вы ее нашли ?!
- person danielrvt; 23.06.2014
brew tap homebrew/boneyard
. Обновил часть выше.
- person Debilski; 07.10.2014
brew which
, но оставил brew versions
на данный момент, поскольку в этом абзаце сказано, что в настоящее время он больше не работает.
- person Debilski; 08.05.2015
brew versions
сейчас нет. Если вы используете вариант 2 и вам нужно переключаться между двумя версиями, установленными из homebrew\versions
, вы можете использовать этот brew unlink postgresql8 && brew link postgresql92
.
- person Christian Long; 16.07.2015
brew --repository
сообщит вам, где находится репозиторий git homebrew.
- person clayzermk1; 16.12.2015
$(brew --prefix)
.
- person freemanoid; 17.01.2016
/usr/local
, как раньше. Я все еще мог взломать основные формулы, которые теперь используются в /usr/local/Library/Taps/homebrew/homebrew-core
, но, как указывает @TimSmith: это на самом деле не поддерживается и является своего рода чушью.
- person gtd; 16.07.2016
brew install homebrew/versions/ffmpeg28 --with-fontconfig --with-freetype
, но он не компилируется с этими флагами. Прекрасно работает при установке ffmpeg 3.x по умолчанию
- person chovy; 06.08.2016
brew info ffmpeg28
- person chovy; 06.08.2016
--devel
. Например: brew install go --devel
- person 17xande; 20.12.2016
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
brew versions cassandra
не работает с Homebrew 1.3.9
- person realPK; 08.12.2017
versions
, как можно использовать команду switch
, если вы не знаете, какие версии были доступны для соответствующего пакета ?!
- person Iulian Onofrei; 15.01.2018
/usr/local/var/homebrew/pinned/
, а указанный путь больше не существует /usr/local/Library/PinnedKegs/
- person Kay V; 04.08.2018
brew install/upgrade/downgrade [email protected]
и оно не поддерживается!
- person Montaro; 10.10.2018
git -C "$(brew --repo homebrew/core)" fetch --unshallow
. Для меня git log
в формулу вернул только 1 фиксацию.
- person Radu Vlad; 14.11.2018
brew tap homebrew/boneyard
. Когда я brew versions opencv
, он все равно будет показывать `Ошибка: неизвестная команда: версии. Кто-нибудь может помочь?
- person Penguin Zhou; 16.11.2018
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]
fatal: Not a git repository (or any of the parent directories): .git
. Вместо этого я просто cd
захожу в каталог (без FORMULANAME.rb), а затем выполняю git checkout 120938
- person Ramon Tayag; 01.07.2012
cd /usr/local
.
- person gjb; 19.12.2012
brew unlink FORMULANAME
- person Intentss; 24.02.2013
Warning: <formula> already installed
- person Chris Edwards; 08.05.2013
cd
в это репо, например. cd /usr/local/Library/Taps/homebrew-science
- person Lars Bilke; 30.10.2013
brew versions <formula>
больше не поддерживается.
- person ejoubaud; 03.11.2014
brew link --force [email protected]
. Если у вас уже установлена более новая версия и вы хотите, чтобы по умолчанию использовалась более старая версия, вам также понадобится --overwrite
.
- person Ryan; 16.08.2017
Теперь есть гораздо более простой способ установить старую версию формулы, которую вы установили ранее. Просто используйте
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 в разделе Внешние команды.
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
brew install <url>
, brew unlink <formulaname>
. В противном случае это самый простой и краткий (пока что) способ переключиться на конкретную версию формулы.
- person bigsweater; 09.06.2015
Raw
?!
- person Iulian Onofrei; 01.11.2016
Calling Formula.sha1 is disabled!
для конкретной формулы, которую пытаюсь установить.
- person kldavis4; 08.02.2017
brew log <formula>
- person kangkyu; 06.03.2018
В соответствии с предложением @ halfcube это работает очень хорошо:
- Найдите нужную библиотеку на странице https://github.com/Homebrew/homebrew-core/tree/master/Formula
- Щелкните по нему: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
- Нажмите кнопку «История», чтобы просмотреть старые коммиты: https://github.com/Homebrew/homebrew-core/commit/master/Formula/postgresql.rb
- Щелкните тот, который вам нужен: "postgresql: обновить версию до 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
- Щелкните "исходную" ссылку: person Lance Pollard schedule 16.10.2011
package@version
- person avy; 17.04.2017
git log master -- Formula/PACKAGENAME.rb
, чтобы получить историю фиксации, проверьте правильность фиксации, а затем запустите brew install Formula/PACKAGENAME.rb
, чтобы установить ее.
- person chipbuster; 01.06.2017
brew unlink
перед brew install
другой версии.
- person studgeek; 24.06.2017
mxcl
?
- person PJSCopeland; 18.01.2018
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
git log master -- Formula/PACKAGENAME.rb
для получения истории коммитов, как получить необработанную ссылку?
- person Penguin Zhou; 18.11.2018
homebrew-core
локально и вместо этого запустить $ git log -- Formula/foo.rb
.
- person Taylor Edmiston; 06.12.2019
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
Invalid usage: Installation of carthage from a GitHub commit URL is unsupported!
brew извлеките carthage` на стабильный тап на GitHub.
- person K.R.; 04.03.2021
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
brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb
, похоже, не работает с синтаксическими ошибками.
- person Brian Armstrong; 17.12.2012
raw
в URL-адресе
- person Faber; 30.10.2014
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
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/[email protected]
- person atulkhatri; 12.07.2018
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
ОБНОВЛЕНИЕ: этот метод устарел и больше не работает.
Этот метод приводит к ошибке: Установка 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).
Вы можете использовать стратегию идентификации формулы и конкретной фиксации в истории формулы, которая соответствует версии пакета, который вы хотите установить.
Перейдите на страницу https://github.com/Homebrew/homebrew-core.
Нажмите
t
на клавиатуре, чтобы активировать поиск файлов.Определите формулу, которая выглядит наиболее подходящей, например:
Formula/mysql.rb
, которая приведет вас к расположению файла forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.Просмотрите историю изменений, нажав кнопку
History
, расположенную по адресу https://github.com/Homebrew/homebrew-core/commit/master/Formula/mysql.rb. Если вас интересует MySQL 5.7.10, вы можете щелкнуть последнюю версию до 5.7.11, которая ведет к фиксации GitHub:
ПРИМЕЧАНИЕ. Возможно, вам придется просмотреть историю фиксации в консоли согласно предложению GitHub, если история фиксации не загружается в вашем браузере. Замените SHA фиксации выше в URL-адресе, если вы хотите увидеть эту фиксацию на GitHub. Или перейдите к шагу 7 ниже.
Нажмите кнопку «Просмотр», чтобы просмотреть исходный код файла mysql.rb после применения фиксации.
Затем нажмите кнопку Raw, чтобы просмотреть исходный код.
Скопируйте URL. В качестве альтернативы создайте URL-адрес самостоятельно, используя имя файла
mysql.rb
, чтобы идентифицировать вашу формулу и конкретную версию этой формулы (идентифицированную коммитом SHA в URL-адресе ниже).
Установите его с помощью
$ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
brew install X
, это приведет к гораздо большему количеству голосов.
- person Breedly; 15.02.2019
Большинство других ответов к настоящему времени устарели. К сожалению, у Homebrew до сих пор нет встроенного способа установки устаревшей версии, если только эта версия не существует в виде отдельной формулы (например, python@2
, [email protected]
…).
К счастью, для других формул существует гораздо более простой способ, чем та запутанная неразбериха, которая раньше была необходима. Вот полные инструкции:
Найдите нужную версию в логах:
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›
Это покажет список хэшей коммитов. Возьмите подходящий (в основном он должен быть довольно очевидным и обычно самый последний (то есть самый верхний).
Найдите URL-адрес, по которому формула находится в вышестоящем репозитории:
brew info ‹formula› | grep ^From:
Исправьте URL:
- Replace
github.com
withraw.githubusercontent.com
- Замените
blob/master
хешем фиксации, который мы нашли на первом шаге.
- Replace
Установите желаемую версию, заменив
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 или любую другую формулу.
brew log
, поэтому любые дополнительные параметры -F
или --grep
не помогли мне.
- person dragon788; 08.04.2019
brew log
. Я не могу беспокоиться о написании новой версии сейчас, потому что это требует правильного анализа сообщения журнала git или, альтернативно, запуска git log
непосредственно в соответствующем репозитории. И в журнале изменений, кажется, даже не упоминается об этом критическом изменении. Помимо раздражения.
- person Konrad Rudolph; 14.04.2019
External Command
может потребоваться для работы в структуре brew
, чтобы вернуть этот тип git log
фильтрации. docs.brew.sh/External-Commands
- person dragon788; 17.04.2019
brew extract
использование, спасибо!
- person dognotdog; 30.05.2019
sha1
устарели и стали недействительными в формулах. В основном вам нужно brew edit [email protected]
, а затем найти / заменить sha1
на sha256
, а затем попытаться brew install [email protected]
и, когда он выйдет из строя, заменить контрольную сумму, которая отображается, как ожидалось (sha1), на ту, которая отображается как полученная (sha256).
- person dragon788; 02.10.2019
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 или установить в качестве оболочки по умолчанию.
brew extract
docs.brew.sh/Manpage#extract- варианты-формула-коснитесь
- person Devin Rhode; 02.09.2020
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 реорганизовал свое репо. Обновлен этот ответ, чтобы учесть это изменение.
Случайно обновили Postgres?
Мое дело:
postgresql
был обновлен с 11 до 12 случайно (после запускаbrew upgrade
без аргументов)- Я хочу сохранить Postgres 11.
Решение:
- Остановите БД:
brew services stop postgresql
- Установите Postgres 11:
brew install postgresql@11
- Включите это:
brew link postgresql@11 --force
- (Необязательно) Переименуйте каталог данных БД с
postgres
наpostgres@11
:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
- Запустите БД:
brew services start postgresql@11
Если у вас есть ошибки, проверьте /usr/local/var/log/[email protected]
(обратите внимание на @ 11).
brew postgresql-upgrade-database
). Этот ответ бесполезен почти для любой другой формулы.
- person Adam Wróbel; 28.01.2020
brew postgresql-upgrade-database
предназначен для обновлений. Мой ответ касается использования более старой версии Postgres. Простое переключение двоичных файлов не сработает.
- person Max Malysh; 03.02.2020
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
:)
Обновленный ответ, поскольку он добавляет к тому, что @ lance-pollard уже опубликовал как рабочий ответ.
Как установить конкретную версию формулы (в этом примере используется формула terraform
):
- Найдите файл формулы, например: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
- Получите версию фиксации из истории github с помощью https://github.com/Homebrew/homebrew-core/commit/master/Formula/terraform.rb или
git log master -- Formula/terraform.rb
, если вы клонировали репозиторий локально. - Получите необработанный URL-адрес git с версией фиксации вашей формулы: если ссылка на формулу в github.com имеет вид https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.r, ваш исходный URL-адрес будет: https://raw.githubusercontent.com/Homebrew4brew-core/emebrew4e4e4e4e4e4e4e4e4e4e4e4e4e4eaaaa / / а>
- Установите его с помощью:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Решение
brew extract --version=8.4p1 openssh homebrew/cask
brew install [email protected]
В последней версии [email protected]
есть ошибки после того, как я запустил brew upgrade
, поэтому я успешно вернулся к предыдущей версии указанным выше способом.
В новейшей версии homebrew (0.9.5 на момент написания этой статьи) будет специальный рецепт для версии homebrew keg, которую вы хотите установить. Пример:
$ brew search mongodb
mongodb mongodb24 mongodb26
Тогда просто делай brew install mongodb26
как обычно.
В случае, если вы уже установили последнюю версию, обязательно отключите последнюю версию и укажите желаемую версию: brew unlink mongodb && brew link mongodb26
.
Проблема с homebrew/versions
в том, что кто-то должен иметь эту конкретную версию программного обеспечения, указанную в репозитории, чтобы вы могли ее использовать. Кроме того, поскольку brew versions
больше не поддерживается, требуется другое решение. Для решений, которые указывают на использование brew switch
, это будет работать, только если вы не выполнили brew cleanup
, поскольку версия должна существовать на вашем компьютере.
У меня возникла проблема с желанием установить конкретную старую версию docker-machine
, которая не была указана в homebrew/versions
. Я решил это, используя приведенное ниже, которое также должно работать для любого установленного программного обеспечения brew. В приведенном ниже примере будет использоваться docker-machine
в качестве пакета, который я хочу понизить с версии 0.5.0 до 0.4.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
Найдите конкретный файл формулы (.rb) для вашего пакета. Поскольку я хочу перейти на более раннюю версию
docker-machine
, я вижу файлdocker-machine.rb
.Получите историю версий для этого файла формул. Введите
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 перечислены от самой последней до самой ранней даты).
Получите предыдущую версию файла формулы. Используя тег фиксации из шага № 3 (вы можете использовать первые 6 символов), вы можете получить старую версию файла формулы, используя следующее:
git checkout 5970e1 docker-machine.rb
Удалите текущую версию пакета. Просто запустите обычные команды brew, чтобы удалить текущую версию пакета.
Пример.brew uninstall docker-machine
Установите старую версию пакета. Теперь вы можете просто запустить обычную команду 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
получить последнюю версию и поддерживать ее в дальнейшем.
git log --grep 0.4.1 docker-machine.rb
.
- person Jerry Mindek; 10.11.2015
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
- person akauppi; 24.10.2016
cairo
варево. Ответ @sealocal по какой-то причине показал больше.
- person akauppi; 24.10.2016
Я пробовал большинство решений здесь, и они устарели. Мне пришлось объединить некоторые идеи отсюда с моей собственной работой. В результате я создал сценарий, который поможет мне справиться с тяжелой работой, который вы можете найти здесь
Использование:
brewv.sh formula_name desired_version
Изменить: 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
brew install Formula/flyway.rb
из homebrew-core
каталога? это сработало для меня без использования адреса raw.github..
- person kangkyu; 21.08.2019
Homebrew 2.4.0-93-g634c457
)
- person ijoseph; 21.06.2020
brew log some_package
в порядке
- person iplus26; 05.08.2020
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) - Отключите старую версию
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
- Instead, download it and install from a local file
Вуаля! Теперь вы можете удалить загруженный .rb
файл.
это можно было сделать очень легко для последней версии варево.
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)
В моем случае (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
HOMEBREW_NO_AUTO_UPDATE
и прочтите github.com/Homebrew/brew/issues/1188
- person Wile E.; 04.10.2016
cd
brew --prefix/Homebrew
и git log Library/Taps/homebrew/homebrew-core/Formula/python.rb
- person Iulian Onofrei; 15.01.2018
/Library/Taps
игнорируется.
- person Iulian Onofrei; 15.01.2018
HOMEBREW_NO_AUTO_UPDATE
. Да, не забывайте о вещах, которые вам нужны, пока после не обнаружите, что они вам нужны. xD
- person Josh Habdas; 07.02.2019
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
версию.
sha256
? в моем случае https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
- person simo; 31.03.2019
Если вы не можете найти свою версию с помощью brew search <formula>
, вы также можете попробовать просмотреть журналы фиксации для своей формулы, чтобы найти нужную версию:
вот пример установки старой версии nginx через brew:
см.
nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Оттуда мы можем установить 1.6.3
с URL-адресом sha и необработанным git:
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
Обновите строку 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
Надеюсь, это поможет :)
Я только что скопировал старую версию 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
Вот и все. Может кому пригодится.
Я создал инструмент, чтобы упростить процесс, описанный в этот ответ.
Чтобы найти пакет 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
Скопируйте и запустите данную команду для установки.
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]
Вот как я понижаю 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
Другие ответы здесь отличные, но если вам нужно установить более старую версию пакета и убедиться, что имя пакета изменено, вам понадобится другой подход. Это важно при использовании сценариев (в моем случае сценариев сборки 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
Подробнее об этом я писал здесь.
Я решил вопреки здравому смыслу создать формулу для Maven 3.1.1, которой homebrew/versions
не было. Сделать это:
- Я раздвоил
homebrew/versions
на гитхабе. - Я сделал символическую ссылку с
$(brew --prefix)/Library/Taps
на локальную рабочую копию моей вилки. Я назову этоmy-homebrew/versions
. - Я проверил, указав формулу как
my-homebrew/versions/<formula>
. - Я отправил запрос на перенос на
homebrew/versions
для моей новой формулы.
Ура.
Для версий, которые в настоящее время отсутствуют в формулах приготовления по умолчанию, вы можете легко создать свой собственный кран с помощью инструмента из https://github.com/buildtools-version-taps/homebrew-versions-tap-tool
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
postgresql
- это странно, потому что в какой-то момент у него были отдельные версии в Homebrew, что-то вродеbash
может быть лучшим примером, поскольку оно перешло с 4.x на 5.x в рамках одного и того же имени формулы. См. stackoverflow.com/a/55764594/3794873 - person dragon788   schedule 19.04.2019