Homebrew의 네이밍 규칙이 가끔은 헷갈리게 느껴지기도 하지만, 전반적으로 정말 유용한 도구임을 계속 느끼고 있음
또한 자신의 tap을 만들어서 툴을 배포하는 과정이 이렇게 간단할 줄 몰랐음
언어별 패키지 매니저(예: uv)와 비교하면 어떤 점이 더 나은지 궁금함
특히 특정 생태계 안에 없는 사람에게 더 쉬운지, 즉 범용성 관점에서 우위가 있는지 알고 싶음
고마움 전달하며, 패키지 레지스트리를 사용하는 다른 툴들은 대체로 계정 생성, 2단계 인증, 서명 과정 등이 필요함
Homebrew는 GitHub 약관(ToS)이 신뢰의 근거 역할을 하기에 전체적으로 훨씬 간소화됨
Homebrew 팀에서 이 방식 덕분에 많은 복잡함을 줄일 수 있음
Python 패키지 기준으로 이야기하면, uv같이 모든 걸 한 번에 패키징하려는 시도는 현실적으로 힘들음
그래서 일반적으로는 venv 환경에 고정된 의존성만 설치하는 방식을 사용함
구체적인 예시로는 이 포뮬라 참고 가능
uv에 관해서는, 공식 툴(brew update-python-resources, homebrew-pypi-poet)로 비공개 패키지를 지원해 보려 했지만 제대로 되지 않아서
직접 uvbrew를 만들어 리소스 생성을 돕도록 함
Homebrew에서 Python 포뮬라 작성 참고용 공식 문서 있음
Go 개발자라면 Goreleaser 툴을 추천함
개인 tap 내에서 바이너리 배포를 아주 쉽게 해줌(공식 core에는 금지된 방식임)
최근에 알게 된 사실인데 Goreleaser가 이제 Go뿐 아니라 Rust, TypeScript, Python, Zig 등 여러 언어를 지원함
각 언어별 프로젝트 관리에서 활용도 높음
개인적으로는, tap 쪽에서 직접 업데이트를 관리하는 게 좀 더 이상적이라고 생각함
일반적으로 upstream에서 업데이트하는 방식과 비슷함 이 워크플로우를 참고하면 소유하지 않은 포뮬라/캐스크도 쉽게 업데이트할 수 있음 brew bump 명령어로 모두 스캔하고, PR 만들어 올리면서 brew test-bot으로 테스트까지 자동화 가능함
실제 PR 예시는 여기 에 참고할 수 있음
좋은 아이디어라고 생각함
평소엔 GitHub Actions 사용 시간이 아쉽다는 생각 때문에 엄두가 나지 않았는데, 오픈소스에서는 무료이니 이런 활용도 괜찮겠음
나만의 Homebrew tap 버전 자동 bump 워크플로우로 homebrew-bump-revision을 직접 작성해 봄
여러 개인 프로젝트에서 이걸 잘 쓰고 있음
멋져 보인다는 생각 전함
나는 귀찮아서 시도하지 않았지만 좋은 툴임
Ruby Rogues 팟캐스트에서 Homebrew로 CLI 배포할 때의 각종 팁을 다룬 에피소드가 있었음 관련 에피소드 링크에서 더 많은 내용 들어볼 수 있음
Python 툴 패키징에 대해 흥미로운 점 발견함
일부 Python 패키지는 빌드 과정에서 의존성 루프가 발생해 Homebrew와 호환되지 않는 경우가 있음
pip는 바이너리 릴리스를 다운로드하므로 문제가 없지만, Homebrew는 모든 의존성까지 직접 빌드하므로 이 과정이 훨씬 오래 걸림
그래서 중간 크기 Python 프로젝트도 "bottle" 빌드에 한 시간이 넘게 걸릴 수 있음
나는 시스템 관리를 위해 nix를 사용하기 시작한 이후로 단 한 번도 후회하지 않았음
유일하게 아쉬운 점은 멀티플레이어 게임 때문에 windows에 의존해야 하는 부분 하나뿐임
Hacker News 의견
Homebrew의 네이밍 규칙이 가끔은 헷갈리게 느껴지기도 하지만, 전반적으로 정말 유용한 도구임을 계속 느끼고 있음
또한 자신의 tap을 만들어서 툴을 배포하는 과정이 이렇게 간단할 줄 몰랐음
언어별 패키지 매니저(예: uv)와 비교하면 어떤 점이 더 나은지 궁금함
특히 특정 생태계 안에 없는 사람에게 더 쉬운지, 즉 범용성 관점에서 우위가 있는지 알고 싶음
고마움 전달하며, 패키지 레지스트리를 사용하는 다른 툴들은 대체로 계정 생성, 2단계 인증, 서명 과정 등이 필요함
Homebrew는 GitHub 약관(ToS)이 신뢰의 근거 역할을 하기에 전체적으로 훨씬 간소화됨
Homebrew 팀에서 이 방식 덕분에 많은 복잡함을 줄일 수 있음
Python 패키지 기준으로 이야기하면, uv같이 모든 걸 한 번에 패키징하려는 시도는 현실적으로 힘들음
그래서 일반적으로는 venv 환경에 고정된 의존성만 설치하는 방식을 사용함
구체적인 예시로는 이 포뮬라 참고 가능
uv에 관해서는, 공식 툴(brew update-python-resources, homebrew-pypi-poet)로 비공개 패키지를 지원해 보려 했지만 제대로 되지 않아서
직접 uvbrew를 만들어 리소스 생성을 돕도록 함
Homebrew에서 Python 포뮬라 작성 참고용 공식 문서 있음
Go 개발자라면 Goreleaser 툴을 추천함
개인 tap 내에서 바이너리 배포를 아주 쉽게 해줌(공식 core에는 금지된 방식임)
각 언어별 프로젝트 관리에서 활용도 높음
개인적으로는, tap 쪽에서 직접 업데이트를 관리하는 게 좀 더 이상적이라고 생각함
일반적으로 upstream에서 업데이트하는 방식과 비슷함
이 워크플로우를 참고하면 소유하지 않은 포뮬라/캐스크도 쉽게 업데이트할 수 있음
brew bump명령어로 모두 스캔하고, PR 만들어 올리면서brew test-bot으로 테스트까지 자동화 가능함실제 PR 예시는 여기 에 참고할 수 있음
평소엔 GitHub Actions 사용 시간이 아쉽다는 생각 때문에 엄두가 나지 않았는데, 오픈소스에서는 무료이니 이런 활용도 괜찮겠음
나만의 Homebrew tap 버전 자동 bump 워크플로우로 homebrew-bump-revision을 직접 작성해 봄
여러 개인 프로젝트에서 이걸 잘 쓰고 있음
나는 귀찮아서 시도하지 않았지만 좋은 툴임
Ruby Rogues 팟캐스트에서 Homebrew로 CLI 배포할 때의 각종 팁을 다룬 에피소드가 있었음
관련 에피소드 링크에서 더 많은 내용 들어볼 수 있음
Python 툴 패키징에 대해 흥미로운 점 발견함
일부 Python 패키지는 빌드 과정에서 의존성 루프가 발생해 Homebrew와 호환되지 않는 경우가 있음
pip는 바이너리 릴리스를 다운로드하므로 문제가 없지만, Homebrew는 모든 의존성까지 직접 빌드하므로 이 과정이 훨씬 오래 걸림
그래서 중간 크기 Python 프로젝트도 "bottle" 빌드에 한 시간이 넘게 걸릴 수 있음
나는 시스템 관리를 위해 nix를 사용하기 시작한 이후로 단 한 번도 후회하지 않았음
유일하게 아쉬운 점은 멀티플레이어 게임 때문에 windows에 의존해야 하는 부분 하나뿐임