Homebrew보다 최대 20배 빠른 Rust 기반 패키지 관리자 zerobrew 등장!

by DD
4개월 전
조회수 26

zerobrew는 Rust로 구현된 Homebrew 대안으로, 설치 속도 향상을 목표로 함

Content-addressable store를 활용하여 재설치 시 속도를 대폭 개선

Homebrew의 CDN을 활용하여 기존 명령어 호환성을 유지하며 최대 20배 빠른 속도를 보임

Homebrew의 복잡한 의존성 문제와 이식의 어려움에 대한 커뮤니티의 다양한 의견이 존재함

zerobrew의 핵심 기술: Content-addressable store

zerobrew는 Content-addressable store를 사용하여 패키지를 SHA256 해시 값으로 저장한다. 이 방식은 패키지 재설치 시 디스크 I/O를 최소화하여 속도를 향상시킨다. 특히, `/opt/zerobrew/store/{sha256}/` 경로에 패키지를 저장하고, APFS clonefile을 활용하여 Copy-on-Write(COW) 방식으로 디스크 공간 효율성을 높인다. 이러한 아키텍처는 Homebrew 대비 압도적인 설치 속도를 제공하는 핵심 요소로 작용한다.

성능 비교 및 벤치마크 분석

zerobrew는 Homebrew 대비 최대 20배 빠른 속도를 보이며, 특히 cold install에서 2배, warm install에서 7.6배의 성능 향상을 보인다. 벤치마크 결과는 zerobrew가 libsodium, sqlite, tesseract 등 다양한 패키지 설치에서 괄목할 만한 속도 개선을 보여준다. 벤치마크는 HTML 및 JSON 형식으로 제공되어, 성능 데이터를 시각적으로 분석하고, 다른 시스템과의 비교를 용이하게 한다.

Homebrew 생태계와의 호환성

zerobrew는 Homebrew의 CDN을 활용하여 기존 Homebrew 명령어를 대부분 지원한다. 하지만, Homebrew의 복잡한 의존성 문제와 바이너리 패키지(bottles)의 비-relocatable 특성으로 인해 완벽한 호환성은 보장되지 않는다. 커뮤니티에서는 Homebrew의 내부 구조에 대한 깊이 있는 이해를 바탕으로, zerobrew의 지속적인 개선과 문제 해결을 기대하고 있다.

패키지 관리 시스템의 이식성 및 기술적 난제

Homebrew의 복잡한 내부 구조와 다양한 예외 케이스로 인해, 다른 언어나 시스템으로의 이식이 쉽지 않다는 의견이 제기되었다. 특히, Homebrew의 바이너리 패키지(bottles) 중 상당수가 특정 경로에 의존적인 문제를 가지고 있다. 하지만, uv와 같은 기술을 통해 언어에 독립적인 성능 개선이 가능하다는 점도 언급되었다. 이러한 기술적 난제는 zerobrew가 Homebrew 생태계에 완전히 통합되는 데 걸림돌이 될 수 있다.

zerobrew is a Rust-based, 5-20x faster drop-in Homebrew alternative