Як встановити конкретну версію формули на домашній мові? Наприклад, postgresql-8.4.4 замість останнього 9.0.
Як встановити конкретну версію формули на домашній мові? Наприклад, postgresql-8.4.4 замість останнього 9.0.
Відповіді:
TLDR: brew install postgresql@8.4.4
Дивіться відповідь нижче для отримання більш детальної інформації.
* ( Я відредагував свою відповідь, щоб дати більш ретельний робочий процес для встановлення / використання старих версій програмного забезпечення з домашньою мовою. Сміливо додайте примітку, якщо ви знайшли стару версію краще. )
Почнемо з найпростішого випадку:
Коли homebrew встановлює нову формулу, вона ставить її у варіантний каталог, як /usr/local/Cellar/postgresql/9.3.1
. Тоді лише символічні посилання на цю папку встановлюються у всьому світі. В принципі, це дозволяє досить легко переходити між двома встановленими версіями. (*)
Якщо ви користуєтеся домашньою мовою довше і ніколи не видаляєте старіші версії (наприклад, наприклад 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
в основному корисно, коли потрібно переключитися між двома версіями не надто далеко один від одного.
Особливо, що стосується великих програмних проектів, дуже ймовірно, що існує достатньо високий попит на кілька (потенційно несумісних з API) основних версій певного програмного забезпечення. Станом на березень 2012 року, Homebrew 0.9 забезпечує механізм цього: brew tap
& сховище версій домашньої версії .
Це сховище версій може містити резервні версії старих версій для кількох формул. (Переважно лише великі та відомі, але, звичайно, вони також матимуть декілька формул для 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
Поки формули підтримуваних версій залишаються в курсі останніх, такий підхід, мабуть, є найкращим способом боротьби зі старішим програмним забезпеченням.
Наступні підходи перераховані переважно для повноти. Обидва намагаються воскресити певну форму нежиті з сховища варіння. Через змінені залежності, зміни 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
Як бачите, він не радить його використовувати. 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
твій друг, щоб змінити між старим і новим.
б) доісторичні часи
Для особливих потреб ми можемо також спробувати власну копання через репо-домашню мову.
$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb
git log -S
шукає всі коміти, в яких рядок '8.4.4'
було додано або видалено у файлі Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. У результаті ми отримуємо два коміти.
commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date: Sun Sep 19 18:03:41 2010 +0300
Update PostgreSQL to 9.0.0.
Signed-off-by: Adam Vandenberg
commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date: Sun May 16 12:35:18 2010 +0200
postgresql: update version to 8.4.4
Очевидно, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
чи є зацікавлення, яке нас зацікавило. Оскільки ця фіксація досить давня, ми спробуємо знизити повну інсталяцію домашньої версії (таким чином, API формули більш-менш гарантовано є дійсним):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Ви можете пропустити останню команду, щоб зберегти посилання у вашому сховищі git.
Одне зауваження: перевіряючи старіший документ, ви тимчасово знижуєте інсталяцію домашнього перекладу. Отже, ви повинні бути обережними, оскільки деякі команди на домашньому мові можуть відрізнятися від останньої версії.
Це не надто важко, і ви можете потім завантажити його у власне сховище. Раніше було Homebrew-Versions , але зараз це припинено.
Якщо ви хочете зберегти певну версію, скажімо, 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
.
brew update
встановити його Git repo.
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
, тоді ви можете використовувати git checkout 4cce79d -- Formula/go.rb
і HOMEBREW_NO_AUTO_UPDATE=1 brew install go
.
Тепер, коли Homebrew / версії застаріли, Homebrew / core підтримує кілька версій формул з новим форматом іменування.
Щоб встановити конкретну версію, наприклад, postgresql 9.5, ви просто запустите:
$ brew install postgresql@9.5
Щоб переглянути список доступних версій, запустіть пошук за допомогою @:
$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔ postgresql@9.4 postgresql@9.5 postgresql@9.6
fatal: Not a git repository (or any of the parent directories): .git
. Я cd
замість цього я просто впадаю в каталог (без FORMULANAME.rb), тоді роблюgit checkout 120938
cd /usr/local
спочатку.
brew unlink FORMULANAME
brew versions <formula>
більше не підтримується
brew link --force postgresql@9.5
. Якщо у вас вже встановлена нова версія та ви хочете, щоб старіша версія була за замовчуванням, вам знадобиться і --overwrite
там.
Зараз існує набагато простіший спосіб встановити старішу версію формули, яку ви раніше встановили. Просто використовуйте
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 у розділі Зовнішні команди .
Оновлення: 15.01.2015
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
brew install <url>
, brew unlink <formulaname>
. В іншому випадку це найпростіший і стисліший спосіб (поки що) перейти до конкретної версії формули.
Raw
кнопку на якому файлі ?!
brew log <formula>
Відповідно до пропозиції @ halfcube, це працює дуже добре:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
package@version
git log master -- Formula/PACKAGENAME.rb
щоб отримати історію фіксації, перевірити правильну фіксацію, а потім запустіть brew install Formula/PACKAGENAME.rb
її встановити.
brew unlink
ще brew install
до іншої версії.
mxcl
?
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.
Будь-які ідеї?
Я виявив краще альтернативне рішення, ніж інші складні рішення.
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
здавалося, не вдається із синтаксичними помилками.
raw
в URL
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 / ... .
Ви можете використовувати стратегію ідентифікації формули та певного комітету в історії формули, який відповідає версії пакету, який ви хочете встановити.
Перейдіть на сторінку https://github.com/Homebrew/homebrew-core
Натисніть t
на клавіатурі, щоб активувати пошук файлів.
Визначте формулу, яка виглядає найбільш релевантною, можливо: Formula/mysql.rb
переведення вас до файлу форуму: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .
Перегляньте історію редагування, натиснувши History
кнопку, яка знаходиться за адресою https://github.com/Homebrew/homebrew-core/commits/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
ПРИМІТКА. Цю відповідь було оновлено з метою видалення веб-сайту braumeister.org. Цей же принцип застосовується, braumeister просто запропонував зручним для початківців способом навігації у версіях формул.
Більшість інших відповідей на сьогодні застаріли. На жаль, у Homebrew досі немає вбудованого способу встановлення застарілої версії, якщо тільки ця версія не існує як окрема формула (наприклад python@2
, postgresql@9.4
…).
На щастя, для інших формул існує набагато простіший спосіб, ніж звичний безлад, який раніше був необхідним. Ось повні інструкції:
Шукайте правильну версію в журналах:
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-адресу:
github.com
наraw.githubusercontent.com
blob/master
хеш-коміт, який ми знайшли на першому кроці.Встановіть потрібну версію, замінивши master
в раніше знайденій URL-адресою хеш-код, наприклад:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
(Останній крок може зажадати запуску brew unlink ‹formula›
раніше.)
Якщо ви скопіювали хеш комісій, який хочете використовувати, ви можете використовувати щось подібне до цього прикладу, щоб встановити цю версію, замінивши значення та bash
з вашим хешем фіксування та потрібною формулою.
BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
-e '/^From: /s///' \
-e 's/github.com/raw.githubusercontent.com/' \
-e 's%blob/%%' \
-e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install
У цьому прикладі встановлюється bash 4.4.23 замість bash 5, хоча якщо ви виконали brew upgrade
після цього, тоді bash 5 буде встановлений поверх, якщо ви не вперше виконали brew pin bash
. Замість того, щоб зробити це більш гладким БЕЗ закріплення, спочатку слід встановити останню версію brew install bash
, а brew unlink bash
потім встановити старішу версію, яку ви хочете, відповідно до вищезазначеного сценарію, а потім скористатися, brew switch bash 4.4.23
щоб встановити посилання на стару версію. Тепер це brew upgrade
не повинно впливати на вашу версію Bash. Ви можете brew switch bash
отримати список версій, на які можна перейти.
Ще одним способом досягнення тієї ж мети є:
brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install bash@4.4.23
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.
Це створює formula@version
власний кран, який ви можете встановити відповідно до наведеного вище прикладу. Мінус полягає в тому, що вам, мабуть, ще потрібно, brew unlink bash
а потім brew link bash@4.4.23
для того, щоб використовувати вашу конкретну версію Bash або будь-яку іншу формулу.
brew log
тому будь-які додаткові -F
чи --grep
параметри для мене не вдалися.
brew log
. Мені не можна заважати писати нову версію зараз, тому що це вимагає належного розбору повідомлення журналу git або альтернатива роботи git log
безпосередньо у відповідному сховищі. І цей журнал змін навіть не згадує про цю надзвичайну зміну. Поза дратує.
External Command
може знадобитися діяти в структурі, brew
щоб повернути такий тип git log
фільтрації. docs.brew.sh/External-Commands
brew extract
використання, дякую!
Я просто використав Homebrew, щоб повернутися до Maven 2.2.1 з простого часу brew install maven
встановленого Maven 3.0.3.
Спочатку ви повинні залишити там Maven dir
$ варити від'єднати maven
Використовуйте команду заварювання крана
$ brew tap homebrew / версії Клонування в '/ usr / local / Library / Taps / homebrew-version' ... віддалений: Підрахунок об’єктів: 590, виконано. віддалений: стиснення об’єктів: 100% (265/265), виконано. віддалений: Всього 590 (дельта 362), повторно використаний 549 (дельта 325) Приймаючі об'єкти: 100% (590/590), 117,49 Кб | 79 Кб / с, виконано. Розв’язування дельти: 100% (362/362), виконано. Формула 50
Тепер ви можете встановити формулу maven2:
$ brew встановити maven2 ==> Завантаження http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz #################################################################### ####################### 100,0% /usr/local/Cellar/maven2/2.2.1: 10 файлів, 3.1M, вбудовано за 6 секунд
$ mvn - конверсія Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700) Версія Java: 1.6.0_37 Домашня сторінка Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Локаль за замовчуванням: en_US, кодування платформи: MacRoman Назва ОС: "mac os x" версія: "10.7.4" арка: "x86_64" Сім'я: "mac"
Редагувати:
Ви також можете просто brew switch maven 2.2.1
перейти на іншу версію.
Редагувати: Проект Apache Maven реорганізував їх репо. Оновили цю відповідь, щоб врахувати цю зміну.
На основі робочого процесу, описаного в @tschundeee та оновлення @ Debilski 1 , я автоматизував процедуру і додав очищення в цей сценарій .
Завантажте його , поставте на свій шлях і brewv <formula_name> <wanted_version>
. Для конкретної ОП це було б:
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
Оновлена відповідь, оскільки це додає до того, що @ lance-pollard вже розмістив як робочу відповідь.
Як встановити конкретну версію формули (формула використовується в цьому прикладі terraform
):
git log master -- Formula/terraform.rb
якщо ви клонували репо на локальному рівні.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
На жаль, у Homebrew досі немає очевидного вбудованого способу встановлення старої версії.
На щастя, для більшості формул існує набагато простіший спосіб, ніж звичний безлад, який раніше був необхідним. Ось повні інструкції, використовувані bash
як приклад:
brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install bash@4.4.23
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.
Це створює formula@version
ваш власний кран, який ви можете встановити відповідно до наведеного вище прикладу. Важливе зауваження - це, ймовірно, вам потрібно, brew unlink bash
якщо раніше ви встановили стандартну / останню версію формули, а потімbrew link bash@4.4.23
для того, щоб використовувати вашу конкретну версію Bash (або будь-яку іншу формулу, де встановлена остання та старіша версія).
Потенційним недоліком цього методу є те, що ви не можете легко перемикатися між версіями і назад, тому що відповідно до brew
ним це "інша формула".
Якщо ви хочете мати можливість використовувати brew switch $FORMULA $VERSION
вам слід скористатися наступним методом.
Цей приклад показує встановлення старшого bash 4.4.23, корисний приклад, оскільки bash
формула наразі встановлює bash 5.
brew install bash
brew unlink bash
brew switch bash 4.4.23
для налаштування символьних посилань на вашу версіюЯкщо ви виконали brew upgrade
після встановлення старішої версії без встановлення останньої спочатку, то остання встановила б клобірування вашої старшої версії, якщо ви не вперше виконалиbrew pin bash
.
Крок тут ВИМОГА фіксація, тому що про це легко забути, і ви можете прив’язати до версії, яка стає небезпечною у майбутньому (див. Shellshock / тощо). За допомогою цієї установки a brew upgrade
не повинно впливати на вашу версію Bash, і ви завжди можете запуститиbrew switch bash
список версій, на які можна перейти.
Скопіюйте та вставте та відредагуйте export
рядки з фрагмента коду нижче, щоб оновити потрібну назву версії та формули, потім скопіюйте та вставте решта як є, і вони використовуватимуть ці змінні, щоб зробити магію.
# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME
Коли ви впевнені, що версія існує у формулі, ви можете скористатись нижче:
# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')
Після того, як ви експортували хеш комітів, який ви хочете використовувати, ви можете використовувати його для встановлення цієї версії пакета.
brew info $BREW_FORMULA_NAME \
| sed -n \
-e '/^From: /s///' \
-e 's/github.com/raw.githubusercontent.com/' \
-e 's%blob/%%' \
-e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install
Дотримуйтесь вказівок у формулі виводу, щоб помістити його у свій PATH або встановити його як оболонку за замовчуванням.
У новітній версії домашньої кави (0,9,5 станом на цей текст) буде визначений рецепт тієї версії саморобного бочка, яку ви хочете встановити. Приклад:
$ 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
. Я вирішив це за допомогою наведеного нижче, який також повинен працювати для будь-якого встановленого програмного забезпечення. Наведений нижче приклад використовуватиме docker-machine
як пакет, який я хочу зменшити з версії 0.5.0 до 0.4.1.
Перейдіть у свій домашній Formula
каталог.
Ви можете визначити це, запустивши brew info [any package name]
. Наприклад, brew info docker-machine
дає мені рядок, який показує мені шлях - /usr/local/Cellar/docker-machine/0.5.0
. Це говорить мені, що на моїй машині встановлено домашню мову/usr/local
а мій Formula
каталог знаходиться за замовчуванням у/usr/local/Library/Formula
Знайдіть конкретний файл формули (.rb) для вашого пакету.
Оскільки я хочу знизити версію docker-machine
, я можу побачити docker-machine.rb
файл.
Отримайте історію версій цього файлу формули . Введіть git log docker-machine.rb
. Тут буде вказано повну історію фіксації цього файлу. Ви побачите такий вихід:
... більше фіксувати 20c7abc13d2edd67c8c1d30c407bd5e31229cacc Автор: BrewTestBot Дата: Чт 5 листопада 16:14:18 2015 +0000 докер-машина: оновлення пляшки 0,5,0. фіксувати 8f615708184884e501bf5c16482c95eff6aea637 Автор: Вінсент Лесьєрсе Дата: Вт 27 жовтня 22:25:30 2015 +0100 докер-машина 0.5.0 Оновлено докер-машину до 0,5.0 Закривається # 45403. Підписався: Доміник Тіллер фіксувати 5970e1af9b13dcbeffd281ae57c9ab90316ba423 Автор: BrewTestBot Дата: понеділок, 21 вересня 14:04:04 2015 +0100 докер-машина: оновлення пляшки 0,4,1. зробити 18fcbd36d22fa0c19406d699308fafb44e4c8dcd Автор: BrewTestBot Дата: Вс 16 серпня 09:05:56 2015 +0100 докер-машина: оновлення пляшки 0,4,1. ... більше
Складна частина полягає в тому, щоб знайти останню версію конкретної версії, яку ви хочете. У наведеному вище, я можу сказати , остання версія 0.4.1 була здійснена з цієї фіксацією тега: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. Коміти вище цього пункту починають використовувати версію 0.5.0 (записи журналу git перераховані від останньої до найдавнішої дати).
Отримайте попередню версію файлу формул. Використовуючи тег фіксації з кроку №3 (можна використовувати перші 6 символів), ви можете отримати старішу версію файлу формули, використовуючи наступне:
git checkout 5970e1 docker-machine.rb
Видаліть поточну версію пакета.
Просто запустіть звичайні команди варити, щоб видалити поточну версію пакету.
Вих.brew uninstall docker-machine
Встановіть більш стару версію пакета.
Тепер ви можете просто запустити звичайну команду встановлення варіння, і вона встановить формулу, яку ви маєте на замовлення. Вих.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
.
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
cairo
заварки. @ відповідь sealocal чомусь показала більше.
Моя ситуація: postgresql
було модернізовано з 11 до 12 випадково. Я хочу зберегти 11.
brew services stop postgresql
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/postgresql@11.log
(зверніть увагу на @ 11).
brew postgresql-upgrade-database
). Ця відповідь не корисна майже для будь-якої іншої формули.
brew postgresql-upgrade-database
є, ну, для оновлення . Моя відповідь стосується використання старшої версії Postgres. Просто переключити двійкові файли не вийде.
nvm
, FYI, мені пощастило використовувати цю техніку для старих версій LTS. Принаймні під час написання v10 та v12 повинні бути доступні, наприклад brew install node@12
formulae.brew.sh/formula/node
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
АБО
git clone git@github.com:Homebrew/homebrew-core.git
git log master -- Formula/flyway.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb
brew install Formula/flyway.rb
з homebrew-core
каталогу? він працював для мене без використання raw.github..
адреси
це можна зробити дуже просто для останньої версії заварки.
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 <dominyktiller@gmail.com> Date: Thu Jun 30 17:42:18 2016 +0100 python: clarify pour_bottle reason commit cb3b29b824a264895434214e191d0d7ef4d51c85 Author: BrewTestBot <brew-test-bot@googlegroups.com> Date: Wed Jun 29 14:18:40 2016 +0100 python: update 2.7.12 bottle. commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0 Author: Rakesh <rakkesh@users.noreply.github.com> Date: Wed Jun 29 10:02:26 2016 +0530 python 2.7.12 Closes #2452. Signed-off-by: Tim D. Smith <git@tim-smith.us> commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9 Author: BrewTestBot <brew-test-bot@googlegroups.com> Date: Fri Jun 17 20:14:36 2016 +0100 python: update 2.7.11 bottle. ...
Я хочу версію, 2.7.11
щоб мій хеш був cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(або cf5da05
коротко). Далі я перевіряю цю версію та встановлюю формулу python
:
git checkout cf5da05
brew install python
Нарешті, очистіть:
git checkout master
HOMEBREW_NO_AUTO_UPDATE
і читайте github.com/Homebrew/brew/isissue/1188
cd
заварюють/Homebrew
git log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Taps
ігнорується.
HOMEBREW_NO_AUTO_UPDATE
. Так, не забудьте про речі не потрібно до тих пір , після того, як ви виявите , що вам потрібно це. xD
HOMEBREW_NO_INSTALL_CLEANUP
чи це не те, що потрібно пам’ятати?
Якщо ви не можете знайти свою версію за допомогою brew search <formula>
, ви також можете спробувати перейти до журналів фіксів для вашої формули, щоб знайти потрібну версію:
ось приклад встановлення старішої версії nginx через brew:
подивитися nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Звідти ми можемо встановити 1.6.3
URL-адресу sha та raw git:
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
В даний час застарілі способи встановлення конкретних версій формул застаріли. Тож здається, що нам доводиться користуватися 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
Оновлення у рядку 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
Сподіваюся, що це допомагає :)
Я щойно скопіював у /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
не було. Зробити це:
homebrew/versions
на github.$(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 FORMULA@Major.minor
.
Я створив інструмент для полегшення процесу, прописаного в цій відповіді .
Щоб знайти пакет pkg
з версією a.b.c
, запустіть:
$ brew-install-specific pkg@a.b.c
У цьому списку буде перераховано pkg
формули домашнього перекладу, які згадують про дану версію разом з їх URL-адресами GitHub.
Matching versions:
1. pkg: update a.b.c bottle.
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
Select index:
Перевірте фіксацію за вказаною URL-адресою та введіть індекс вибраного коміксу.
Select index: 2
Run:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb
Скопіюйте та запустіть задану команду для встановлення.
postgresql
є дивним, оскільки він мав окремі версії в Homebrew в один момент, щось на кшталтbash
може бути кращим прикладом, оскільки він перейшов від 4.x до 5.x в межах однієї і тієї ж назви формули. Див stackoverflow.com/a/55764594/3794873