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