我正在努力编写一个脚本,以某种方式抓取https://www.rstudio.com/products/rstudio/download/
获取最新RStudio版本的数量,下载并安装它。
由于我是R程序员,我开始使用rvest
包编写R脚本。我设法刮掉了RStudio服务器的下载链接,但我仍然无法获得RStudio本身。
以下是为Ubuntu获取64位RStudio服务器下载链接的R代码。
if(!require('stringr')) install.packages('stringr', Ncpus=8, repos='http://cran.us.r-project.org')
if(!require('rvest')) install.packages('rvest', Ncpus=8, repos='http://cran.us.r-project.org')
xpath<-'//code[(((count(preceding-sibling::*) + 1) = 3) and parent::*)]'
url<-'https://www.rstudio.com/products/rstudio/download-server/'
thepage<-xml2::read_html(url)
the_links_html <- rvest::html_nodes(thepage,xpath=xpath)
the_links <- rvest::html_text(the_links_html)
the_link <- the_links[stringr::str_detect(the_links, '-amd64\\\\.deb')]
the_r_uri<-stringr::str_match(the_link, 'https://.*$')
cat(the_r_uri)
不幸的是,RStudio桌面下载页面的布局完全不同,我在同样的方法不起作用。
有人可以帮我吗?我无法相信,世界上所有数据科学家都手动升级他们的RStudio!
有一个更简单的脚本版本,它读取RStudio-server的版本。 Bash版本:
RSTUDIO_LATEST=$(wget --no-check-certificate -qO- https://s3.amazonaws.com/rstudio-server/current.ver)
或R版本:
scan('https://s3.amazonaws.com/rstudio-server/current.ver', what = character(0))
但是RStudio-desktop的版本仍然无法实现。
答案 0 :(得分:2)
您似乎可以从网址http://download1.rstudio.org/current.ver获取最新的稳定版本号,并且它是更新的(出于某种未知原因),至少在撰写此答案时。
$ curl -s http://download1.rstudio.org/current.ver
1.1.447
$ curl -s https://www.rstudio.org/links/check_for_update?version=1.0.0 | grep -oEi 'update-version=([0-9]+\.[0-9]+\.[0-9]+)' | awk -F= '{print $2}'
1.1.423
在此处找到:https://github.com/yutannihilation/ansible-playbook-r/blob/master/tasks/install-rstudio-server.yml
答案 1 :(得分:1)
这里有一个近乎解决方案:
https://hub.docker.com/r/rocker/rstudio-daily/~/dockerfile/
在这个用于最新版本的脚本中:
https://raw.githubusercontent.com/rocker-org/rstudio-daily/master/latest.R
您希望修改该脚本以更严格地接受它所接受的内容,即我希望这个脚本rstudio-server-1.1.355-amd64.deb
而不是stretch
变体。
(但你可以修改它来定位你想要的构建类型,这是每日构建,Ubuntu的RStudio Server。)
答案 2 :(得分:1)
如果您使用版本字符串查询RStudio的check_for_update
,您将获得更新版本以及从何处获取该版本的URL:
https://www.rstudio.org/links/check_for_update?version=1.0.0
更新版本= 1.0.153&安培;更新-URL = HTTPS%3A%2F%2Fwww.rstudio.com%2Fproducts%2Frstudio%2Fdownload%2F&安培;更新消息= RStudio%201.0.153%图20是%20now%20available %20%28you%27re%20using%201.0.0%29&安培;更新紧急= 0
见这里:
如果您真的想从下载页面中删除它,那么我会在第一个href
类的第一个<a>
中获得<td>
的{{1}} “下载”,然后解析“RStudio-”和“.exe”之间的三个点分隔数字。 RStudio在所有平台上发布版本,因此从Windows下载中获取它应该就足够了。
<table>
答案 3 :(得分:0)
如果有人有兴趣,这是我最终的RServer-desktop-on-Ubuntu更新脚本。它安装RStudio-desktop
64位,然后,如果Fira Console
字体可用,则从http://imgur.com/a/xo3tg为RStudio应用补丁,因此连字开始工作。
#!/bin/bash
if dpkg -s rstudio >/dev/null 2>/dev/null; then
ver=$(apt show rstudio | grep Version)
pattern='^Version: ([0-9.]+)\s*$'
if [[ $ver =~ $pattern ]]; then
ourversion=${BASH_REMATCH[1]}
netversion=$(Rscript -e 'cat(stringr::str_match(scan("https://www.rstudio.org/links/check_for_update?version=1.0.0", what = character(0), quiet=TRUE), "^[^=]+=([^\\&]+)\\&.*")[[2]])')
if [[ $ourversion != $netversion ]]; then
RSTUDIO_URI=$(Rscript /tmp/get_rstudio_uri.R)
fi
tee /tmp/get_rstudio_uri.R <<EOF
if(!require('rvest')) install.packages('rvest', repos='http://cran.us.r-project.org')
xpath='.downloads:nth-child(2) tr:nth-child(5) a'
url = "https://www.rstudio.com/products/rstudio/download/"
thepage<-xml2::read_html(url)
cat(html_node(thepage, xpath) %>% html_attr("href"))
EOF
RSTUDIO_URI=$(Rscript /tmp/get_rstudio_uri.R)
wget -c --output-document /tmp/rstudio.deb $RSTUDIO_URI
sudo dpkg -i /tmp/rstudio.deb
rm /tmp/rstudio.deb
rm /tmp/get_rstudio_uri.R
if fc-list |grep -q FiraCode; then
if !grep -q "text-rendering:" /usr/lib/rstudio/www/index.htm; then
sudo sed -i '/<head>/a<style>*{text-rendering: optimizeLegibility;}<\/style>' /usr/lib/rstudio/www/index.htm
fi
fi
fi
fi