개요
Homebrew
는 탭(Tap)을 통해서 배포 패키지를 정의하고, 첫 설치시에 기본적으로 2개의 메인 탭을 등록하여 패키지를 제공한다. 기본 제공되는 탭 이외에 다양한 사용자들이 생성, 관리하는 탭을 등록함으로써 더 많은 패키지를 Homebrew
시스템을 통해서 사용할 수 있게 된다.그렇다면, 기업 등의 특정 망 내부 사용자만 이용하도록 할 수 있는가? 물론 가능하다. 탭은
git
을 통해서 제공되기 때문에 git
자체가 가지고 있는 인증 시스템을 그대로 사용할 수 있다. 즉, ssh 키 등을 통해서 권한 제어가 가능하므로 private 탭의 제공이 가능하다.탭 만들기
Homebrew
의 탭을 생성하려면 git 리포지토리를 네이밍 룰에 맞춰서 생성하면 된다.- <namespace>/homebrew-<tap-name>
이 리포지토리에 Formula 또는 Cask 파일을 업로드하면 바로 사용할 수 있다.
예제로, Private Bitbucket 서버에서
~daeho.ro/homebrew-test
리포지토리를 생성했다. 해당 서버는 내부망에 위치하므로 외부 접근이 불가능하고, 권한 처리가 되어있어 ssh 키를 통해서 인증되지 않은 사용자도 사용할 수가 없다.
탭 등록하기
탭을 이용하기 위해서는
Homebrew
에 해당 탭을 등록해야 한다.brew tap <namespace>/<tap-name> # github가 아닌 경우에는 git 주소를 추가한다. brew tap <any-name> <repository-url>
탭은 기본적으로 github에 위치하고 있다고 가정하고 있으며, 그 외의 서비스에 구축했다면 url을 추가해주면 된다. 위의 예제로 만든 탭을 등록하기 위해서 다음 명령어를 입력했다. (도메인은 숨김)
brew tap private/test ssh://git@example.com/~daeho.ro/homebrew-test.git ==> Tapping private/test Cloning into '/opt/homebrew/Library/Taps/private/homebrew-test'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. Tapped (13 files, 4.5KB).
url을 통해서 탭을 등록하는 경우에는 탭 이름에 제약이 사라지므로 원하는대로 등록할 수 있지만, 중복의 가능성을 염두에 두어야한다. 등록된 탭을 확인해보자.
brew tap ... private/test
탭 이용하기
이제 탭에 원하는 Formula 또는 Cask를 업로드하고 사용해보자.
ls --tree . ├── Casks │ └── private-software.rb └── README.md

그러면 탭 정보에 Cask가 등록되고, 이를 설치할 수 있게 된다.
brew tap-info private/test --json [ { "name": "private/test", "user": "private", "repo": "test", "path": "/opt/homebrew/Library/Taps/private/homebrew-test", "installed": true, "official": false, "formula_names": [ ], "cask_tokens": [ "private/test/private-software" ], "formula_files": [ ], "cask_files": [ "/opt/homebrew/Library/Taps/private/homebrew-test/Casks/private-software.rb" ], "command_files": [ ], "remote": "ssh://git@example.com/~daeho.ro/homebrew-test.git", "custom_remote": true, "private": true } ]
프로그램 설치는 다음과 같이 진행할 수 있다.
# 다른 탭에 같은 이름의 패키지가 존재하지 않는 경우 brew install private-software # 다른 탭에 같은 이름의 패키지가 존재하는 경우 brew install private/test/private-software
탭 삭제하기
탭 삭제는 해당 탭으로부터 설치된 모든 패키지를 삭제한 이후에 가능하다.
brew untap private/test Untapping private/test... Untapped 1 cask (22 files, 6.8KB).