TL;DR
- OpenBSD 개발자들은 Rust 기반
uutilsCoreutils 포트가 기존 유틸리티와 중복되고 동작 호환성을 해칠 수 있다는 이유로 반대함. - David Uhden Collado가 제출한 포트는 GNU Coreutils의 Rust 재구현을
gcat,gls,gcp등 명령어로 제공하는 구성임. - Theo de Raadt는 BSD 라이선스 기반 유틸리티가 이미 있는 상황에서 미묘하게 다른 동작의 도구를 추가하는 것은 의미가 없다고 비판함.
- 단일 다중 호출 바이너리 구조와 Rust 툴체인 부트스트랩 문제도 OpenBSD의 패키징 방식 및 지원 아키텍처와 충돌하는 요소임.
- 포트는 제안 단계에 머물러 있으며, OpenBSD 사용자는 당분간 기존 GNU Coreutils 포트를 이용하게 됨.
제안된 OpenBSD 포트
- David Uhden Collado는 2026년 9월 20일 Rust 기반 GNU Coreutils 재구현인
uutils를 OpenBSD 포트 트리에 추가하는sysutils/uutils포트를 제출함. - 이 포트는 대체 구현을 제공하며,
gcat,gls,gcp,gdate,gsort,gstat,gtail,gtimeout등의 이름을libexec/uutils아래의 다중 호출 바이너리(multicall binary)에 대한 심볼릭 링크로 설치하는 방식임. - 각 패키지는 해당 GNU 구현과 충돌하며 GNU 포트를 보조
@pkgpath로 지정함. - 제안은 OpenBSD 메일링 리스트에서 격렬한 논쟁을 불러왔으며, Theo de Raadt를 비롯한 고위 개발자들은 불필요한 중복과 기본 시스템 유틸리티와의 동작 비호환성을 이유로 반대함.
“의도가 있어 보인다”는 비판
- 오랜 OpenBSD 개발자인 Stuart Henderson은 포트 방식에 회의적인 입장을 밝히고, Ubuntu 26.10이
uutilsCoreutils를 채택했다는 점은 인정하면서도 다른 재구현은 아직 개발 중인 작업으로 평가함. - OpenBSD 창립자 Theo de Raadt는 제안에 “의도가 있어 보인다”고 비판하며 라이선스 논리를 반박함.
“OpenBSD에도 허용적 라이선스의 유틸리티가 이미 있는데, 사용자가 미묘하게 다른 허용적 라이선스 유틸리티를 두 번째로 원한다는 주장은 말이 되지 않음.”
- OpenBSD 기본 시스템에는 BSD 라이선스 기반의 표준 유틸리티 구현이 이미 포함돼 있으며, 프로젝트는 수십 년 동안 도구 간 예측 가능하고 일관된 동작을 유지해 왔음.
- de Raadt는 출력 결과를 파이프로 연결하는 사용자 작업 흐름에 미묘하게 다른 동작의 유틸리티가 들어오면 실제 문제가 생길 수 있다고 봄.
호환성 문제
- de Raadt는 OpenBSD의
ls가 OpenBSD의sed,cut등과 함께 파이프라인에서 사용될 때, 표준화되지 않은 출력 특성에 의존하는 처리가 생길 수 있다고 지적함. - 이 상황에서
ls를 다른 구현으로 바꾸면 표준화되지 않은 도구 동작 간 충돌로 사용자가 예상치 못한 결과를 마주할 수 있다는 주장임. - OpenBSD의 기본 시스템은 함께 개발되고 테스트되는 통합된 구성임. 개별 유틸리티를 재구현으로 교체하면 특정 출력 형식, 종료 코드, 예외 동작에 의존하는 스크립트와 파이프라인이 깨질 위험이 있음.
논쟁의 불씨가 된 Rust
- Collado가
uutils의 메타패키지 구조와 Rust 구현을 언급하며 개별 유틸리티를 별도 바이너리로 설치할 수 있는지 확신하지 못한다고 하자, de Raadt는 이를 Rust와 연결해 비판함. - BSD 커뮤니티에서는 Rust 도입 문제가 반복적으로 논의돼 왔음. FreeBSD는 기본 시스템에 Rust를 사용하는 방안을 실험했지만, OpenBSD는 Rust의 빠른 릴리스 주기, 방대한 의존성, 지원 아키텍처에서 Rust 툴체인을 부트스트랩하기 어려운 점을 이유로 도입하지 않았음.
- OpenBSD는 자체 C 컴파일러 툴체인을 유지하며, 기본 설치에 새 언어 런타임을 추가하는 일을 역사적으로 피해 왔음.
성숙도와 유지보수 부담
- Henderson이 언급한 Ubuntu 채택에는 단서가 있음. 기사 작성 시점에 Ubuntu 26.10은 아직 출시되지 않았으며, Canonical이 최신 소프트웨어를 채택하는 방식이 OpenBSD의 보수적인 릴리스 주기와 같지는 않음.
- OpenBSD 7.6은 2024년 10월에 출시됐고 7.7은 2025년 4월 출시가 예상되는 일정임. 프로젝트는 새로움보다 안정성을 우선함.
uutils는 BusyBox에서 가져온 설계처럼 하나의 실행 파일이argv[0]에 따라 서로 다른 유틸리티를 실행하는 다중 호출 바이너리로 배포됨. 이 구조는 개별 바이너리를 기대하는 OpenBSD 패키징 관례와 맞지 않음.- 메타패키지 방식에서는 유틸리티 하나를 업데이트할 때 전체 도구 모음을 다시 빌드하고 배포해야 함.
더 넓은 맥락
uutilsCoreutils 프로젝트는 상당한 진전을 이뤘으며, 2024년 기준 GNU Coreutils 테스트 모음의 대다수를 통과하고 일부 사용 사례에서 여러 리눅스 배포판에 채택됨.- MIT 라이선스는 GPL 라이선스 코드 사용을 피하려는 프로젝트에 매력적인 선택지임.
- OpenBSD의 반대는 도구를 바라보는 근본적인 철학 차이를 드러냄. 리눅스 배포판은 유틸리티를 서로 바꿔 쓸 수 있는 구성요소로 취급하는 경우가 많지만, OpenBSD는 이를 선별되고 통합된 시스템의 일부로 취급함.
- OpenBSD의
ls(1)은 단순한ls구현 하나가 아니라find(1),tar(1), 셸 스크립트가 오랫동안 함께 테스트돼 온 시스템 구성요소임.
향후 전망
- 포트는 아직 제안 단계임. 프로젝트 창립자와 고위 포트 개발자들이 반대하는 상황에서, 상당한 변경 없이는 채택 가능성이 낮아 보임.
- 검토될 수 있는 변경에는 다중 호출 바이너리를 개별 유틸리티로 분리하는 일, OpenBSD 기본 도구와의 동작 동등성 입증, Rust 부트스트랩 문제 해결이 포함됨.
- 당분간 GNU 호환 유틸리티를 원하는 OpenBSD 사용자는 실제 GNU 구현을 패키징한 기존
sysutils/coreutils포트를 계속 이용하게 됨. - 출처: OpenBSD 포트 메일링 리스트, 2026년 9월 20일; mail-archive.com. 주제: OpenBSD, Rust, Coreutils, 라이선스,
uutils.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요