Homebrew에 특정 버전의 수식을 어떻게 설치합니까? 예를 들어, 최신 9.0 대신 postgresql-8.4.4입니다.
Homebrew에 특정 버전의 수식을 어떻게 설치합니까? 예를 들어, 최신 9.0 대신 postgresql-8.4.4입니다.
답변:
TLDR : brew install postgresql@8.4.4 자세한 내용은 아래 답변 을 참조하십시오.
* ( 홈 브루와 함께 이전 소프트웨어 버전을 설치 / 사용하기위한보다 철저한 워크 플로를 제공하기 위해 답변을 다시 편집했습니다. 이전 버전을 더 잘 발견 한 경우 언제든지 메모를 추가하십시오. )
가장 간단한 경우부터 시작하겠습니다.
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두 버전 사이를 너무 멀지 않게 전환하려는 경우 사용 이 주로 유용합니다.
특히 대규모 소프트웨어 프로젝트의 경우 특정 소프트웨어의 여러 (잠재적으로 API 호환되지 않는) 주요 버전에 대한 수요가 충분할 것입니다. 2012 년 3 월 현재, 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
백 포트 된 버전 공식이 최신 상태를 유지하는 한이 방법은 구형 소프트웨어를 처리하는 가장 좋은 방법 일 것입니다.
다음과 같은 접근 방식은 대부분 완전성에 대한 것입니다. 둘 다 추출 저장소에서 언데드 수식을 부활 시키려고합니다. 종속성 변경, 수식 사양의 API 변경 또는 다운로드 URL의 변경으로 인해 문제가 발생하거나 작동하지 않을 수 있습니다.
전체 공식 디렉토리는 git 저장소이므로 일반 git 명령을 사용하여 특정 버전을 설치할 수 있습니다. 그러나 이전 버전을 사용할 수있는 커밋을 수행 할 수있는 방법을 찾아야합니다.
a) 역사적인 시대
2011 년 8 월과 2014 년 10 월 사이 에 homebrew는 brew versions각각의 SHA 해시로 사용 가능한 모든 버전을 생성 하는 명령을 받았습니다. 2014 년 10 월 기준으로 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 옛 것과 새로운 것을 바꾸는 당신의 친구입니다.
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우리가 관심있는 커밋입니다.이 커밋은 꽤 오래되었으므로 완전한 홈 브루 설치를 다운 그레이드하려고 시도합니다 (그러면 공식 API가 어느 정도 유효하다는 것이 보장됩니다).
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
git 저장소에 참조를 유지하기 위해 마지막 명령을 건너 뛸 수 있습니다.
참고 사항 : 이전 커밋을 체크 아웃하면 homebrew 설치를 일시적으로 다운 그레이드합니다. 따라서 homebrew의 일부 명령이 최신 버전과 다를 수 있으므로주의해야합니다.
너무 어렵지 않고 자신의 저장소에 업로드 할 수 있습니다. 수하는 데 사용 브루-버전 ,하지만 지금은 중단된다.
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 updateGit 저장소를 설정 해야 할 수도 있습니다 .
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core. 그러면 git checkout 4cce79d -- Formula/go.rb및 을 사용할 수 있습니다 HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
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
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에 대한 추가 설명서를 참조하십시오 .
업데이트 : 2015 년 1 월 5 일

