피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Rust 기반 100% Static Binary로 구현한 Cross-Distro 패키지 매니저 Chiral
I built my own package manager in Rust while building a Linux distro from scratch
AI 요약
Context
LFS(Linux From Scratch) 기반 시스템의 수동 컴파일 및 설치 방식에 따른 운영 비효율성 발생. 특정 배포판에 종속되지 않으면서 의존성 해결이 가능한 범용 패키지 관리 도구의 부재를 해결하기 위한 시도.
Technical Solution
- Rust와 musl을 사용한 100% Static Binary 구현을 통한 외부 의존성 완전 제거 및 모든 Linux 배포판 호환성 확보
- GitHub, Debian Stable, Arch Linux 순의 3-way Fallback Chain 설계로 패키지 가용성 극대화
- BFS(Breadth-First Search)를 이용한 의존성 트리 탐색 및 Kahn's Algorithm 기반의 Topological Sort 적용으로 최적의 설치 순서 결정
- pacman, dpkg, pkg-config 등 기존 패키지 매니저 및 파일시스템 직접 스캔을 결합한 하이브리드 의존성 검증 로직 구축
- GitHub Actions를 활용한 매주 일요일 자동 패키지 업데이트 및 리패키징 워크플로우 자동화
- 파일 경로 기반의 DB 기록 방식을 통한 완전한 Clean Remove 기능 구현
실천 포인트
- 외부 라이브러리 의존성을 완전히 제거해야 하는 런타임 환경일 때 Rust + musl 조합 검토 - 서로 다른 데이터 소스를 통합할 때 우선순위 기반의 Fallback Chain 전략 적용 - 복잡한 의존성 관계 해결을 위해 BFS 탐색 후 위상 정렬(Topological Sort) 알고리즘 활용 - 기존 시스템 도구(dpkg, pacman 등)와 공존하기 위한 비침습적 상태 확인 메커니즘 설계