문서 내용 :
패키지에는 선택적 종속성이있을 수도 있습니다. 이는 패키지가 사용할 수있는 종속성이지만 필수는 아닙니다. 기본적으로 패키지와 함께 설치되지 않지만 opam install은 선택적으로 종속 된 패키지를 설치하는 동안 이미 설치된 경우이를 활용합니다. 예를 들어, lwt를 설치하기 전에 react를 설치하면 opam install lwt는 react를 사용하도록 lwt를 구성하지만 lwt를 설치하는 것만으로는 react가 설치되지 않습니다.
어떻게 든이 기능을 끌 수 있습니까? 이 react 및 lwt 예제를 사용하면 ceat을 설치했지만 나중에 lwt를 설치할 때 lwt가 react로 구성되는 것을 원하지 않습니다.
opam은 패키지 프로그램이 패키지 구성에 대한 모든 권한을 사용자에게 노출 할 수있는 충분한 옵션을 제공하므로 기술적으로 가능합니다. 실제로는 거의 사용되지 않습니다.
패키지 관리자는 opam의 전역 및 스위치 구성을 사용하여 사용자가 원하는 패키지의 선택적 부분을 결정할 수 있습니다. 또는 선택적 종속성과 패키지 사이에 추가 브리지 패키지를 도입하여 하드 연결을 끊을 수 있습니다. 예를 들어 존재하는 lwt
경우 재구성하는 대신 react
의사 패키지 conf-lwt-enbale-react
가 설치된 경우에만 재구성 할 수 있습니다 . 턴은 react
패키지 에 따라 다릅니다 .
관심있는 패키지가 충분한 제어를 제공하지 않는 경우 몇 가지 해결 방법이 있지만 이상적으로는 패키지 관리자에게 패키지 수정 요청을 요청해야합니다 1 . 어쨌든 당신은 적어도 일시적인 패키저의 역할을 채택해야합니다.
첫 번째 옵션은 패키지 소스를 다운로드하고, opam 파일을 수정하고, 고정 버전을 고정하는 것입니다.
opam source lwt
edit <lwt-source>/opam
opam pin add lwt <lwt-source>
여기서는 소스 코드를 다운로드 한 <lwt-source>
디렉토리의 이름 opam source
입니다.
대체 솔루션은 opam-repository를 복사하고 거기에서 수정 한 다음 저장소를 opam에 추가하는 것입니다. 예 :
git clone https://github.com/ocaml/opam-repository
edit opam-repository/packages/<your-package-opam-file>
opam repo add fixed-deps ./opam-repository
선택적 종속성이 핵심 동작을 변경하지 않고 새로운 기능을 추가 할 때, 즉 변경이 순수 추가 일 때 선택적 종속성을 사용하는 것이 어느 정도 괜찮습니다. 그러나 이것은 사용자, 특히 lwt
(많은 재 컴파일과 연속적인 변경 또는 실패를 포함 할 수있는) 같은 핵심 패키지의 경우 매우 성 가실 수 있습니다 . 따라서이 기능을 사용하지 말고 코드베이스의 다른 기능 부분을 관리하는 명시 적 패키지를 사용하는 솔루션을 고수하는 것이 좋습니다.
선택적 종속성이 패키지의 핵심 동작을 변경하는 경우 (예 : 확장이 아니라 수정 인 경우) opam 선택적 종속성 메커니즘으로 표시해서는 안되며 대신 별도의 패키지로 명시 적으로 표시하거나 구성 변수를 사용합니다.
1) 가장 좋은 요청은 pull 요청이라는 것을 기억하십시오. :)).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다