2016-06-10 4 views
0

내 환경을 관리하는 git 저장소를 사용하려고합니다. 특정 작업을 위해 작성된 lwrp 세트가 있습니다. 이러한 lwrps는 내부적으로 많은 커뮤니티 요리 책에 달려 있습니다.berks가 요리 책의 종속성을 해결하지 못합니다.

각 요리 책에는 내가 의존성 해결을 지정하는 Berksfile이 있습니다. 내 저장소의 루트 폴더에는 필자가 저장소에서 원하는 모든 요리 책을 나열하는 기본 Berksfile이 있습니다.

내가 원하는 것은 root에서 berks를 설치할 때 내 요리 책을 가져온 다음 각 cookbook에서 개별 berks 파일을 찾고 모든 종속성을 해결하기 위해 구문 분석해야합니다. 그러나 그것은 그런 식으로 행동하지 않습니다.

아무도 이것에 관해 어떤 생각이 있습니까? Berks의 일반적인 시나리오입니까? 또는 종속성이 해결되지 않도록 무언가를 놓치고 있습니까?

은 더 많은 정보를 제공합니다 : 내 요리 책이 berksfile

source 'https://supermarket.chef.io' 
cookbook 'apache_spark', '~> 1.2.12' 

을 가지고 있으며, 아파치 불꽃이가 언급 한 질문의 중복

cookbook 'monit', github: 'phlipper/chef-monit', tag: '1.5.2' 
+0

[Berkshelf와의 재귀 적 git 요리 책 의존 문제 해결] (0120)을 (를) 보려면 로그인을하십시오. – StephenKing

+0

적어도 그것이 제대로 동작한다고 가정합니다. Git repo를 가리키는 재귀 적 종속성이없는 요리 책을 위해 ... – StephenKing

+0

그래, 나는 그 종류의 중복 질문을 추측한다. 그리고 우리는 아직 해결책을 찾지 못했습니다. "Git repo를 가리키는 재귀 적 의존성"을 믿습니다. –

답변

1

에 내부 의존성을 가지고 있지만 그처럼하지 매우 상세한 답변을 가지고 있습니다. 여기에 더 자세히 설명하겠습니다.

다른 답변에서 설명한 것처럼 Berksfile 지시문은 "비유 전적"입니다. 요리 책의 metadata.rb의 종속성은 심볼 종속성이며 이름과 버전 제약 조건은 어디에서 가져올 지에 대한 정보가 없습니다. 요리 책과 함께 작동하는 각 도구는 심볼릭 의존성을 처리하는 방법에 대해 다른 이해를합니다. 예를 들어 berks install을 실행하면 슈퍼마켓이나 GitHub에서 종속성을 가져올 수 있지만 chef-client가 처리 할 때 Chef 서버에서 모든 것을 가져옵니다. 심볼릭 의존성과 이러한 의존성을 어디에서 가져올지를 구분하는 것은 많은 도구가 공존 할 수있게 해줍니다. Berksfile은 기호 의존성에서 정보를 보강하거나 대체하는 것으로부터 특정 요리 책을 어디서 다운로드해야하는지에 대한 추가 데이터를 제공하지만 이러한 추가 지시문은 요리 책 메타 데이터의 일부가 아니기 때문에 반복적으로 수행 할 수 없습니다.

큰 문제는 슈퍼마켓이 평면 네임 스페이스이므로 monit이라는 요리 책이 하나만있을 수 있다는 것입니다. 이것은 많은 사람들이 슈퍼마켓에 물건을 게시하지 않고 git 소스 지시어를 통해 의존하게합니다. 이것은 depends "monit"이 더 이상 명확하지 않다는 것을 의미합니다. 이것은 실제로 게시되지 않은 요리 책의 버그로 간주되어야하지만, 사람들을 올바르게 풀어 내기 위해 요리 책의 이름을 바꾸는 것을 꺼리는 것을 이해합니다.

일반적인 수정 사항은 업스트림에서 새로운 Berksfile에 일부 내용을 복사하거나 개인 슈퍼마켓 인스턴스 (또는 이에 상응하는 요리사 서버 조직)에서 원하는 요리 만 업로드 할 수있는 격리 된 요리 책 유니버스를 만드는 것입니다. 이렇게하면 depends "monit"이 다시 명확 해집니다.

+0

예. 지금 필요한 모든 요리 책의 목록을 가지고있는 상류의 berksfile을 다루고 있습니다. 지정된 지점이나 태그를 사용하여 git 위치를 가리키고 있습니다. . –

+0

그렇게하지 않는 것이 좋습니다. 요리사 서버의 berkshelf/universe 끝점 (12.6 정도부터 사용 가능)을 사용하거나 자체 슈퍼마켓을 설정하십시오. – StephenKing

관련 문제