2017-05-24 6 views
2

로컬로 (그리고 SVN을 통해 버전 제어 된) 개인용 패키지가 저장되어 있습니다. 패키지를 설치하려면 사용자에게 패키지 디렉토리의 SVN 업데이트를 요청한 다음 디렉토리에 setwd()을 입력 한 다음 devtools::install()을 입력하십시오.가져온 패키지가 자동으로 설치되지 않음

이 패키지는 로컬에 저장되지 않은 많은 CRAN 패키지를 가져옵니다. 이러한 가져온 패키지는 설치 중에 자동 설치되지 않으므로 Dependency package foo not available이라는 오류 메시지가 생성됩니다. 사용자 수동으로 만 Dependency package bar not available를 얻기 위해, 다시 시도, install.packages('foo')을 설치해야합니다는 광고 싫증, 비록 foobarImports:

자세한 사항들이다 :

내 설명 파일과 같이 보인다 :

Package: apackage 
Type: Package 
Title: Package to Do Stuff 
Version: 1.11111 
Date: 2017-03-02 
Author: C8H10N4O2 
Maintainer: C8H10N4O2<[email protected]> 
Description: Package that does many useful things 
License: file LICENSE 
Depends: 
    R (>= 3.3.0) 
Imports: 
    bit64 (>= 0.9.5), 
    data.table (>= 1.9.6), 
    extrafont (>= 0.17), 
    foreach(>= 1.4.3), 
    ggplot2 (>= 2.0.0), 
    gbm (>= 2.1), 
    grid (>= 3.2.3), 
    gridExtra (>= 2.0.0), 
    httr (>= 1.1.0), 
    readxl (>= 0.1.1), 
    scales (>= 0.4.0), 
    xlsx (>= 0.5.7) 
LazyData: true 
RoxygenNote: 5.0.1 
Suggests: testthat (>= 0.9.1) 

그러나 check() 또는 load_all()을 호출하면 여전히 오류가 발생합니다.

Error in (function (dep_name, dep_ver = NA, dep_compare = NA) : 
    Dependency package gridExtra not available. 

그리고 나서 내 사용자는 install.packages('gridExtra')이어야하고 그/그녀는 또 다른 종속성을 사용할 수 없습니다. 오류가 발생합니다. R packages에 따르면

:

내가 시도 무엇

나는 또한 Writing R Extensions 확인하지만이 주제에 아무 것도 찾을 수 없습니다

Imports: packages listed here must be present for your package to work. In fact, any time your package is installed, those packages will, if not already present, be installed on your computer (devtools::load_all() also checks that the packages are installed).

.

이 자동 설치되어야 함을 고지합니다. 자동 설치가되도록하려면 어떻게해야합니까?

문제가 완전히 재현되지는 않지만 내 레포와 연결할 수는 없으므로 추가 세부 정보를 보내 주시면 기쁘게 생각합니다.

**versions** 
R 3.4.0, platform = x86_64-w64-mingw32 
devtools 1.13.1 
+1

당신은 그것에 개인 패키지 자신의 저장소를 설정 했습니까? 저장소에도 패키지의 종속성이 있습니까? 일반적으로'install.packages ('foo')'가 CRAN에서 설치 하겠지만 여기서 다른 것을하고있는 것처럼 보입니다. 사용자가 작업을 수행하기 위해 R 작업 영역을 얼마나 정확하게 구성 했습니까? – MrFlick

+0

@MrFlick 예 내 패키지에 내 자신의 SVN 저장소를 사용하고 있습니다. 가져올 패키지가 포함되어 있지 않습니다. 나는 그 질문을 갱신 할 것이다. 관심을 가져 주셔서 감사합니다. – C8H10N4O2

답변

1

R을 사용하여 패키징을 재발 명하고 있습니다. 저장소를 만들려면 drat 수 있습니다. 이 시도는 참되고 이며 작동은입니다.

그리고이 배포 측면은 지역 패키지뿐만 아니라 사용과 설치의 두 생산는 소스를 유지하는 곳으로 완전히 직교한다. 코드 배포 메커니즘을 위해 소스 코드 저장소를 오해하지 마십시오.

로컬 GitHub Enterprise 인스턴스와 함께 drat을 로컬로 사용하면 일반적으로 drat이 널리 보급되어 있습니다.

(일반적인 면책 내가 drat를 시작한 하나의 나처럼,하지만 난 너무 기여자의 무리의 행운이 있었다.)

+0

조언을 주셔서 감사합니다. 비록 내 직접적인 질문에 실제로 대답하지는 않지만. 나는 drat에 익숙하지 않다. 종속성 문제 외에도 SVN에서 패키지 디렉토리를 업데이트하고 거기에서 건물을 짓는 것은 소규모 팀에게 효과적입니다. diff를 사용하면 커밋간에 변경된 사항을 쉽게 이해할 수 있습니다. "코드 배포 메커니즘을 위해 소스 코드 저장소를 잘못 이해하지 않습니까?" – C8H10N4O2

+1

예, 이전에 응답 했으므로 drat의 네 가지 비 네트와 다른 질문을 여기서 볼 수 있습니다. 패키지를 사용하고 패키지 저장소를 사용하는 것은 당연한 결과입니다 .SDK의 설치는 작동에 대한 다양한 정의를 위해 "작동"하지만 열등합니다. –