모든 패키지가 이미 설치되어 있다

6 hours ago 1

omnibin은 nixpkgs가 제공해 온 바이너리를 $PATH에서 바로 사용할 수 있게 하는 FUSE 파일시스템으로, 별도 설치나 빌드 없이 파일을 실제로 읽을 때 필요한 데이터를 가져옴 2013~2026년의 바이너리 881,933개를 포함하며, 기본 이름은 최신 패키지로 연결되고 python3@3.6.2처럼 버전을 지정하면 과거 버전도 실행할 수 있음 Hydra의 .ls 메타데이터와 nixpkgs-multiverse를 결합해 실행 파일의 위치를 찾고, 필요한 NAR 아카이브를 캐시에서 지연 다운로드해 압축을 해제함 전체 파일 트리를 순회하는 대신 SQLite 인덱스와 CLI로 실행 파일을 검색하도록 설계했으며, 디렉터리 목록에는 버전별 항목을 제외한 기본 이름만 표시함 대가는 첫 접근 지연으로, Python 3.6.2 실행 예제에서 최초 실행은 약 2.7초, 필요한 저장소 경로가 준비된 두 번째 실행은 0.035초가 걸림 설치할 패키지를 고르지 않는 환경 omnibin은 Nix가 패키지를 충돌 없이 나란히 설치할 수 있다는 특성을 활용해, 개별 패키지를 선택하고 설치하는 절차를 없애려는 프로젝트임 configuration.nix에 패키지를 추가하거나 nix-shell, nix-env -iA를 실행하는 대신 모든 바이너리를 필요할 때 사용할 수 있게 함 개별 패키지 설치에 대한 문제의식은 DHH의 RailsConf 2026 기조연설에서 일부 영감을 받음 Nixpkgs가 2013~2026년에 빌드한 바이너리를 필요할 때 제공하며, 파일을 실제로 읽기 전까지 해당 파일의 디스크 사용량은 0바이트임 /omnibin/bin의 목록에는 기본 이름 51,468개가 나타남 버전별 항목까지 포함한 전체 트리에는 바이너리 881,933개가 있음 실행 예제에서 python3 --version은 Python 3.14.6을, python3@3.6.2 --version은 Python 3.6.2를 반환함 Docker와 NixOS에서도 사용 Nix 환경에만 한정되지 않으며, Docker/OCI용 이미지 fmzakari/omnibin도 제공함 예제는 fmzakari/omnibin:latest를 기반 이미지로 사용해 Python 3.6.2, jq 1.8.1, GCC 10.2.0을 실행함 컨테이너 실행 명령에는 --device /dev/fuse --cap-add SYS_ADMIN 옵션이 들어감 처음부터 모든 실행 파일을 사용할 수 있는 컨테...

Read Entire Article