使用R语言NASAaccess包时_netrc文件异常问题的排查与解决
排查NASAaccess无法识别.netrc文件的问题
1. 检查.netrc文件的权限与格式
- 权限设置:在Linux/macOS系统中,curl要求
.netrc必须设置严格的私有权限,否则会直接忽略该文件。执行以下命令修正权限:chmod 600 ~/.netrc - 格式验证:确保文件内容完全符合NASA Earthdata的要求,不能有多余空格、注释或空行,标准格式如下:
machine urs.earthdata.nasa.gov login YOUR_EARTHDATA_USERNAME password YOUR_EARTHDATA_PASSWORD
2. 确认文件命名与路径
- 仅
~/.netrc(主目录下以英文点号开头的文件)会被curl和NASAaccess识别,你创建的_netrc属于无效命名,可以直接删除或重命名为.netrc。 - 若使用Windows系统,正确的文件名应为
_netrc(下划线开头),且必须放在C:\Users\你的用户名目录下,注意区分大小写和命名规则。
3. 用curl直接测试认证有效性
跳过R环境,直接用curl命令验证.netrc是否能正常触发认证:
curl -L -n https://urs.earthdata.nasa.gov/profile
如果命令能返回你的Earthdata个人主页内容,说明文件配置有效;若仍提示认证失败,回到第一步检查权限和格式。
4. 确认R环境识别的主目录
R的主目录可能与系统默认主目录不一致,执行以下R代码查看:
path.expand("~")
若输出路径与你存放.netrc的目录不符,要么将文件移动到R识别的主目录,要么手动指定主目录路径:
Sys.setenv(HOME = "/你的实际主目录路径")
5. 手动指定.netrc路径给NASAaccess
尝试在调用NASAaccess函数前,手动设置环境变量指定.netrc位置:
Sys.setenv(NETRC = "~/.netrc")
之后再运行获取降雨数据的代码。
6. 重置认证cookie
删除主目录下的.urs_cookie文件,重新运行NASAaccess代码。旧cookie可能过期或与当前认证信息不匹配,重新生成的cookie会自动适配.netrc的配置。
内容的提问来源于stack exchange,提问作者Ratnadeep Dutta
相关产品推荐
相关产品推荐

