Nix는 거짓말이다 — 그래픽 드라이버 앞에서 FHS를 다시 도입한 이야기
요약
기사 전체 정리
Nix의 핵심 철학은 FHS(Filesystem Hierarchy Standard)를 버리는 거임.
/usr/lib이나/lib64같은 관행적 경로 대신 Nix store의 해시 경로를 써서 재현성을 보장하겠다는 건데... 사실 이게 완벽하진 않다는 이야기임문제의 핵심은 그래픽 드라이버임.
libGL.so(유저 스페이스 라이브러리)는 반드시 호스트 OS의 커널 모듈 및 실제 GPU와 매칭되어야 함. 그런데 대부분의 derivation은 어떤 하드웨어에서 돌아갈지 예측할 수 없으니libGL.so를 번들링하지 않음"NixOS에서는 커널이랑 드라이버를 알잖아?"라고 할 수 있는데, 모든 derivation에 올바른
libGL.so를 포함시키면 유저마다 대규모 리빌드가 발생하고, NixOS 캐시가 사실상 무용지물이 됨그래서 NixOS와 Home Manager가 택한 해결책이 의도적인 불순물(impurity) —
/run/opengl-driver/lib이라는 글로벌 경로를 만들어서 derivation이 거기서libGL.so를 찾도록 한 거임. 이거... 사실상 FHS를 다시 도입한 거 아닌가? ㅋㅋ
참고
> 이 문제는 2015년부터 열린 이슈(#9415)로, Nix를 다른 리눅스 배포판에서 쓰는 유저에게는 아직도 해결 안 된 상태임. 그래픽이 필요한 Nix 앱을 설치하면 Nix가 막으려 했던 바로 그 에러를 만나게 됨
우회 방법은 있음: nixGL(런타임에
$LD_LIBRARY_PATH로 라이브러리 주입), 수동으로$LD_LIBRARY_PATH설정,/run/opengl-driver직접 만들어서 심링크 걸기 등결론: "FHS를 쓰지 말라, 정말 필요할 때를 제외하고는." Nix의 순수성(purity)은 아름답지만, 현실 세계의 하드웨어 앞에서는 타협이 불가피하다는 거임. 이상과 현실의 괴리를 잘 보여주는 사례
댓글
댓글
댓글을 불러오는 중...