여러 패키지 관리 시스템에 관한 모범 사례


14

일부 프로그래밍 언어는 자체 패키지 관리 시스템과 함께 제공됩니다. 예를 들어 R의 경우 내장 install.packages명령이 CRAN 저장소에서 설치되어 종속성을 처리합니다.

이와 동시에 OS에는 apt데비안 기반 Linux 배포판 명령 과 같은 자체 패키지 관리 시스템이 제공됩니다.

시스템의 모든 것이 호환되도록하기 위해 배포판의 패키지 관리자를 사용하는 것이 더 좋다고 결정했습니다 ( /programming//a/31293955/1878788 참조 ).

그러나이 방법으로는 사용할 수없는 것들이 필요한 날이 곧 찾아 왔습니다. 예를 들어, 배포판에 포함되지 않은 생물 정보학 프로그램에는 특정 버전의 R이 필요합니다.이 프로그램은 생물 정보학을위한 R 패키지를 제공하여 패키지가 서로 호환 가능합니다 ( https://www.bioconductor.org/install/#why-biocLite 참조 ).

그래서 R에 OS 패키징 관리 시스템을 사용하지 않기로 결정 biocLite했으며, 생물 전도체 프로젝트에서 제공 하는 명령을 통해 모든 것을 설치 했습니다.

이 접근 방식은 일관성 있고 건강하며 쉽게 재구성 가능한 생물 정보학 생태계를 유지하기 위해 일부 사람들이 콘다 패키지 관리 시스템을 사용하기로 결정한 때까지 한동안 순조롭게 진행되었습니다. "bioconda"라고하는이 프로젝트는 R 패키지뿐만 아니라 모든 종류의 언어로 된 버전을 쉽게 전환 할 수있는 기능을 제공합니다 ( https://bioconda.github.io/ 참조 ).

그런 다음이 접근법을 대신 사용하기로 결정했으며 bioconda / conda가 제공하지 않은 R 패키지가 필요할 때까지 원활하게 실행되었습니다. 매우 쉬운 일이지만 conda 패키지를 만들려는 시도가 실패한 다음 bioconductor 방식으로 패키지를 설치하려고 시도했지만 다시 실패했습니다. 어떻게 든 잘못된 R 설치가 패키지 작성 메커니즘에 의해 사용되었다는 인상을 받았습니다. 그래서 (아직도 아주 어린) 콘다 설치를 지우고 바이오 컨덕터 생태계로 돌아 가기로 결정했습니다.

한 접근 방식에서 다른 접근 방식으로 얼마나 오래 뛰어야하는지 궁금합니다. 이러한 다중, 간섭 및 겹치는 수준의 패키지 관리를 처리하는 방법에 대한 일반적인 모범 사례가 있습니까?

편집 (14/09/2017) : 내가 고려한 또 다른 옵션은 Guix 또는 Nix 와 같은 대체 OS 레벨 패키지 관리자를 사용하는 것 입니다.


1
Fedora Project에는 R 프로그램 패키징에 대한 지침이 있습니다 . Fedora, RHEL 및 CentOS의 R RPM 패키지는 일반적으로 다음과 같습니다.
Michael Hampton

답변:


13

R (REnv에 대해 들었습니다)에 사용할 수있는 것이 확실하지 않지만 Python의 경우 모든 사용자가 자신의 Python 환경을 담당하는 실용적인 접근 방식을 결정했습니다 pyenv(Perl perlbrew과 Ruby도 마찬가지입니다 RVM). 이렇게하면 사용자가 내 도움없이 모든 프로젝트에 대해 최적의 환경을 만들 수 있습니다 ( pyenvPython 설치를 관리 한 다음 pip해당 특정 Python 설치에 로컬로 모듈을 설치 하는 데 사용할 수 있음).

시스템 패키지는 시스템 요구에 대해서만 사용됩니다.


0

일반적으로 시스템 패키지 관리자를 사용하는 것이 좋습니다. 그러나 현대 언어를 사용하는 경우 빠르고 안정적인 배포판에는 새로운 패키지와 버전이 포함되지 않습니다. 인기없는 패키지는 리포지토리에 포함 할 수 없습니다.

따라서이 경우 가장 좋은 방법은 언어의 내장 함수를 사용하는 것입니다. R 제작자가 패키지 관리를위한 공식 도구를 만들면 훌륭하지만 비공식 도구를 사용하는 것은 다소 위험합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.