installation - specific - install homebrew




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

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


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

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

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

$ brew install [email protected]

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

$ brew search [email protected]
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]

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

Найдите локальный ролик git dir или клон Homebrew / homebrew-core локально

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

ИЛИ ЖЕ

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

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

git log master -- Formula/flyway.rb

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

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


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

$ brew search mongodb
mongodb    mongodb24  mongodb26

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

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


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

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


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

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

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

:)


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

  • Найдите историю фиксации нужного программного обеспечения и версии. например, мне нужно переключиться с докеров версии 1.4.1 на 1.3.3: https://github.com/Homebrew/homebrew-core/commits/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

По строкам предложения @ 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/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Нажмите ссылку «raw»: https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

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

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

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

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

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

    ...more 

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

        docker-machine: update 0.5.0 bottle.

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

        docker-machine 0.5.0

        Updated docker-machine to 0.5.0

        Closes #45403.

        Signed-off-by: Dominyk Tiller 

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

        docker-machine: update 0.4.1 bottle.

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

        docker-machine: update 0.4.1 bottle.

    ...more

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

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

    git checkout 5970e1 docker-machine.rb

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

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


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

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

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

Я нашел это решение, начав выполнять шаги по поиску репо и comment в репо.

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

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

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

Я просто использовал 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 реорганизовал свое репо. Обновлен этот ответ для учета этого изменения.


Ни один из них действительно не работал на мой случай (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

Обновление по строке библиотеки / Formula / postgresql.rb 8 до

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

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


Я решил, по моему мнению, создать формулу для 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для моей новой формулы.

Ура.