Домашний иврит установить конкретную версию формулы

installation versioning homebrew


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




Answer 1 Debilski


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

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

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

# 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 интересует нас. Поскольку этот коммит довольно старый, мы попытаемся понизить версию полной установки homebrew (таким образом, API формулы более или менее гарантированно будет действительным):

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

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

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

4)Вручную написать формулу

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

A.)Бонус:Пиннинг

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

$ brew pin postgresql

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

$ brew unpin postgresql



Answer 2 Bijan


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

Теперь,когда Homebrew/versions устарел,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



Answer 3 Trevor Burnham


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

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




Answer 4 Vishal


Обновление:1/15/2015

  • Найти историю коммитов желаемого программного обеспечения и версии. например, мне нужно переключиться с докера версии 1.4.1 на 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Просмотрите файл с помощью этой кнопки:enter image description here
  • Нажмите кнопку Raw:List item
  • Скопируйте URL (в этом примере URL-адрес docker.rb) из адресной строки.
  • brew install <url> (возможно, сначала нужно brew unlink , например, brew unlink docker )
  • brew switch docker 1.3.3
  • Вернитесь к 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



Answer 5 Lance Pollard


В соответствии с предложением @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