Homebrew 설치 특정 버전의 수식

installation versioning homebrew


Homebrew에 특정 버전의 수식을 어떻게 설치합니까? 예를 들어, 최신 9.0 대신 postgresql-8.4.4입니다.




Answer 1 Debilski


TLDR : brew install postgresql@8.4.4 자세한 내용은 아래 답변 을 참조하십시오.


* ( 홈 브루와 함께 이전 소프트웨어 버전을 설치 / 사용하기위한보다 철저한 워크 플로를 제공하기 위해 답변을 다시 편집했습니다. 이전 버전을 더 잘 발견 한 경우 언제든지 메모를 추가하십시오. )

가장 간단한 경우부터 시작하겠습니다.

1) 버전이 이미 설치되어 있는지 확인 (활성화되지는 않음)

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 를 사용 하면 두 버전 사이를 너무 멀지 않게 전환하려는 경우에 유용합니다.

2) 버전이 탭으로 제공되는지 확인

특히 대규모 소프트웨어 프로젝트의 경우 특정 소프트웨어의 여러 (잠재적으로 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를 사용 하여 제거 brew untap homebrew/versions 제거하십시오 . 다음은 동일합니다.

$ brew tap homebrew/versions
$ brew install postgresql8

백 포트 된 버전 공식이 최신 상태를 유지하는 한이 방법은 구형 소프트웨어를 처리하는 가장 좋은 방법 일 것입니다.

3) 과거의 수식을 사용해보십시오.

다음의 접근 방식은 대부분 완전성에 대해 나열됩니다. 둘 다 추출 저장소에서 언데드 공식을 부활 시키려고합니다. 종속성 변경, 수식 사양의 API 변경 또는 다운로드 URL의 변경으로 인해 문제가 발생하거나 작동하지 않을 수 있습니다.

전체 공식 디렉토리는 git 저장소이므로 일반 git 명령을 사용하여 특정 버전을 설치할 수 있습니다. 그러나 이전 버전을 사용할 수있는 커밋을 수행 할 수있는 방법을 찾아야합니다.

a) 역사적인 시대

20118 월과 2014 년 10 월 사이 에 homebrew는 brew versions 명령을 사용하여 사용 가능한 모든 버전을 해당 SHA 해시로 분리했습니다. 2014 년 10 월 기준으로, brew tap homebrew/boneyard 를 사용하려면 먼저 사용해야합니다. 탭의 이름에서 알 수 있듯이 아마도 최후의 수단으로만해야합니다.

E.g.

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

보시다시피, 사용하지 않는 것이 좋습니다. 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 -SLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb '8.4.4' 에서 문자열 '8.4.4' 가 추가되거나 제거 된 모든 커밋을 찾습니다 . 결과적으로 두 개의 커밋이 발생합니다.

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의 일부 명령이 최신 버전과 다를 수 있으므로주의해야합니다.

4) 수동으로 수식 작성

너무 어렵지 않고 자신의 저장소에 업로드 할 수 있습니다. 수하는 데 사용 브루-버전 ,하지만 지금은 중단된다.

A.) 보너스 : 피닝

postgresql과 같은 특정 버전을 유지하고 자연 brew update; brew upgrade 를 할 때 업데이트되지 않도록하십시오 . 양조 업그레이드 절차에서 수식을 고정 할 수 있습니다 .

$ brew pin postgresql

고정 된 수식은 /usr/local/Library/PinnedKegs/ 나열되어 있으며 최신 변경 및 업데이트를 가져 오려면 다시 고정 해제 할 수 있습니다 .

$ brew unpin postgresql



Answer 2 Bijan


간단한 워크 플로우

Homebrew / versions는 더 이상 사용되지 않으므로 Homebrew / core는 새로운 이름 형식으로 여러 버전의 수식을 지원합니다.

postgresql 9.5와 같은 특정 버전을 설치하려면 다음을 실행하십시오.

$ brew install postgresql@9.5

사용 가능한 버전을 나열하려면 @로 검색을 실행하십시오.

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6



Answer 3 Trevor Burnham


이제 이전에 설치 한 이전 버전의 공식을 훨씬 쉽게 설치할 수 있습니다. 간단히 사용

brew switch [formula] [version]

예를 들어 Node.js 0.4.12와 0.6.5를 정기적으로 번갈아 사용합니다.

brew switch node 0.4.12
brew switch node 0.6.5

brew switch 는 심볼릭 링크를 변경 하기 때문에 매우 빠릅니다. 외부 명령 아래의 Homebrew Wiki에 대한 추가 설명서를 참조하십시오 .




Answer 4 Vishal


업데이트 : 2015 년 1 월 5 일

  • 원하는 소프트웨어 및 버전의 커밋 히스토리를 찾으십시오. 예를 들어 docker 버전 1.4.1에서 1.3.3으로 전환해야합니다 : https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • 이 버튼으로 파일을 봅니다.enter image description here
  • Raw 버튼을 클릭하십시오 :List item
  • 주소 표시 줄에서 URL (이 예에서는 docker.rb url)을 복사하십시오.
  • 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



Answer 5 Lance Pollard


@halfcube의 제안을 따르면, 이것은 실제로 잘 작동합니다.

  1. https://github.com/Homebrew/homebrew-core/tree/master/Formula 에서 원하는 라이브러리를 찾으십시오.
  2. 그것을 클릭하십시오 : https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. "기록"버튼을 클릭하여 이전 커밋을 확인하십시오. https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. "postgresql : 버전을 8.4.4로 업데이트", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. "원시"링크를 클릭하십시오 : https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb