我已经创建了一个包含几个r包及其所有依赖项的本地存储库-这是一个名为PACKAGES的目录,在该目录下有许多包的zip文件。
我尝试使用以下命令安装软件包:
install.packages("dplyr",repos="path_to_repos",type="source")
并不断得到错误:
cannot open compressed file path_to_repos/src/contrib/PACKAGES, probable cause "permission denied"
我可以通过一个接一个地选择文件从同一个目录安装软件包-但由于依赖性,这是不实际的。
我正在使用Windows 10,并以管理员身份运行。无法找出权限错误的原因。
有什么见解吗?
2条答案
按热度按时间pod7payv1#
如果我理解正确的话,你已经创建了一个名为“PACKAGES”的目录,这似乎是问题所在。所有的文件都应该放在“contrib”目录中。
将包文件添加到“contrib”目录后,可以使用 utils 包中的
setRepositories
函数创建存储库。我建议将以下代码添加到您的.Rprofile作为本地存储库:编辑. R配置文件后,重新启动R。
ind = 0
将指示您只需要本地存储库。addURLs =
选项中可以包含其他存储库,这些存储库在字符向量中以逗号分隔。接下来,使用以下代码创建存储库索引:
这将生成用作存储库索引的PACKAGE文件。
要查看存储库中的包,请运行以下代码并查看生成的数据框:
my_packages <- available.packages()
此时,您可以从存储库安装包,而无需引用包安装文件的整个路径。例如,要安装 dplyr 包,可以运行以下命令:
如果你想更进一步,管理一个不断变化的仓库,你可以安装并使用 miniCRAN 包。否则,每当存储库发生更改时,都需要执行
write_PACKAGES
函数。安装 miniCRAN 包后,可以执行以下代码创建 miniCRAN repo:
你只需要对每个repo执行一次上面的代码。
然后,检查以确保每个miniCRAN存储库都已创建。对于每个repo,您只需要执行一次此操作:
每当新的包文件被放入本地存储库时,您可以更新本地存储库的索引,如下所示:
最后,作为查看新包是否在索引中的可选步骤,创建可用包的数据框并搜索数据框:
这种方法对我来说效果很好,但也许其他人有意见和建议可以改进它。
ioekq8ef2#
这就是我如何在Windows 10系统上实现这一功能。感谢@Andrie和@Ted-M的上述工作!
将以下目录添加到您的文件系统(其中
C:\R42_Packages
是您自己的命名约定):C:\R42_Packages\R\bin\windows\contrib\4.2
与
C:\R42_Packages\R\src\contrib
将所有.zip Windows包放在
C:\R42_Packages\R\bin\windows\contrib\4.2
中将这一行添加到您的
.Rprofile
中-注意file:/R42_Packages
中的单个/
,而不是上面和R安装和管理手册中显示的file://R42_Packages
:...其中
localCRAN
是您要用作引用的名称。(如果你不想和.Rprofile
打交道,那么现在就在R控制台中输入这行代码,然后在每次使用R的时候输入。)如果你使用的是.Rprofile
,那么重新启动R。验证当前R会话存储库是否指向本地目录。
接下来,通过在R控制台中键入以下行来创建存储库索引:
这将在
C:\R42_Packages\R\bin\windows\contrib\4.2
目录中创建三个PACKAGES文件:PACKAGES
、PACKAGES.gz
和PACKAGES.rds
。这个过程需要一点时间才能完成,所以请等待控制台提示符出现。此时,您可以通过在R控制台中键入以下命令来验证所有操作是否正确:
最后,将单个
PACKAGES
文件复制到C:\R42_Packages\R\src\contrib
。R安装和管理手册说这可以是一个“……”可能为空的PACKAGES文件...'但我发现这需要是来自C:\R42_Packages\R\bin\windows\contrib\4.2
目录的PACKAGES文件的副本。请注意,如果您将所有三个PACKAGES文件复制到C:\R42_Packages\R\src\contrib
目录中,也不会有任何损害。最后,您需要重新构建并重新复制PACKAGES文件每次更新或添加新的.zip包文件到
C:/R42_Packages/R/bin/windows/contrib/4.2
目录。