brew install <url>(해야 brew unlink먼저 예를 brew unlink docker)brew switch docker 1.3.3brew 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.rbpackage@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을 다운로드하여 설치합니다
repo 및 repo에서 주석 을 검색하는 단계를 수행 하여이 솔루션을 찾았습니다 .
약간의 연구 끝에 누군가가 희귀 한 포뮬러를 만들어내는 것으로 밝혀졌습니다.
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구문 오류로 실패한 것 같습니다.
rawURL을 잊지 마십시오
homebrew-versions사라졌고 모든 것이 core현재 진행 중이므로 일반적인 경우는 다음과 같습니다 brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. github.com/Homebrew/homebrew-core/commits/master/Formula/…COMMIT 로 이동하여 찾을 수 있습니다 .
설치하려는 패키지 버전과 일치하는 수식 기록에서 수식 및 특정 커밋을 식별하는 전략을 사용할 수 있습니다.
를 눌러 t키보드에서 파일 찾기를 활성화합니다.
아마도 다음과 같이 가장 관련성이 높은 수식을 식별하십시오 Formula/mysql.rb: . 포럼 포럼 파일 위치 : https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb 에있는 History단추 를 클릭하여 개정 히스토리를보십시오 . MySQL 5.7.10에 관심이 있다면 5.7.11 이전의 최신 개정판을 클릭하여 GitHub 커밋으로 이동할 수 있습니다.
참고 : 커밋 기록이 브라우저에로드되지 않으면 GitHub의 제안에 따라 콘솔에서 커밋 기록을 확인해야 할 수도 있습니다. GitHub에서 커밋을 확인하려면 URL에서 위의 커밋 SHA를 바꾸십시오. 또는 아래의 7 단계로 건너 뜁니다.
커밋이 적용된 후 mysql.rb 파일의 소스를 보려면 "보기"버튼을 클릭하십시오.
그런 다음 "Raw"버튼을 클릭하여 원시 소스를보십시오.
URL을 복사하십시오. 또는 mysql.rb파일 이름으로 URL을 직접 작성 하여 수식 및 해당 수식의 특정 버전을 식별하십시오 (아래 URL에서 commmit SHA로 식별).
함께 설치 $ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
참고 :이 답변은 braumeister.org 웹 사이트 제거를 설명하기 위해 업데이트되었습니다. 같은 원칙이 적용되어, braumeister는 초보자에게 친숙한 공식 버전 탐색 방법을 제공했습니다.
다른 답변의 대부분은 이제 더 이상 사용되지 않습니다. 해당 버전은 별도의 수식으로 존재하지 않는 불행하게도 브루 여전히 오래된 버전을 설치하는 내장 방법이없는 (예를 들어 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.comblob/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 5 대신 bash 4.4.23을 설치하는 것입니다.하지만 brew upgrade이후에 수행하면 bash 5는 처음 실행하지 않는 한 맨 위에 설치됩니다 brew pin bash. 대신 처음에 최신을 설치해야합니다, 고정없이 부드럽게 만들려면 brew install bash다음, brew unlink bash위의 스크립트에 따라 원하는 이전 버전을 설치 한 후, 다음 사용 brew switch bash 4.4.23이전 버전으로 심볼릭 링크를 설정합니다. 이제 brew upgradeBash 버전에 영향을 미치지 않아야합니다. 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배쉬 또는 다른 식의 특정 버전을 사용하기 위해.
brew log여분의 옵션 -F이나 --grep옵션이 나에게 실패했습니다.
brew log. git log 메시지를 올바르게 구문 분석하거나 git log해당 저장소 에서 직접 실행해야하기 때문에 새 버전을 작성하는 데 어려움을 겪을 수 없습니다 . 그리고 변경 로그에는 이러한 주요 변경 사항이 언급되지 않은 것 같습니다. 성가신 이상.
External Command구조 내에서 작동해야 할 것 같습니다 . docs.brew.sh/External-Commandsbrewgit log
brew extract사용법 을 찾을 수있는 유일한 장소였습니다 . 감사합니다!
방금 Homebrew를 사용하여 간단한 brew install maven설치된 Maven 3.0.3 이후 Maven 2.2.1로 돌아갔습니다 .
먼저 maven dir을 거기에 두어야합니다.
$ brew unlink maven
추출 탭 명령 사용
$ brew tap 사제 / 버전 '/ usr / local / Library / Taps / homebrew-versions'로 복제 중 ... 원격 : 개체 수 : 590, 완료. 원격 : 객체 압축 : 100 % (265/265) 완료. 원격 : 총 590 (델타 362), 재사용 549 (델타 325) 받는 물건 : 100 % (590/590), 117.49 KiB | 79 KiB / s 완료 델타 해결 : 100 % (362/362) 완료 탭 50 공식
이제 maven2 공식을 설치할 수 있습니다 :
brew install 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) 자바 버전 : 1.6.0_37 Java 홈 : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 기본 로캘 : en_US, 플랫폼 인코딩 : MacRoman OS 이름 : "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>. 특정 OP의 경우 다음과 같습니다.
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
그 이후로 업데이트 된 답변은 @ lance-pollard가 이미 실제 답변으로 게시 한 내용을 추가합니다.
특정 버전의 공식을 설치하는 방법 (이 예제에서 사용 된 공식은 terraform) :
git log master -- Formula/terraform.rb리포지토리를 로컬로 복제 한 경우 github 기록에서 커밋 버전을 가져옵니다 .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공식이 현재 bash 5를 설치하기 때문에 유용한 예인 이전 bash 4.4.23 설치를 보여줍니다 .
brew install bashbrew unlink bashbrew switch bash 4.4.23버전에 대한 심볼릭 링크를 설정하는 데 사용 하십시오.brew upgrade최신 버전을 먼저 설치하지 않고 이전 버전을 설치 한 후 수행 한 경우 , 처음 실행하지 않는 한 최신 버전이 이전 버전을 방해하는 설치됩니다.brew pin bash .
이 단계는 잊어 버리기 쉽고 나중에 고정되지 않는 버전에 고정 될 수 있으므로 고정을 피하십시오 (Shellshock / etc 참조). 이 설정을 사용하면 brew upgradeBash 버전에 영향을 미치지 않아야하며 언제든지 실행할 수 있습니다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에 넣거나 기본 쉘로 설정하십시오.
최신 버전의 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. 아래를 사용 하여이 문제를 해결했으며 양조 설치 소프트웨어에서도 작동합니다. 아래 예제 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. 이 파일에 대한 전체 커밋 히스토리가 표시됩니다. 다음과 같은 출력이 표시됩니다.
...더
커밋 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
저자 : BrewTestBot
날짜 : Thu 11 월 5 일 16:14:18 2015 +0000
도커 기계 : 0.5.0 병을 업데이트하십시오.
커밋 8f615708184884e501bf5c16482c95eff6aea637
저자 : Vincent Lesierse
날짜 : 화 10 월 27 일 22:25:30 2015 +0100
도커 머신 0.5.0
docker-machine을 0.5.0으로 업데이트했습니다.
# 45403을 닫습니다.
서명자 : Dominyk Tiller
커밋 5970e1af9b13dcbeffd281ae57c9ab90316ba423
저자 : BrewTestBot
날짜 : 월요일 9 월 21 일 14:04:04 2015 +0100
도커 기계 : 0.4.1 병을 업데이트하십시오.
커밋 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
저자 : BrewTestBot
날짜 : 일요일 8 월 16 일 09:05:56 2015 +0100
도커 기계 : 0.4.1 병을 업데이트하십시오.
...더
까다로운 부분은 원하는 특정 버전에 대한 최신 커밋을 찾는 것입니다. 위에서,이 커밋 태그로 최신 0.4.1 버전이 커밋되었음을 알 수 있습니다 commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. 이 시점 위의 커밋은 버전 0.5.0부터 시작합니다 (git log 항목은 최신 날짜부터 가장 빠른 날짜까지 나열 됨).
수식 파일의 이전 버전을 가져옵니다. 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.
/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, 버전 관리자를 사용하지 않는 NodeJS 사용자는 이전 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..주소 를 사용하지 않고 나를 위해 일했다
이 중 어느 것도 실제로 내 경우 (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/issues/1188
cd brew --prefix /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>수식의 커밋 로그를 검토하여 원하는 버전을 찾을 수도 있습니다.
brew를 통해 이전 버전의 nginx를 설치하는 예는 다음과 같습니다.
보다 nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
거기 1.6.3에서 sha와 raw git url로 설치할 수 있습니다 :
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
현재 특정 수식 버전을 설치하는 기존 방법은 더 이상 사용되지 않습니다. 그래서 우리가 사용해야 할 것 같습니다 brew edit [formula]. 예를 들어 (예 :에 필요한) 62.1버전 을 설치하려고합니다 . 그런 다음에icu4cpostgresql 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
Library / Formula / postgresql.rb 8 행에서
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
그리고 9 호선의 MD5는
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. 이것을하기 위해:
homebrew/versionsgithub를 포크 했다.$(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.
나는 이 답변 에서 규정 된 프로세스를 용이하게 하는 도구 를 만들었다 .
pkgversion 패키지를 찾으려면 a.b.c다음을 실행하십시오.
$ brew-install-specific pkg@a.b.c
여기 pkg에는 주어진 버전과 GitHub URL이 언급 된 홈 브루 수식 에 대한 커밋이 나열됩니다 .
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
제공된 명령을 복사하고 실행하여 설치하십시오.
postgresqlHomebrew에 별도의 버전이 있었기 때문에 이상한bash수식입니다. 같은 수식 이름 내에서 4.x에서 5.x로 이동했기 때문에 더 좋은 예가 될 수 있습니다. 참조 stackoverflow.com/a/55764594/3794873