web-dev-qa-db-ja.com

R CRANチェックの注:リポジトリが設定されていないため、循環依存チェックはスキップされました

R 3.1.0以降、次のRチェックを取得します。

_* checking package dependencies ... NOTE
  No repository set, so cyclic dependency check skipped
_

私はこのアドバイスを試しました: https://Twitter.com/phylorich/status/431911660698083328

立ち入り禁止。 options(repos="http://cran.rstudio.com/")行をパッケージルートディレクトリの.Rprofileに配置しました。それでもメモを取得します。

また、 R拡張機能の記述 のセクション1.3.1は次のように述べています。

_Some Windows users may need to set environment variable R_WIN_NO_JUNCTIONS 
to a non-empty value. The test of cyclic declarations33in DESCRIPTION 
files needs repositories (including CRAN) set: do this in ~/.Rprofile.
_

これはおそらく_set environment variable R_WIN_NO_JUNCTIONS_の結果ですか?もしそうなら、どうすればこれを行うことができますか?メモまたは提案された修正のその他の考えられる原因はありますか?

37
Tyler Rinker

R拡張機能の記述から

DESCRIPTIONファイルでの循環宣言のテストには、リポジトリ(CRANを含む)セットが必要です。これは、〜/ .Rprofileで実行します。

options(repos = c(CRAN="http://cran.r-project.org"))

推奨

ユーザーは、自分の.Rprofileが自宅にあるかどうか、および上記のオプションが含まれているかどうかを再確認する必要があります。

# in R session (any platform)
# where is my profile?
file.path(Sys.glob("~"),".Rprofile")
# is it there?
file.exists(file.path(Sys.glob("~"),".Rprofile"))

または、追加パッケージを使用したRセッションから:

library(pathological)
r_profile()

次のコードのように、ユーザーはオプションエントリがIF条件にネストされていないかどうかを再確認する必要があります。

# this will not help for R CMD check --as-cran
if(interactive()) {
options(repos = c(CRAN="http://cran.r-project.org"))
}

任意のプラットフォームのドライラン

これは、テスト用にRパッケージの簡単な一時的なケースを準備するRスクリプトであり、ローカルでの使用で何が問題になっているのかをすばやく見つけるのに役立ちます。このアプローチは、自分の.Rprofileファイルのどこが間違っているのかを見つけるのに役立ち、通常、動作する初期状態を設定するのに役立ちます。最良の場合、チェックの実行では、新しい送信に関するメモが1つだけ表示されます。

  1. 最初にコードをコピーして貼り付け、Rセッションでソースします(--Vanillaが望ましい)
  2. 次に、スクリプトによって出力されたコマンドを実行して、テストケース--as-cranを確認します。

# for example
R --Vanilla -f makePackage.R
# here the resulting package path is as below
R --no-site-file CMD check --as-cran /tmp/pkgtest
# now see the check log

.Rprofileが存在しない場合は、.Rprofileが作成され、いずれの場合もファイルの最後に1行が配置されます。

makePackage.Rスクリプト

# makePackage.R
# makes simple package for playing with check --as-cran

# copy this content to file makePackage.R
# then source it into your R --Vanilla session

name <- "pkgtest"

#
# prepare and adjust package template
#

tempbase <- dirname(tempdir())
e <- new.env()
path <- dirname(tempdir())

# make simple package in path
e$fu <-  function(){"Hello"}
package.skeleton(name=name,force=T,path=path,environment=e)
nil <- file.remove(
    file.path(path,name,'Read-and-delete-me'),
    file.path(path,name,'man',paste0(name,'-package.Rd'))
    )

# adjust DESCRIPTION
D <- readLines(file.path(path,name,"DESCRIPTION"))
D[grepl("^Title: ",D)] <- "Title: Testing Skeleton"
D[grepl("^Author: ",D)] <- "Author: John Doe"
D[grepl("^Description: ",D)] <- "Description: Checking --as-cran check."
D[grepl("^Maintainer: ",D)] <- "Maintainer: John Doe <[email protected]>"
D[grepl("^License: ",D)] <- "License: GPL (>= 2)"
write(D,file.path(path,name,"DESCRIPTION"))

# make fu.Rd
write(
"\\name{fu}\\alias{fu}\\title{Prints}\\description{Prints}
\\usage{fu()}\\examples{fu()}",
file.path(path,name,'man','fu.Rd'))

#
# ensure that .Rprofile contains repos option 
# add fresh new line et the end of .Rprofile
# 

userRp <- file.path(Sys.glob("~"),".Rprofile")
write("options(repos = c(CRAN='http://cran.r-project.org'))",file=userRp, append=TRUE)

#
# print final message
#

msg <- sprintf("
Your test package was created in %s,
under name %s,
your user .Rprofile in %s was modified (option repos),
now check this test package from command line by command:

R --no-site-file CMD check --as-cran %s
", path, name,  userRp, file.path(path,name) 
)

# now is time to check the skeleton
message(msg)

パッケージの確認

# replace package-path by the path adviced by the sourcing the script above
R --no-site-file CMD check --as-cran package-path

ユーザープロファイルとサイトプロファイルがあります。上記のアプローチでは、パッケージスケルトンオプションに--no-site-fileオプションを使用して、サイトプロファイルをバイパスします(2番目のステップ)。

PDFエラー

PDFおよびラテックス関連のエラーが発生する可能性があります。これは、ラテックスのインストールが欠落しているか、完全ではないことが原因である可能性があります。--no-manualオプションを使用してPDFテストをスキップできます。

R --no-site-file CMD check --no-manual --as-cran /tmp/pkgtest
21
Petr Matousu

上記の答えはLinuxでのみ機能します。 Windowsでは、別の方法を使用する必要がありました。 Windows7のR3.2.0で新しいパッケージをビルドして確認しようとすると、同じエラーが発生しました。

checking package dependencies ... NOTE
No repository set, so cyclic dependency check skipped

新しいパッケージのルートディレクトリに.Rprofileファイルを作成しようとしましたが、機能しませんでした。代わりに私は行かなければなりませんでした:

C:\Program Files\R\R-3.2.0\etc

ファイルを編集します。

Rprofile.site

Rprofile.siteファイルに、提案された行を追加しました。

options(repos = c(CRAN="http://cran.r-project.org"))

Rprofile.siteファイルを編集した後、「リポジトリが設定されていないため、循環依存チェックがスキップされました」という注記が最終的に消えました。

6
jirikadlec2