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 update
Git 저장소를 설정 해야 할 수도 있습니다 .
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.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을 다운로드하여 설치합니다
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
구문 오류로 실패한 것 같습니다.
raw
URL을 잊지 마십시오
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.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 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 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
배쉬 또는 다른 식의 특정 버전을 사용하기 위해.
brew log
여분의 옵션 -F
이나 --grep
옵션이 나에게 실패했습니다.
brew log
. git log 메시지를 올바르게 구문 분석하거나 git log
해당 저장소 에서 직접 실행해야하기 때문에 새 버전을 작성하는 데 어려움을 겪을 수 없습니다 . 그리고 변경 로그에는 이러한 주요 변경 사항이 언급되지 않은 것 같습니다. 성가신 이상.
External Command
구조 내에서 작동해야 할 것 같습니다 . docs.brew.sh/External-Commandsbrew
git 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 bash
brew unlink bash
brew switch bash 4.4.23
버전에 대한 심볼릭 링크를 설정하는 데 사용 하십시오.brew upgrade
최신 버전을 먼저 설치하지 않고 이전 버전을 설치 한 후 수행 한 경우 , 처음 실행하지 않는 한 최신 버전이 이전 버전을 방해하는 설치됩니다.brew pin bash
.
이 단계는 잊어 버리기 쉽고 나중에 고정되지 않는 버전에 고정 될 수 있으므로 고정을 피하십시오 (Shellshock / etc 참조). 이 설정을 사용하면 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에 넣거나 기본 쉘로 설정하십시오.
최신 버전의 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
버전 을 설치하려고합니다 . 그런 다음에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
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/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
version 패키지를 찾으려면 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
제공된 명령을 복사하고 실행하여 설치하십시오.
postgresql
Homebrew에 별도의 버전이 있었기 때문에 이상한bash
수식입니다. 같은 수식 이름 내에서 4.x에서 5.x로 이동했기 때문에 더 좋은 예가 될 수 있습니다. 참조 stackoverflow.com/a/55764594/3794873