R-Blogger블로그·해설한국어2023-12-18
Nix를 이용한 재현 가능한 데이터 과학, 8부 — nixpkgs, 자유 오픈 소스 소프트웨어의 마법에 관한 이야기 및 자선의 부름
부품 8: Nix와 nixpkgs에 대한 이해 이 포스트는 Nix에 관한 블로그 시리즈의 8번째 파트입니다. 다른 파트들도 확인해 보세요. TLDR: 무료 오픈 소스 소프트웨어는 막대한 긍정적 외부효과를 가진 가장 중요한 공공재 중 하나입니다. 자금 지원이 필요하다면 계속 읽어 주세요. nixpkgs란? nixpkgs는 Github 저장소에 수천 개의 Nix 표현식이 담겨 있는 곳입니다. 패키지를 설치할 때 이 표현식들이 평가되고, 해당 패키지가 설치됩니다. 설치 방식은 다양합니다. 소스를 빌드하거나, 운영 체제에 맞는 사전 컴파일된 바이너리를 다운로드해 설치하는 경우가 있습니다. 예시: Quarto 설치 표현식 (fetchFromGitHub { owner = "quarto-dev"; repo = "quarto-cli"; rev = "1.4.0"; sha256 = "..."; }) 이 예시는 Quarto의 공식 Github 저장소에서 사전 컴파일된 패키지를 다운로드하고 설치합니다. 설치 과정은 Quarto가 의존성을 찾을 수 있도록 보장하고, R과 Python 패키지도 함께 설치합니다. Nix와 nixpkgs가 중요한 이유 비록 Nix를 직접 사용하지 않더라도 Nix와 nixpkgs 프로젝트는 큰 혜택을 줍니다. 왜냐하면 Nix 패키지는 단순히 Github에 호스팅되는 Nix 표현식일 뿐이기 때문입니다. 따라서 기여는 PR을 열기만 하면 되며, 예를 들어 Quarto 1.4의 즉각적인 배포를 준비하기 위해 만든 초안 PR이 있습니다. 이 PR을 열면서 Quarto에 버그를 발견하고, 다음 버전이 출시되기 전에 수정할 수 있었습니다. 소프트웨어가 출시되면 운영 체제별 패키지가 downstream으로 빌드됩니다. Quarto의 경우 Windows, macOS, 여러 Linux 배포판에 대한 사전 컴파일 패키지를 자체적으로 배포합니다. 하지만 다른 운영 체제에는 제공하지 않으므로, 해당 운영 체제의 패키지 관리자(예: Conda, Nix 등)에서 직접 패키징해야 합니다. Quarto의 프리릴리즈를 Nix용으로 패키징하려다 보니, upstream 코드에 회귀 버그가 발견되었습니다. 문제 추적기에 이슈를 열고 몇 시간 안에 버그가 식별·수정되었습니다. 결과적으로 모든 사용자에게 향상된 버전이 제공되었습니다. 복잡한 패키징 사례: RStudio IDE RStudio IDE는 복잡한 소프트웨어로 많은 의존성을 가지고 있으며, Nix에서는 Windows와 Linux에서만 설치가 가능합니다. macOS 사용자는 RStudio를 설치해도 Nix에 설치된 R 및 R 패키지를 찾지 못합니다. 이는 Nix와 잘 동작하도록 패치를 거쳐야 하기 때문입니다. macOS용 RStudio를 Nix에 패키징하려면 전문 지식과 특정 하드웨어가 필요합니다. 이를 위해 Numtide라는 회사가 패키징 서비스를 제공하고 있습니다. 그들은 원하는 소프트웨어를 알려주면 표현식을 작성하고 PR을 열어 줍니다. 비용이 발생하므로 Gofundme를 통해 기부를 모금하고 있습니다. 목표 금액: 4,500€ (작업비용, Gofundme 수수료 및 이자 위험 포함) 목표 미달 시, 금액은 R Foundation에 기부됩니다 (연말이 아닌 2024년 1월 말까지 연장 가능) 무료 오픈 소스 소프트웨어를 더 좋게 만들고 싶다면 이 Gofundme에 기부해 주십시오. Nix를 사용하지 않더라도, upstream 및 downstream 모두에게 이익이 되는 작업이 진행되고 있습니다. 기부금은 목표 미달 시에도 R Foundation으로 전달됩니다. 마무리 인사 읽어 주셔서 감사합니다. 새해 복 많이 받으세요. 이 포스트가 도움이 되었다면 Mastodon이나 Twitter를 팔로우하고, PayPal로 에스프레소 한 잔을 사 주시거나, 전자책을 구매해 주십시오. 또한 YouTube에서 영상을 시청하실 수 있습니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2023-12-18